/ / Povrchová konštrukcia využívajúca dva úsečky - grafika, geometria

Povrchová konštrukcia využívajúca dva segmenty - grafika, geometria

majú dva úsečky v priestore, ako vytvoriť povrch s dvoma úsečkami ako hranicu?

odpovede:

4 pre odpoveď č. 1

Môž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}]}]]

alt text

Ďalší príklad zobrazujúci nerovný povrch:

a1 = {1, 1, 1};
b1 = {0, 0, 1};
a2 = {1, 0, 0};
b2 = {0, 1, 0};

alt text


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.