# Rmagick and circles

**URL:** <https://www.ruby-forum.com/t/rmagick-and-circles/154449>\
**Category:** Ruby\
**Created:** [November 29, 2008, 8:51pm UTC](https://www.ruby-forum.com/t/rmagick-and-circles/154449 "2008-11-29T20:51:04Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![nephish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/8e7dd6/32.png) [@nephish](https://www.ruby-forum.com/u/nephish)\
**Post date:** [November 29, 2008, 8:51pm UTC](https://www.ruby-forum.com/t/rmagick-and-circles/154449/1 "2008-11-29T20:51:04Z")

</div>

Hey there all,

I am using RMagick to draw some circles.  
what i need though is a math formula to give me a pair of plot points  
for an angle.

Say a circle is 40 x 40 on a sheet of graph paper.  
this would put the center of the circle at x=20, y=20  
and it would make the radius = 20.

now, i need to be able to pass in a number like say, 20 degrees and  
return the x and y plots of this on the circle.

i know, more a math problem than ruby, but i could use any suggestions.

thanks,  
shawn

---

<div class="post-metadata">

**Author:** ![nephish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/8e7dd6/32.png) [@nephish](https://www.ruby-forum.com/u/nephish)\
**Post date:** [November 29, 2008, 9:40pm UTC](https://www.ruby-forum.com/t/rmagick-and-circles/154449/2 "2008-11-29T21:40:19Z")

</div>

Hey,

I am not sure what you want. If you only want one point it is easy:

x = x\_0 + radius \* Math.cos(angle \* 2.0 \* Math::PI / 360.0)  
y = y\_0 + radius \* Math.sin(angle \* 2.0 \* Math::PI / 360.0)

This is for the angle in degrees. Like this you can get any point on the  
circle. Now if you want to get the points of an arc you could just  
increase the angle a bit at a time and plot the points. But that would  
not be a very nice circle and would be slow.

An option would be to get a starting point with the formula above and  
then iterate with x **2 + y** 2 = r\*\*2. For example in the first part of  
the circle between 0 and 45 degrees y is growing faster than x.

You would start with an y and increase it once by one.  
( leave away the translation for easiness )

y’ \<- y + 1  
x’ \<- sqrt( r**2 - (y+1)2 ) = sqrt( r2 - y**2 -2\*y - 1)  
= sqrt( x\*\*2 - 2 \* y - 1)

Hope it gives some ideas.

Oliver

Am Sonntag, den 30.11.2008, 04:45 +0900 schrieb shawn bright:

---

<div class="post-metadata">

**Author:** ![nephish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/8e7dd6/32.png) [@nephish](https://www.ruby-forum.com/u/nephish)\
**Post date:** [November 29, 2008, 9:54pm UTC](https://www.ruby-forum.com/t/rmagick-and-circles/154449/3 "2008-11-29T21:54:22Z")

</div>

This is great, thanks Oliver.  
One question,

what is meant by x\_0 and y\_0, are those the plot points for the center  
of the graph?  
thanks.  
shawn

---

<div class="post-metadata">

**Author:** ![nephish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/8e7dd6/32.png) [@nephish](https://www.ruby-forum.com/u/nephish)\
**Post date:** [November 30, 2008, 2:14am UTC](https://www.ruby-forum.com/t/rmagick-and-circles/154449/4 "2008-11-30T02:14:49Z")

</div>

Yes, x\_0 and y\_0 are the coordinates of the center of the circle.

I am glad if I could help you. 🙂

Oliver

Am Sonntag, den 30.11.2008, 08:35 +0900 schrieb shawn bright:

---

<div class="post-metadata">

**Author:** ![nephish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/8e7dd6/32.png) [@nephish](https://www.ruby-forum.com/u/nephish)\
**Post date:** [November 30, 2008, 12:41am UTC](https://www.ruby-forum.com/t/rmagick-and-circles/154449/5 "2008-11-30T00:41:47Z")

</div>

Thanks much  
tinkered around with my numbers in your formula, and it worked.

shawn
