haben zwei Liniensegment im Raum, wie eine Oberfläche mit zwei Liniensegment als Grenze zu erstellen?Oberflächenkonstruktion mit zwei Liniensegment
Antwort
Sie können dies parametrisch tun.
nehme an Ihre zwei von beschrieben Segmente:
{s1(t)} = t {a1} + {b1} (0 <= t <= 1)
{s2(t)} = t {a2} + {b2} (0 <= t <= 1)
, wo die {} Vektorgrößen angibt, {a}, {b} Konstanten.
Dann haben Sie für jedes t zwei Punkte im Raum, eins in jedem Segment.
{r(v)} = ({s2(t)} - {s1(t)}) v + {s1(t)} (0 <= v <= 1)
Wir sind fast da:
Die gerade Linie zwischen ihnen kann beschrieben werden. Jetzt schreiben wir die Funktion, die die Oberfläche beschreibt, indem wir s1 und s2 durch ihre Werte ersetzen:
{K(v,t)} = t v ({a2} - {a1})+ v ({b2} - {b1}) + t {a1} + {b1} (0<= t,v <=1)
HTH!
bearbeiten
ein Beispiel:
a1 = {1, 1, 1};
b1 = {0, 0, 0};
a2 = {1, 1, 0};
b2 = {0, 0, 0};
Show[ParametricPlot3D[
t v a1 (a2 - a1) + v (b2 - b1) + t a1 + b1, {t, 0, 1}, {v, 0, 1},
AxesLabel -> {"x", "y", "z"}],
Graphics3D[{Thick, Red, Line[{b1, a1 + b1}]}],
Graphics3D[{Thick, Red, Line[{b2, a2 + b2}]}]]
Ein weiteres Beispiel zeigt, die eine nicht-ebene Oberfläche:
a1 = {1, 1, 1};
b1 = {0, 0, 1};
a2 = {1, 0, 0};
b2 = {0, 1, 0};
Die zwei Liniensegmente müssen koplanar sein (dh beide liegen auf der Oberfläche, die Sie rekonstruieren möchten). Ein Kreuzprodukt der beiden Liniensegmente gibt Ihnen die Normale zur Oberfläche (ein Vektor senkrecht zur Oberfläche).
Woran ich mich zu diesem Zeitpunkt nicht sicher bin, ist, was Sie unter den Liniensegmenten verstehen, die die Grenze bestimmen. Wenn die Enden der Liniensegmente die 4 Punkte einer Quad-Grenze sind und Sie diese in ein unterteiltes Patch verwandeln möchten, können Sie zwischen den Eckpunkten bilinear interpolieren, um die Koordinaten für Ihr Patch-Mesh zu erzeugen.
Die beiden Liniensegmente sind nicht koplanar – user496949
Wenn sie nicht koplanar sind, wird die von ihnen gebildete Fläche nicht flach sein. – geofftnz
die Oberfläche muss nicht flach sein – user496949