Mathematical Calculations with 3-Dimensional Vectors
09-25-2016, 06:56 AM
Post: #1
 Eddie W. Shore Senior Member Posts: 1,418 Joined: Dec 2013
Mathematical Calculations with 3-Dimensional Vectors
Note: all examples are calculated in Degrees mode.

Rectangular to Spherical Coordinates

The program RECT2SPH converts the coordinates [x, y, z] to [r, θ, ϕ].

Syntax: RECT2SPH([x, y, z])

HP Prime RECT2SPH: Rectangular to Spherical Coordinates
Code:
EXPORT RECT2SPH(v) BEGIN // [x,y,z]→ LOCAL r,θ,φ,x,y,z; x:=v(1); y:=v(2); z:=v(3); r:=√(x^2+y^2+z^2); θ:=ATAN(y/x); φ:=ACOS(z/r); RETURN [r,θ,φ]; END;

Example: RECT2SPH([2, 3, 4]) return [5.38516480713, 56.309932474, 42.0311137741]

Spherical to Rectangular Coordinates

The program SPH2RECT converts the coordinates [r, θ, φ] to [x, y, y].

Syntax: SPH2RECT([r, θ, φ])

HP Prime SPH2RECT: Spherical Coordinates to Rectangular Coordinates
Code:
EXPORT SPH2RECT(v) BEGIN // [r,θ,φ]→ LOCAL r,θ,φ,x,y,z; r:=v(1); θ:=v(2); φ:=v(3); x:=r*COS(θ)*SIN(φ); y:=r*SIN(θ)*SIN(φ); z:=r*COS(φ); RETURN [x,y,z]; END;

Example: SPH2RECT([6, 30, 48]) returns [3.86149378532, 2.22943447643, 4.01478363815]

Linear Distance

The program LIN3DIST is the linear distance between two three-dimensional points. The coordinates are Cartesian. Enter each coordinate point separately.

Syntax: LIN3DIST(x1, x2, y1, y2, z1, z2)

HP Prime LIN3DIST: Linear distance between coordinates
Code:
EXPORT LIN3DIST(x1,x2,y1,y2,z1,z2) BEGIN // linear distance LOCAL d; d:=√((x2-x1)^2+(y2-y1)^2 +(z2-z1)^2); RETURN d; END;

Example: Find the linear distance between points (2,3,-7) and (-1,8,2).
Input: LIN3DIST(2, -1, 3, 8, -7, 2) returns 10.7238052948.

Spherical Distance (Arc Length)

The program SPH3DIST is the spherical distance between two three-dimensional points that share the same radius. This is similar to the great circle distance.

Syntax: SPH3DIST(r, φ1, φ2 ,λ1 ,λ2)

HP Prime SPH3DIST: Spherical distance between coordinates
Code:
EXPORT SPH3DIST(r,φ1,φ2,λ1,λ2) BEGIN // Spherical Distance LOCAL d; d:=ACOS(SIN(φ1)*SIN(φ2)+ COS(φ1)*COS(φ2)*COS(λ1-λ2)); d:=d*r; RETURN d; END;

Example: Find the spherical distance between points φ1 = 40°, φ2 = 64°, λ1 = -18°, λ2 = 33°. The radius is 14.

SPH3DIST(14, 40, 64, -18, 33) returns 519.226883434

Angle between Two Three-Dimensional Coordinates

The program VANGLE calculates the angle between two points. Both points are entered in vector form.

Syntax: VANGLE([x1,y1,z1], [x2,y2,z2])

HP Prime VANGLE: Angle between two coordinates
Code:
EXPORT VANGLE(v1,v2) BEGIN // Angle between 2 vectors LOCAL θ; θ:=ACOS(DOT(v1,v2)/ (ABS(v1)*ABS(v2))); RETURN θ; END;

Example: Find the angle between [5,4,5] and [2,0,-3].
VANGLE([5,4,5],[2,0,-3]) returns 99.8283573577°

Rotating a Cartesian Coordinate Vector

The program ROT3X, ROT3Y, and ROT3Z rotates the three-dimensional vector [x, y, z] with respect to the x-axis (ax), respect to the y-axis (ay), and respect to the z-axis (az), respectively.

Syntax: ROT3X(v, ax), ROT3Y(v, ay), ROT3Z(v, az)

Caution: the result will be a matrix instead of a vector

HP Prime: ROT3X
Code:
EXPORT ROT3X(v,ax) BEGIN // [x,y,z],θx v:=TRN(v); v:=[[1,0,0],[0,COS(ax),−SIN(ax)], [0,SIN(ax),COS(ax)]]*v; RETURN TRN(v); END;

HP Prime: ROT3Y
Code:
EXPORT ROT3Y(v,ay) BEGIN // [x,y,z],θy v:=TRN(v); v:=[[COS(ay),0,SIN(ay)], [0,1,0],[−SIN(ay),0,COS(ay)]]*v; RETURN TRN(v); END;

HP Prime: ROT3Z
Code:
EXPORT ROT3Z(v,az) BEGIN // [x,y,z],θz v:=TRN(v); v:=[[COS(az),−SIN(az),0], [SIN(az),COS(az),0],[0,0,1]]*v; RETURN TRN(v); END;

Example: Rotate the vector [2, 3, 4] 30°, with respect to the x-axis, y-axis, and z-axis, separately and respectfully.

ROT3X([2, 3, 4], 30) returns [[ 2, 0.598076211352, 4.96410161514 ]]

ROT3Y([2, 3, 4], 30) returns [[ 3.73205080757, 3, 2.46410161514 ]]

ROT3Z([2, 3, 4], 30) returns [[ 0.232050807568, 3.59807621135, 4]]
 « Next Oldest | Next Newest »

User(s) browsing this thread: 1 Guest(s)