Re: [Gambas-user] more trigonometry fun (not)
Brought to you by:
gambas
From: Bruce B. <bb...@pa...> - 2011-05-24 04:16:33
|
On 24/05/11 13: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. > > 1) Need to include i being the time increment in the same units as velocity 2) Basic physics says point will move d units in i time increments according to distance=velocity * time . So point will have a deltaXY of v*i. Basic trig converts this to deltaX and deltaY using the old "Sign On Here 'Coz Alf Has Tan OverAlls" deltaX = deltaXY * sin(a) deltaY=deltaXY *cos(a) Bobs, yer uncle, return deltaX and deltaY! |