Domanda

Sto cercando di sviluppare un visualizzatore superficie piana utilizzando questo metodo (non so se questo è il metodo standard o se c'è qualcosa di meglio):

    1. Prendere qualsiasi funzione f(x,y,z)=k (dove k è costante), e dai limiti per x, y, z. Anche prendere in due parametri di rete StepX e Stepz.
    2. ridurre ad un problema curva di livello, iterare da zmin a Zmax con intervalli Stepz. così f(x,y,z)=k => f(x,y,fixedZ)=k
    3. Eseguire la stessa procedura con StepX, riducendo il problema a f(fixedX, y, fixedZ)=k
    4. risolvere f(fixedX, y, fixedZ) - k = 0 per tutti i valori di y che soddisfi l'equazione (utilizzando qualche tipo di un calcolo di uno zero di una funzione).
    5. Per tutti i punti generati, tracciare quelli come curva di livello (il ciclo interno genera curve di livello in un determinato z, poi per diversi valori di z ci sono solo pile di curve di livello)
    6 (opzionale). Generare una maglia da queste curve di livello / punti che appartengono al livello impostato.

Il problema che sto funzionando in è con il passaggio 4. Non ho modo di sapere prima di mano il numero di possibili valori di y soddisferanno che l'equazione (più specificatamente, il numero di valori unici e reali di y).

Inoltre, sto cercando di mantenere il programma più generale possibile quindi sto cercando di non limitare la funzione f(x,y,z)=k originale per eventuali vincoli, come levigatezza o polinomiale diverso k deve essere costante come richiesto per una superficie piana.

C'è un algoritmo (senza l'utilizzo di un CAS / solving simbolico) che può identificare la radice (s) di una funzione, anche se ha radici multiple? So che bisezione metodi hanno un momento difficile con questo a causa della possibilità di cambiamenti firma sopra la regione, ma come fa il metodo tariffa secanti / Newton? Che insieme di funzioni possono metodo secanti / newton essere utilizzato su, e possono esso rilevare e trovare tutte le radici reali unici entro due date limiti? O c'è un metodo migliore per la generazione / visualizzazione di superfici piane?

È stato utile?

Soluzione

credo di aver trovato la soluzione al mio problema. Ho fatto un po 'di più la ricerca e ha scoperto che il livello di superficie è sinonimo di isosurface. Quindi, in teoria, qualcosa di simile a un metodo di cubetti di marcia dovrebbe funzionare.

Altri suggerimenti

Nel caso in cui hai bisogno di un esempio dei cubi algoritmo di marcia, controlla

http://stemkoski.github.com/Three.js/Marching- Cubes.html

(utilizza JavaScript / Three.js per la grafica).

Per maggiori dettagli sulla teoria, si dovrebbe verificare l'articolo a

http://paulbourke.net/geometry/polygonise/

Un modo semplice,

2D: plot (x, y) di colore = floor (q * f (x, y)) in scala di grigi, dove q è un fattore arbitrario. 3D: plot (x, y, piano (q * f (x, y))

efficace altezze della funzione che sono equivalenti saranno rappresentare sullo stesso piano.

Se ad ottenere le curve di livello è possibile utilizzare il metodo categorizzazione e il bordo 2D rilevamento / regione per ottenere i punti (x, y) sullo stesso livello.

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