Geradenscharen
> restart; with(geom3d): with(plots):
Definition zweier Geradenscharen ga und hb:
> g:= a -> line(gline, [point(A,[0,0,4]), [a, 4-a, -4]]):
h:= b -> line(hline, [point(B,[4,6,-3]), [-4, b, 2]]):
Gesucht: die Schnittpunkte von ga und hb mit jeweils passend gewählten Werten für a und b:
> gl1:= s*a = 4 - t*4:
gl2:= s*(4-a) = 6 + t*b:
gl3:= 4 - s*4 = -3 + t*2:
gl1; gl2; gl3;
gl3:= 4 - s*4 = -3 + t*2:
gl1; gl2; gl3;
Eliminieren der Parameter s und t:
> eliminate({gl1, gl2, gl3}, {s,t});
Auflösen der Gleichung −16 − 8a + 7ba − 16b = 0 nach b:
> b:= rhs(isolate(op(1, op(2, %)) = 0, b));
Der Schnittpunkt von ga und hb in Abhängigkeit von a:
> intersection(S, g(a), h(b)):
S[a]:= simplify(coordinates(S));
> S[1]:= eval(S[a], a = 1);
S[2]:= eval(S[a], a = 2);
Die Schnittgerade sline der oben definierten Geradenscharen:
> point(S1, S[1]):
point(S2, S[2]):
line(sline, [S1, S2]):
Equation(sline, xi);
line(sline, [S1, S2]):
Equation(sline, xi);
Zeichnen von ga und hb für bestimmte Werte von
a bzw. b;
Zeichnen der Schnittgeraden:
> i:= 0:
for a from -5 by 0.5 to 5 do
i:= i + 1:
gdraw[i]:= draw(g(a), color = red, transparency = 0.5):
od:
imax:= i:
j:= 0:
for b from -10 by 0.5 to 5 do
j:= j + 1:
hdraw[j]:= draw (h(b), color = blue, transparency = 0.5):
od:
jmax:= j:
ldraw:= draw(sline, color = magenta, thickness = 2):
display ([seq (gdraw[i], i = 1..imax),
seq (hdraw[j], j = 1..jmax),
ldraw],
view = [-8..12, -8..12, -8..8],
axes = boxed,
tickmarks = [4, 4, 4],
size = [450, 450],
font = [COURIER, 10],
labelfont = [COURIER, 12],
labels = ["x1", "x2", "x3"],
orientation = [48, 64, 35]);
i:= i + 1:
gdraw[i]:= draw(g(a), color = red, transparency = 0.5):
od:
imax:= i:
j:= 0:
for b from -10 by 0.5 to 5 do
j:= j + 1:
hdraw[j]:= draw (h(b), color = blue, transparency = 0.5):
od:
jmax:= j:
ldraw:= draw(sline, color = magenta, thickness = 2):
display ([seq (gdraw[i], i = 1..imax),
seq (hdraw[j], j = 1..jmax),
ldraw],
view = [-8..12, -8..12, -8..8],
axes = boxed,
tickmarks = [4, 4, 4],
size = [450, 450],
font = [COURIER, 10],
labelfont = [COURIER, 12],
labels = ["x1", "x2", "x3"],
orientation = [48, 64, 35]);