Jump to content

Vector products: Difference between revisions

no edit summary
(Updated D entry)
No edit summary
Line 2,044:
v1 . (v2 x v3) = 6
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>
772

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.