Vector products: Difference between revisions
Content added Content deleted
m (→{{header|Haskell}}: removed some empty lines) |
(Add Seed7 example) |
||
Line 1,279: | Line 1,279: | ||
A . B x C = 6 |
A . B x C = 6 |
||
A x B x C = #(-267 204 -3)</pre> |
A x B x C = #(-267 204 -3)</pre> |
||
=={{header|Seed7}}== |
|||
The program below uses Seed7s capaibility to define operator symbols. |
|||
The operators ''dot'' and ''X'' are defined with with priority 6 and assiciativity left-to-right. |
|||
<lang seed7>$ include "seed7_05.s7i"; |
|||
include "float.s7i"; |
|||
const type: vec3 is new struct |
|||
var float: x is 0.0; |
|||
var float: y is 0.0; |
|||
var float: z is 0.0; |
|||
end struct; |
|||
const func vec3: vec3 (in float: x, in float: y, in float: z) is func |
|||
result |
|||
var vec3: result is vec3.value; |
|||
begin |
|||
result.x := x; |
|||
result.y := y; |
|||
result.z := z; |
|||
end func; |
|||
$ syntax expr: .(). dot .() is -> 6; |
|||
const func float: (in vec3: a) dot (in vec3: b) is |
|||
return a.x*b.x + a.y*b.y + a.z*b.z; |
|||
$ syntax expr: .(). X .() is -> 6; |
|||
const func vec3: (in vec3: a) X (in vec3: b) is |
|||
return vec3(a.y*b.z - a.z*b.y, |
|||
a.z*b.x - a.x*b.z, |
|||
a.x*b.y - a.y*b.x); |
|||
const func string: str (in vec3: v) is |
|||
return "(" <& v.x <& ", " <& v.y <& ", " <& v.z <& ")"; |
|||
enable_output(vec3); |
|||
const func float: scalarTriple (in vec3: a, in vec3: b, in vec3: c) is |
|||
return a dot (b X c); |
|||
const func vec3: vectorTriple (in vec3: a, in vec3: b, in vec3: c) is |
|||
return a X (b X c); |
|||
const proc: main is func |
|||
local |
|||
const vec3: a is vec3(3.0, 4.0, 5.0); |
|||
const vec3: b is vec3(4.0, 3.0, 5.0); |
|||
const vec3: c is vec3(-5.0, -12.0, -13.0); |
|||
begin |
|||
writeln("a = " <& a <& ", b = " <& b <& ", c = " <& c); |
|||
writeln("a . b = " <& a dot b); |
|||
writeln("a x b = " <& a X b); |
|||
writeln("a .(b x c) = " <& scalarTriple(a, b, c)); |
|||
writeln("a x(b x c) = " <& vectorTriple(a, b, c)); |
|||
end func;</lang> |
|||
=={{header|Tcl}}== |
=={{header|Tcl}}== |