Hey, how would i go about rotating a point around the centre point (0,0). Say i have a point (3,3), and i want to rotate it by 45 deg, how would i go about it. I'm having somewhat of a mental block :S
Rotating a point around (0,0)
Blitz3D Forums/Blitz3D Programming/Rotating a point around (0,0) In 2D?
x1 = x0 * cos(a) - y0 * sin(a)
y1 = y0 * cos(a) + x0 * sin(a)
In 3D using Blitz3D you can simply:
(a) Create a pivot
(b) Create a second pivot child to the first with coords 3,3,0
(c) Rotate the first pivot
(d) Read the coordinates on the second pivot
x1 = x0 * cos(a) - y0 * sin(a)
y1 = y0 * cos(a) + x0 * sin(a)
In 3D using Blitz3D you can simply:
(a) Create a pivot
(b) Create a second pivot child to the first with coords 3,3,0
(c) Rotate the first pivot
(d) Read the coordinates on the second pivot
Ross - This should work.
x# = 3 : y# = 3 : angle# = 45
new_x# = x * cos(angle) - y * sin(angle)
new_y# = y * cos(angle) + x * sin(angle)
x# = 3 : y# = 3 : angle# = 45
new_x# = x * cos(angle) - y * sin(angle)
new_y# = y * cos(angle) + x * sin(angle)
Something like this:
lets assume P is a Point and also a Pivot Entity
If P is only a Coordinate, then use the Coordinate Values instead of those EntityX() etc. Commands.
BTW: maybe I confused Sin and Cos - in that case just swap them.
lets assume P is a Point and also a Pivot Entity
rot_centerx#=0 rot_centerz#=0 dist_x#=entityx(p)-rot_centerx# dist_z#=entityz(p)-rot_centerz# cura#=atan2(dist_x#,dist_z#) dist#=sqr((dist_x*dist_x)+(dist_z*dist_z)) newa#=(cura#+45) mod 360 positionentity p,rot_centerx+sin(newa)*dist,entityy(p),rot_centerz+cos(newa)*dist
If P is only a Coordinate, then use the Coordinate Values instead of those EntityX() etc. Commands.
BTW: maybe I confused Sin and Cos - in that case just swap them.
It's for 3d rotation of quads. Thanks for you help both of you'z :)