Vector: Difference between revisions

1,993 bytes added ,  1 year ago
Added XPL0 example.
(Vector en Yabasic)
(Added XPL0 example.)
Line 3,145:
11 * v2 = (22, 33)
v1 / 2 = (2.5, 3.5)
</pre>
 
=={{header|XPL0}}==
<lang XPL0>func real VAdd(A, B, C); \Add two 2D vectors
real A, B, C; \A:= B + C
[A(0):= B(0) + C(0); \VAdd(A, A, C) => A:= A + C
A(1):= B(1) + C(1);
return A;
];
 
func real VSub(A, B, C); \Subtract two 2D vectors
real A, B, C; \A:= B - C
[A(0):= B(0) - C(0); \VSub(A, A, C) => A:= A - C
A(1):= B(1) - C(1);
return A;
];
 
func real VMul(A, B, S); \Multiply 2D vector by a scalar
real A, B, S; \A:= B * S
[A(0):= B(0) * S; \VMul(A, A, S) => A:= A * S
A(1):= B(1) * S;
return A;
];
 
func real VDiv(A, B, S); \Divide 2D vector by a scalar
real A, B, S; \A:= B / S
[A(0):= B(0) / S; \VDiv(A, A, S) => A:= A / S
A(1):= B(1) / S;
return A;
];
 
proc VOut(Dev, A); \Output a 2D vector number to specified device
int Dev; real A; \e.g: Format(1,1); (-1.5, 0.3)
[ChOut(Dev, ^();
RlOut(Dev, A(0));
Text(Dev, ", ");
RlOut(Dev, A(1));
ChOut(Dev, ^));
];
 
proc Polar2Rect(@X, @Y, Ang, Dist); \Return rectangular coordinates
real X, Y, Ang, Dist;
[X(0):= Dist*Cos(Ang);
Y(0):= Dist*Sin(Ang);
]; \Polar2Rect
 
real V0(2), V1, V2, V3(2);
def Pi = 3.14159265358979323846;
[Format(1, 1);
V1:= [5., 7.];
V2:= [2., 3.];
Polar2Rect(@V3(0), @V3(1), Pi/4., sqrt(2.));
Text(0, "V1 = "); VOut(0, V1); CrLf(0);
Text(0, "V2 = "); VOut(0, V2); CrLf(0);
Text(0, "V3 = "); VOut(0, V3); CrLf(0);
CrLf(0);
Text(0, "V1 + V2 = "); VOut(0, VAdd(V0, V1, V2 )); CrLf(0);
Text(0, "V1 - V2 = "); VOut(0, VSub(V0, V1, V2 )); CrLf(0);
Text(0, "V1 * 11 = "); VOut(0, VMul(V0, V1, 11.)); CrLf(0);
Text(0, "11 * V2 = "); VOut(0, VMul(V0, V2, 11.)); CrLf(0);
Text(0, "V1 / 2 = "); VOut(0, VDiv(V0, V1, 2. )); CrLf(0);
]</lang>
 
{{out}}
<pre>
V1 = (5.0, 7.0)
V2 = (2.0, 3.0)
V3 = (1.0, 1.0)
 
V1 + V2 = (7.0, 10.0)
V1 - V2 = (3.0, 4.0)
V1 * 11 = (55.0, 77.0)
11 * V2 = (22.0, 33.0)
V1 / 2 = (2.5, 3.5)
</pre>
 
772

edits