Computing heading
Andreas Raab
andreas.raab at gmx.de
Sun Jan 4 22:41:11 UTC 2004
[Second reply in this thread  the first one was rejected by the list
moderator with "No reason given". It included a project (117k) which
illustrated the point below].
> EToys doesn't have to use coordinates.... You can tell a morph to point
> to another morph.
>
> Hmm, actually, you can't do that exactly. But you can tell a morph to
> *move toward* another morph. So try moving it to right place, telling
> it to move toward the other morph, and then moving it back to the right
> place again.
Here's another way of doing it: Just make up a morph which represents the
angle (e.g., set its x/y to the difference of the guys being tracked) and
use its "theta" to find out what the angle is.
The only problem you have is that theta, contrary to (I think all) other
angular measures goes ccw instead of cw and therefore the x/y needs to be
computed as
Angle's x < Destination's x  Source's x.
Angle's y < Source's y  Destination's y.
(swapping the ycomputation above does the trick for turning theta to cw but
understanding why and proving that this works is an interesting little
exercise ;)
Once you've done the above Angle's theta will hand you the required
heading90 since (unfortunately) theta is measured against the positive
xaxis but heading is measured against the positive yaxis, so one would
need to do something like
Arrow's heading < Angle's theta + 90.
And finally, you can put Angle into a playfield with "originatcenter" and
normalize the display using the "distance" property so you can actually see
it moving. The project I had originally attached demonstrated this quite
nicely.
Cheers,
 Andreas
More information about the Squeakdev
mailing list
