whats new ¦  programming tips ¦  indy articles ¦  intraweb articles ¦  informations ¦  links ¦  interviews
misc ¦  tutorials ¦  Add&Win Game

 42 Visitors Online

 ...Rotate a 3D Point around another 3D Point? Autor: Arash Partow Homepage: http://www.partow.net [ Print tip ]

 Tip Rating (12):

const

PIDiv180 = 0.017453292519943295769236907684886;

procedure Rotate(Rx, Ry, Rz: Double; x, y, z, ox, oy, oz: Double;
var Nx, Ny, Nz: Double);
begin

Rotate(Rx, Ry, Rz, x - ox, y - oy, z - oz, Nx, Ny, Nz);
Nx := Nx + ox;
Ny := Ny + oy;
Nz := Nz + oz;
end;
(* End Of *)

procedure Rotate(Rx, Ry, Rz: Double; x, y, z: Double; var Nx, Ny, Nz: Double);
var

TempX: Double;
TempY: Double;
TempZ: Double;
SinX: Double;
SinY: Double;
SinZ: Double;
CosX: Double;
CosY: Double;
CosZ: Double;
begin

Tempy := y * CosY - z * SinY;
Tempz := y * SinY + z * CosY;
Tempx := x * CosX - Tempz * SinX;

Nz := x * SinX + Tempz * CosX;
Nx := Tempx * CosZ - TempY * SinZ;
Ny := Tempx * SinZ + TempY * CosZ;
end;
(* End Of *)

Rate this tip:

 poor very good