Domanda

Ho bisogno di trovare i 2 punti del orizzonte visivo , di una faccia curva.

ho:

  • XYZ dei 4 punti d'angolo
  • XYZ dei punti 2 bordo bezier curve

E ho bisogno di calcolare sia:

  • XY dei 2 punti orizzonte
  • XYZ dei 2 punti orizzonte

Nota: Ho una soluzione di ultima tempo ho fatto questa domanda, ma ho trovato solo il extrema delle curve, non i punti orizzonte , che cambia in base alla posizione e la rotazione di entrambe le curve in relazione gli uni agli altri.

È stato utile?

Soluzione

Non si dice come si definisce la vostra superficie, solo che è delimitata da due curve di Bézier quadratiche. Ci sono molti modi per costruire un tale superficie, ed ogni modo di costruire sarebbe un orizzonte diverso. Quindi questa risposta sta per essere congetture.

L'orizzonte consiste di quei punti della superficie in cui il vettore dalla telecamera al punto è tangente alla superficie, come illustrato di seguito:

Tangente alla curva di Bézier

una curva di Bezier quadratica trovi equazione parametrica

  

B ( t ) = (1 - t ) 2 P 0 + 2 (1 - < em> t ) t P 1 + t 2 P 2

differenziando che rispetto a t ci dà la tangente alla curva:

  

B '( t ) = 2 ( t - 1) P 0 + 2 (1 - 2 t ) P 1 + 2 t P 2

e questo è parallelo al vettore dalla telecamera (all'origine) alla curva se

  

B ( t ) × B '( t ) = 0

Risolvere questo per t e avrete il punto sulla curva all'orizzonte. Come si può estendere questo l'orizzonte per tutta la superficie dipende da come è costruita la vostra superficie. (Forse si può solo trovare i punti di orizzonte per le curve ad ogni estremità della superficie e unirsi a loro con una linea retta?)

Altri suggerimenti

Funziona ruotare dapprima le curve in modo che il collegamento tra i punti angolo è orizzontale e poi calcolando gli estremi?

Per verificare visivamente, è possibile ruotare l'immagine esempio di circa 150 gradi:

http://www.freeimagehosting.net/uploads/ad502509e9.png

Si noti gli estremi di questa curva non è esattamente dove si desidera, ma questo potrebbe essere causato da diversi fattori, ad esempio il modo in cui hai segnato i punti di orizzonte non sembra essere quella esatta.

Quello che stai cercando è in realtà chiamato un silhouette , non un orizzonte.
Il metodo più semplice per farlo è trovare il confine tra le parti di superficie in cui il normale è diretto verso la telecamera (prodotto scalare è negativo) e le parti di superficie in cui il normale rivolta dalla fotocamera (prodotto scalare è positivo) .

Con un triangolo maglie è possibile farlo direttamente utilizzando le normali. con NURBS si può probabilmente trovare una formula chiusa, che fa questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top