Computer Science Canada Rotating line |
Author: | nemesest [ Thu Apr 27, 2006 8:50 pm ] |
Post subject: | Rotating line |
Hi, I'm a grade 11 computers student and I'd like to know: how would I make a line, outside a circle and touching it, go around the circle. / O O-- etc.. So the line would rotate around the circle. It's for making a radar program that I plan to use for history presentation. Thanks |
Author: | Clayton [ Thu Apr 27, 2006 8:53 pm ] |
Post subject: | |
you could use trig to find the angle you want it to move to next, or you could use the equation of a circle somehow to find all points on your circle (x^2+y^2=r^2) and draw lines around your central point to the point on that circle |
Author: | Delos [ Thu Apr 27, 2006 9:08 pm ] | ||
Post subject: | |||
I would suggest sticking with the Trig concepts. Incorporating loci is just a little too complicated for as simple a task as this. Base your programme on triangles and the Pythagoras theorem. At any given point, you'll be drawing the hypotenuse of a triangle whose length will be the radius of the circle. Cycle through all 360 degrees of that circle, using Trig to determine the Opp and Adj lengths; which will allow you to calculate coordinates. You might need these commands:
If the version of Turing you're using does not have Math.Distance (), it's a sinch to make. It's just Pythagoras theorem, nothing more. |
Author: | do_pete [ Thu Apr 27, 2006 9:14 pm ] |
Post subject: | |
You could also draw one picture and use Pic.Rotate to rotate it. |
Author: | Clayton [ Thu Apr 27, 2006 9:23 pm ] | ||
Post subject: | |||
actually Delos, the Math.Distance isnt pythagorean theorem(idk how to spell that lol), its more the distance of a line, if you dont have it you can make it like this
simple enuf right? |
Author: | do_pete [ Thu Apr 27, 2006 9:33 pm ] |
Post subject: | |
![]() a^2+b^2=c^2 (a^2+b^2)^0.5=(c^2)^0.5 (a^2+b^2)^0.5=c |
Author: | Clayton [ Thu Apr 27, 2006 9:41 pm ] |
Post subject: | |
ah but the distance formula is the change in x and y, not just a point you have (which is what you are trying to say in your above eqn) so you have to use the distance formula (or at least it is more handy, and works in exactly the same way as Math.Distance |
Author: | zylum [ Thu Apr 27, 2006 9:46 pm ] | ||
Post subject: | |||
just need sin and cos |
Author: | do_pete [ Thu Apr 27, 2006 10:04 pm ] |
Post subject: | |
SuperFreak82 wrote: ah but the distance formula is the change in x and y, not just a point you have (which is what you are trying to say in your above eqn) so you have to use the distance formula (or at least it is more handy, and works in exactly the same way as Math.Distance Um... the distance formula is Pythagorean's Therom, it just uses x1-x2 as a y1-y2 as b. And it is not the change in x and y but the difference between the two values. |
Author: | codemage [ Fri Apr 28, 2006 8:38 am ] |
Post subject: | |
How about just doing a Draw.FillArc? If you make it only a few degrees wide, it'll look like a line, and then all of the trig is done for you, and it's automatically centred on your circle's coordinates. (You just put in the angles, and it draws). |
Author: | Albrecd [ Fri Apr 28, 2006 9:16 am ] |
Post subject: | |
Or you could draw the line first from (maxx div 2, maxy div 2) to points that gradually move around the perimeter of the screen (preferably roughly a circle beyond the edges of the screen. [The circle formula as stated by SuperFreak82 would be useful for this]). You could then just draw the circle overtop in the centre of the screen. |
Author: | zylum [ Fri Apr 28, 2006 10:59 am ] |
Post subject: | |
or you could do it properly and do it my way. its not like there's anything hard about it. ![]() |
Author: | Cervantes [ Fri Apr 28, 2006 2:44 pm ] |
Post subject: | Re: Rotating line |
nemesest wrote: how would I make a line, outside a circle and touching it, go around the circle.
... It's for making a radar program that I plan to use for history presentation. I'm confused. The first line suggests to me that you want to draw a line tangent to the circle, and move that line around the circle, keeping it always tangent. But the second line (the word "radar" in particular) suggests to me that you want to draw the line from the centre of the circle to the edge of the circle, and move that point on the edge of the circle around the circle. |
Author: | NikG [ Fri Apr 28, 2006 3:34 pm ] |
Post subject: | |
codemage wrote: How about just doing a Draw.FillArc?
If you make it only a few degrees wide, it'll look like a line, and then all of the trig is done for you, and it's automatically centred on your circle's coordinates. (You just put in the angles, and it draws). I'm not sure how much difference there is between Draw.FillArc and drawfillarc but don't do it that method! It's very unrealiable (sometimes, it fills all angles except the ones you want for no reason). |
Author: | jamonathin [ Fri Apr 28, 2006 7:22 pm ] | ||
Post subject: | |||
NikG wrote: don't do it that method! It's very unrealiable (sometimes, it fills all angles except the ones you want for no reason).
I'd like you to show me what you mean. Oh wait here's an example
Very unreliable . . . ![]() |
Author: | NikG [ Mon May 01, 2006 12:37 am ] | ||
Post subject: | |||
Try this and tell me if it's not buggy (cuz it definitely was for me!):
|
Author: | jamonathin [ Mon May 01, 2006 6:09 am ] |
Post subject: | |
Yes it's "buggy" but that is because you are trying to draw that arc on such a fine degree. The reason it does this is because the rounding methods - which are required, round the angles with the provided information in order to draw them. Since the number is so fine, at about 1/3 and 2/3 of every 90 degrees the numbers swap - resulting in a reverse arc. Technically it is and isn't a bug, but simply change -1 to -2 and vice versa. - I did like the max/min method for adding to angle. |
Author: | NikG [ Tue May 02, 2006 10:15 pm ] |
Post subject: | |
jamonathin wrote: Yes it's "buggy" but that is because you are trying to draw that arc on such a fine degree. The reason it does this is because the rounding methods - which are required, round the angles with the provided information in order to draw them. Since the number is so fine, at about 1/3 and 2/3 of every 90 degrees the numbers swap - resulting in a reverse arc.
Ok, so you're right about changing it from "angle-1" to "angle-2"... the "bugginess" seems to disappear, so maybe drawfillarc isn't as unrealiable as I said, EXCEPT if you DO need a very fine degree. In that case, trig is a better (the best?) choice.Technically it is and isn't a bug, but simply change -1 to -2 and vice versa. |