[Gambas-user] more trigonometry fun (not)
wally
wally at ...2037...
Tue May 24 06:34:25 CEST 2011
On Tuesday, May 24, 2011 05:44:14 Kevin Fishburne wrote:
> I was already helped graciously in figuring out how to translate a point
> in a plane along its local axes at a given orientation, but now need a
> bit of the inverse of the equation.
>
> I need to know the (x, y) offset of a point at a given orientation and
> velocity. For example if a point is moving at an angle of 45 degrees (or
> radians, take your pick), what would its x and y coordinate be
> increased/decreased by? The variables I can think of would be:
>
> x1 (point's current x coordinate)
> y1 (point's current y coordinate)
> a (point's angle/orientation in degrees/radians)
> v (point's velocity)
> x2 (x coordinate offset of point's new position)
> y2 (y coordinate offset of point's new position)
>
> The calculation would take x1, y1 a and v as inputs and produce x2 and
> y2 as offsets (x1 + x2, y1 + y2 = point's new position).
>
> There really should be a list of basic things like this for graphics
> programmers. I've searched for years and found practically nothing.
> Weird, considering this has probably been done thousands of times since
> the days of DOS. :/
>
> In case anyone's wondering why I need this, the equation will allow
> particles and projectiles to follow logical paths. Currently they're
> bound to local coordinates and ignore player orientation. Digging,
> shooting arrows, throwing objects, etc. can't work without it.
Hello Kevin,
the problem seems pretty easy to solve, so I'm not sue i understand
the question correctly.
A good idea would be to use polar coordinates for this:
P( r, a) where r = radial distance to (0,0) offset and a the angle a .
r = sqrt( x^2 + y^2)
r(p2) = r(p1) + vt ,
new radius point 2 = 1st radius + distance to move (velocity * time)
a does not change
in cartesian coordinates:
x2 = x1 + cos(a) * v * t
y2 = y1 + sin(a) * v * t
if you need more complex paths, using matrices is a good way.
but always time is needed to calculate. You did not mention time t
so i assume i did not understand the question.
wally
More information about the User
mailing list