majú dva úsečky v priestore, ako vytvoriť povrch s dvoma úsečkami ako hranicu?
odpovede:
4 pre odpoveď č. 1Môžete to urobiť parametricky.
Umiestnite svoje dva segmenty podľa:
{s1(t)} = t {a1} + {b1} (0 <= t <= 1)
{s2(t)} = t {a2} + {b2} (0 <= t <= 1)
kde {} označuje vektorové veličiny, konštanty {a}, {b}.
Potom pre každé t máte dva body v priestore, jeden v každom segmente.
Priamku medzi nimi možno opísať:
{r(v)} = ({s2(t)} - {s1(t)}) v + {s1(t)} (0 <= v <= 1 )
Takmer sme tam. Teraz píšeme funkciu popisujúcu povrch, ktorá nahradí s1 a s2 ich hodnotami:
{K(v,t)} = t v ( {a2} - {a1} )+ v ({b2} - {b1}) + t {a1} + {b1} (0<= t,v <=1)
HTH!
editovať
Príklad:
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}]}]]
Ďalší príklad zobrazujúci nerovný povrch:
a1 = {1, 1, 1};
b1 = {0, 0, 1};
a2 = {1, 0, 0};
b2 = {0, 1, 0};
1 pre odpoveď č. 2
Tieto dva segmenty segmentov budú musieť byť spoločné(tj: oba ležia na povrchu, ktorý chcete rekonštruovať). Krížový produkt dvoch úsečiek segmentov vám poskytne normálnu plochu (vektor kolmý na povrch).
To, čo som si v tomto bode neviete, je to, čo vyznamenajú segmenty, ktoré určujú hranicu. Ak sú konce riadkov segmentov 4 body hranice kvadrátu a chcete to zmeniť na rozdelenú záplaty, potom môžete bilinearne interpolovať medzi rohovými bodmi tak, aby ste vytvorili súradnice pre vaše patch-mesh.