Vector products: Difference between revisions
Content added Content deleted
(First version) |
(→{{header|Pascal}}: add example) |
||
Line 1,211: | Line 1,211: | ||
6 |
6 |
||
[-267, 204, -3]</pre> |
[-267, 204, -3]</pre> |
||
=={{header|Pascal}}== |
|||
<lang pascal>Program VectorProduct (output); |
|||
type |
|||
Tvector = record |
|||
x, y, z: double |
|||
end; |
|||
function dotProduct(a, b: Tvector): double; |
|||
begin |
|||
dotProduct := a.x*b.x + a.y*b.y + a.z*b.z; |
|||
end; |
|||
function crossProduct(a, b: Tvector): Tvector; |
|||
begin |
|||
crossProduct.x := a.y*b.z - a.z*b.y; |
|||
crossProduct.y := a.z*b.x - a.x*b.z; |
|||
crossProduct.z := a.x*b.y - a.y*b.x; |
|||
end; |
|||
function scalarTripleProduct(a, b, c: Tvector): double; |
|||
begin |
|||
scalarTripleProduct := dotProduct(a, crossProduct(b, c)); |
|||
end; |
|||
function vectorTripleProduct(a, b, c: Tvector): Tvector; |
|||
begin |
|||
vectorTripleProduct := crossProduct(a, crossProduct(b, c)); |
|||
end; |
|||
procedure printVector(a: Tvector); |
|||
begin |
|||
writeln(a.x:15:8, a.y:15:8, a.z:15:8); |
|||
end; |
|||
var |
|||
a: Tvector = (x: 3; y: 4; z: 5); |
|||
b: Tvector = (x: 4; y: 3; z: 5); |
|||
c: Tvector = (x:-5; y:-12; z:-13); |
|||
begin |
|||
write('a: '); printVector(a); |
|||
write('b: '); printVector(b); |
|||
write('c: '); printVector(c); |
|||
writeln('a . b: ', dotProduct(a,b):15:8); |
|||
write('a x b: '); printVector(crossProduct(a,b)); |
|||
writeln('a . (b x c): ', scalarTripleProduct(a,b,c):15:8); |
|||
write('a x (b x c): '); printVector(vectorTripleProduct(a,b,c)); |
|||
end.</lang> |
|||
Output: |
|||
<pre>a: 3.00000000 4.00000000 5.00000000 |
|||
b: 4.00000000 3.00000000 5.00000000 |
|||
c: -5.00000000 -12.00000000 -13.00000000 |
|||
a . b: 49.00000000 |
|||
a x b: 5.00000000 5.00000000 -7.00000000 |
|||
a . (b x c): 6.00000000 |
|||
a x (b x c): -267.00000000 204.00000000 -3.00000000 |
|||
</pre> |
|||
=={{header|Perl}}== |
=={{header|Perl}}== |