Antwort von
nach 5 Tagen
hilfreich
Re: Koordinatentransformation
Hallo
hi
[Problem]
2x2 Matrix -> Polar
so auf die schnelle hab ich es nur in 3D...
ich hoffe du kannst PASCAL:
(*---------------------------------------------------------------------------*)
(* SN: Sinus-Funktion (Gradmass) *)
(*---------------------------------------------------------------------------*)
FUNCTION SN(X:REAL):REAL;
CONST RAD=0.0174532925199433;
BEGIN
SN:=SIN(X*RAD)
END;
(*---------------------------------------------------------------------------*)
(* CS: Cosinus-Funktion (Gradmass) *)
(*---------------------------------------------------------------------------*)
FUNCTION CS(X:REAL):REAL;
CONST RAD=0.0174532925199433;
BEGIN
CS:=COS(X*RAD)
END;
(*---------------------------------------------------------------------------*)
(* TN: Tangens-Funktion (Gradmass) *)
(*---------------------------------------------------------------------------*)
FUNCTION TN(X:REAL):REAL;
CONST RAD=0.0174532925199433;
VAR XX: REAL;
BEGIN
XX:=X*RAD; TN:=SIN(XX)/COS(XX);
END;
(*---------------------------------------------------------------------------*)
(* ATN2: Arcus-Tangens von y/x fuer zwei Argumente *)
(* (quadrantenrichtig mit -180 Grad <= ATN2 <= +180 Grad) *)
(*---------------------------------------------------------------------------*)
FUNCTION ATN2(Y,X:REAL):REAL;
CONST RAD=0.0174532925199433;
VAR AX,AY,PHI: REAL;
BEGIN
IF (X=0.0) AND (Y=0.0)
THEN ATN2:=0.0
ELSE
BEGIN
AX:=ABS(X); AY:=ABS(Y);
IF (AX>AY)
THEN PHI:=ARCTAN(AY/AX)/RAD
ELSE PHI:=90.0-ARCTAN(AX/AY)/RAD;
IF (X<0.0) THEN PHI:=180.0-PHI;
IF (Y<0.0) THEN PHI:=-PHI;
ATN2:=PHI;
END;
END;
(*---------------------------------------------------------------------------*)
(* POLAR: Umwandlung von kartesischen Koordinaten (x,y,z) *)
(* in Polarkoordinaten (r,theta,phi) *)
(* ( theta = [-90 Grad,+90 Grad]; phi = [0 Grad,+360 Grad]) *)
(*---------------------------------------------------------------------------*)
PROCEDURE POLAR(X,Y,Z:REAL;VAR R,THETA,PHI:REAL);
VAR RHO: REAL;
BEGIN
RHO:=X*X+Y*Y; R:=SQRT(RHO+Z*Z);
PHI:=ATN2(Y,X); IF PHI<0 THEN PHI:=PHI+360.0;
RHO:=SQRT(RHO); THETA:=ATN2(Z,RHO);
END;
(*---------------------------------------------------------------------------*)
(* CART: Umwandlung von Polarkoordinaten (r,theta,phi) *)
(* in kartesische Koordinaten (x,y,z) *)
(* ( theta = [-90 Grad,+90 Grad]; phi = [-360 Grad,+360 Grad] ) *)
(*---------------------------------------------------------------------------*)
PROCEDURE CART(R,THETA,PHI: REAL; VAR X,Y,Z: REAL);
VAR RCST : REAL;
BEGIN
RCST := R*CS(THETA);
X := RCST*CS(PHI); Y := RCST*SN(PHI); Z := R*SN(THETA)
END;
Mit bestem Dank im voraus
ich hoffe es hilft dir...
Andreas