Vector products: Difference between revisions

Content added Content deleted
(Updated D entry)
No edit summary
Line 2,044: Line 2,044:
v1 . (v2 x v3) = 6
v1 . (v2 x v3) = 6
v1 x (v2 x v3) = (-267, 204, -3)</pre>
v1 x (v2 x v3) = (-267, 204, -3)</pre>

=={{header|XPL0}}==
<lang XPL0>include c:\cxpl\codes; \intrinsic 'code' declarations

func DotProd(A, B); \Return the dot product of two 3D vectors
int A, B; \A ù B
return A(0)*B(0) + A(1)*B(1) + A(2)*B(2);

proc CrossProd(A, B, C); \Calculate the cross product of two 3D vectors
int A, B, C; \C:= A x B
[C(0):= A(1)*B(2) - A(2)*B(1);
C(1):= A(2)*B(0) - A(0)*B(2);
C(2):= A(0)*B(1) - A(1)*B(0);
]; \CrossProd

func ScalarTriProd(A, B, C); \Return the scalar triple product
int A, B, C; \A ù (B x C)
int D(3);
[CrossProd(B, C, D);
return DotProd(A, D);
]; \ScalarTriProd

proc VectTriProd(A, B, C, D); \Calculate the vector triple product
int A, B, C, D; \D:= A x (B x C)
int E(3);
[CrossProd(B, C, E);
CrossProd(A, E, D);
]; \CrossProd


int A, B, C, D(3);
[A:= [3, 4, 5]; B:= [4, 3, 5]; C:= [-5, -12, -13];

IntOut(0, DotProd(A,B)); CrLf(0);

CrossProd(A, B, D);
IntOut(0, D(0)); ChOut(0, 9\tab\);
IntOut(0, D(1)); ChOut(0, 9\tab\);
IntOut(0, D(2)); CrLf(0);

IntOut(0, ScalarTriProd(A,B,C)); CrLf(0);

VectTriProd(A, B, C, D);
IntOut(0, D(0)); ChOut(0, 9\tab\);
IntOut(0, D(1)); ChOut(0, 9\tab\);
IntOut(0, D(2)); CrLf(0);
]</lang>

Output:
<pre>
49
5 5 -7
6
-267 204 -3
</pre>