2009-02-10 10 views

risposta

8

Tutte le immagini di esempio pubblicate possono essere eseguite con una distorsione quadrilatera. Anche se non posso dire con certezza che una distorsione quad coprirà TUTTE le trasformazioni non affini.

Ecco un collegamento a un'implementazione non così buona in C# ... funziona, ma è lento. Frugare Wikipedia per le molte ottimizzazioni differenti disponibili per questi tipi di calcoli

http://www.vcskicks.com/image-distortion.html

-Neil

+1

"Anche se non posso dire con certezza che una distorsione quad coprirà TUTTE le trasformazioni non affini." Non lo faranno, ci sono molte, molte cose che una distorsione quad non può fare. Ma è un inizio eccellente. – kquinn

8

io non sono a conoscenza di nulla integrati nella .Net che ti permette di fare le trasformazioni non affini.

Immagino che stiate provando ad avere una sorta di mappatura tridimensionale? Se questo è il caso, hai bisogno di una trasformazione affine omogenea, che non è disponibile in .Net. Inoltre, non sono a conoscenza di alcun modo integrato per trasformare le trasformazioni di pixel in .Net.

Tuttavia, la soluzione attualmente votata potrebbe essere buona per ciò che si sta tentando di fare, solo essere consapevoli del fatto che non farà la correzione prospettiva fuori dalla scatola.

Ad esempio:

alt text

L'immagine a sinistra è stato generato usando il singolo quad distorto libreria fornita da Neil N. L'immagine a destra è stata generata utilizzando una singola quadrupla (due triangoli in realtà) in DirectX.

Questo potrebbe non avere alcun impatto su ciò che si sta tentando di fare, ma questo è qualcosa da tenere a mente se si vuole fare cose 3D, sembrerà molto strano senza mappatura corretta prospettiva.

+0

No, abbiamo un iPod e ho visto l'abilità di avvolgere la pagina. Ed ero disgustato dal fatto che un piccolo dispositivo incorporato, e il flash, non possano trasformarsi in fantasiose trasformazioni - ma un Core2 Duo che esegue il sistema operativo più avanzato del mondo non può farlo. –

+0

"... può fare * trasformazioni di fantasia ..." –

+0

Solo perché non ha funzioni incorporate per fare trasformazioni di fantasia, non significa che non può farlo. Ho visto alcuni doen di grafica piuttosto stupefacente in puro C# –

1

È possibile eseguire questa operazione in wpf utilizzando un controllo Viewport3d e una matrice di trasformazione non affine. Il rendering di questo in un bitmap potrebbe essere interessante .... Che ho "risolto" includendo un invisibile <image> control con la stessa immagine del mio aereo texturizzato ... (Inoltre, ho dovuto lavorare intorno al massimo problemi di dimensioni delle texture, dividendo l'aereo e ritaglio delle immagini ...)

http://www.charlespetzold.com/blog/2007/08/060605.html

Nel mio caso ho voluto il contrario di questa (di trasformare i punti in modo arbitrario sul deformato diventano gli angoli della mia finestra rettangolare), che è l'inverso della matrice per fare il contrario.

+0

Oh, Charles Petzold ha anche postato come farlo in silverlight 3 usando Matrix3dProjection: http: //www.charlespetzold .com/blog/2009/07/Usando-the-Matrix3DProjection-Class-in-Silverlight-3.html – sphereinabox

Problemi correlati