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> |