Let’s say I have a rectangle-shaped object. I want to move it along a path. Is it possible to position this object according to not only one point, but two points on it? For example, the point A on the object is at 125,220, in this case I want point B to be at 140,235.This way I want to set the direction of the object.
In Objective-c (and I assume in other languages too) when we say “Position of a graphical object” we think of only one point, which is usually the bottom-left corner. But positioning
an object according to only that point will just redraw the object with the lower left corner in another point, and the rest part will be determined according to the height and the width of the object, which does not do what I want.
EDIT:
As you can see (and probably it’s what you naturally expect) the object will move as a box from one point to another, because there’s only one point determining it’s position. You ask why I need a different thing. Because I have a timer and a curved path. Each time the timer ticks I need my object to be at a different location(the next position in an array of dumped points). So, instead of adding to X and Y coordinates, I explicitly tell the object to be at certain place. This way I want to achieve normal movement of my object along the curved path. When the front part of the object moves to some point, I need the rear part to move to a certain point as well.
I finally found a way to do do it. I have to rotate the object according the prior and the next points. So, assume there are points A,B,C,D,E,F,G,H on the path that the object will travel along. If the car is at point D, to calculate the rotation angle I do the following:
As you can see it’s just maths. A fine tuning can be applied to get a better, smoother rotation. Here for instance I subtract the Y of the previous position from the Y of the current position, then I do the same thing for X and then I get the minus arctangance of their ratio. But you can do
Choosing the right positions to subtract their x and y coordinates will result in the right and smooth rotation.
I think you can guess that 3.141592 is M_PI;