Domanda

Ho una curva di Bezier specificato di 4 punti. Ho bisogno di sapere se un punto si trova sul lato sinistro o destro della curva di Bézier. Mi potete suggerire un algoritmo?

Modifica:. sono sicuro che il mio modo di generare la curva di Bezier non sarebbe formare i cicli

modifica Successivo mi sono reso conto che il mio problema iniziale potrebbe essere risolto senza l'utilizzo di posizione relativa. Quando ho postato questa domanda ho pensato che c'è una formula matematica per la posizione relativa allo stesso modo con il controllo se un punto è all'interno di un cerchio. Sembra che questo non è possibile. Così Accetterò la risposta che suggerire una soluzione efficace volta.

È stato utile?

Soluzione

È possibile determinare il punto più vicino alla curva di Bezier con un algoritmo piuttosto semplice (in relazione a k-suddivisione. Algoritmo di DeCastleju.) Guarda le gemme grafica se avete bisogno di specifiche.

A quel punto, anche con i loop, è possibile determinare side-ness determinando se il vettore al punto testato dal punto più vicino si trova a sinistra della mano destra del vettore che va lungo la curva (velocità -? Non sicuri del termine corretto qui ...) del Bezier nel punto più vicino che determinato.

È possibile ottenere -that- dal prodotto incrociato dei due vettori. Negativo o positivo determinerà la manualità e quale lato della linea che si sta percorrendo.

Naturalmente, in un ciclo sarà definito il sideness come se tu fossi una macchina di guida su tutta la linea, sareste guardando fuori dalla finestra di destra o di sinistra al punto, come si va da ... Non se si sta per destra o sinistra di tutta la squiggle Bezier. Quindi dipende da come si definisce "sideness"

Scusate se le mie condizioni sono spenti. Il suo stato un po 'da quando ho avuto a che fare nulla con Bezier di

Sarebbe più facile per disegnare un quadro;)

Altri suggerimenti

Se si desidera solo l'oggetto per seguire la curva (come dici tu nel tuo commento), perché non basta spostare l'oggetto con l'equazione parametrica? veda questo articolo

Ecco la matematica per cubica e quadratica Bezier curve implicitization.

Non riesco a ricordare la matematica a questa tarda ora, ma probabilmente che ci si vuole utilizzare un algoritmo di suddivisione per la curva di affinare progressivamente fino a quando i segmenti sono 'dritti' abbastanza da poterli trattare come segmenti di linea per le finalità della vostra determinazione.

Si può essere in grado di ottenere una risposta più veloce utilizzando la delimitazione poliedri dei perfezionamenti curva per determinare il punto in cui il vostro 'punto' è al di fuori tutti i poliedri, e poi subito appiattire per allineare i segmenti.

Supponendo che il punto vincolato alla curva, è necessario definire uno degli ancoraggi come la partenza e l'altra come la fine, quindi calcolare un punto che appartiene alla curva e si trova nel mezzo (metà della lunghezza) ... che modo in cui si può dire se il punto è tra l'inizio e la metà o la metà e la fine.

E 'questo ciò che si desidera o sono io completamente perso?

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