2009-02-10 13 views

Respuesta

8

Todas las imágenes de ejemplo que ha publicado se pueden hacer con una distorsión cuadrilátera. Aunque no puedo decir con certeza que un cuádruple distorsionará TODAS las transformaciones no afines.

Aquí hay un enlace a una implementación no tan buena en C# ... funciona, pero es lento. Hurgar Wikipedia por las muchas optimizaciones diferentes disponibles para este tipo de cálculos

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

-Neil

+1

"Aunque no puedo decir con certeza que un quad distorsionará TODAS las transformaciones no afines". No lo hará, hay muchas, muchas cosas que un quad distort no puede hacer. Pero es un excelente comienzo. – kquinn

8

yo no tengo conocimiento de ningún integrado en .Net que le permite hacer transformaciones de los no afines.

Supongo que está tratando de tener algún tipo de mapeo de texturas 3D? Si ese es el caso, necesita una transformada afín homogénea, que no está disponible en .Net. Tampoco estoy al tanto de ninguna forma integrada para hacer transformaciones de desplazamiento de píxeles en .Net.

Sin embargo, la solución actualmente votada podría ser buena para lo que está intentando hacer, solo tenga en cuenta que no hará la corrección de perspectiva de la caja.

Por ejemplo:

alt text

La imagen de la izquierda se ha generado utilizando la única quad distorsionan biblioteca proporcionada por Neil N. La imagen de la derecha se generó usando un único quad (dos triángulos en realidad) en DirectX.

Esto puede no tener ningún impacto en lo que estás tratando de hacer, pero esto es algo que debes tener en cuenta si quieres hacer cosas en 3D, se verá muy extraño sin una asignación de perspectiva correcta.

+0

No, obtuvimos un iPod y vi la capacidad de ajuste de la página. Y me disgustó que un pequeño dispositivo integrado y flash no puedan transformaciones sofisticadas, pero un Core2 Duo con el sistema operativo más avanzado del mundo no puede hacerlo. –

+0

"... puedes hacer * transformaciones sofisticadas ..." –

+0

El hecho de que no tenga funciones integradas para hacer transformaciones sofisticadas no significa que no pueda hacerlo. He visto algunos gráficos asombrosos en puro C# –

1

Puede hacer esto en wpf usando el control Viewport3d y una matriz de transformación no afín. Volver a representar esto en un mapa de bits puede ser interesante ... Lo cual "solucioné" al incluir un control de imagen invisible < > con la misma imagen que en mi plano texturizado ... (Además, he tenido que trabajar con el máximo problemas de tamaño de textura, dividiendo el avión y recorte de imágenes ...)

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

En mi caso, yo quería que el reverso de esta (transformada de puntos de modo arbitrario en el combado se convierten en los rincones de mi ventana rectangular), que es el inverso de la matriz para hacer lo opuesto.

+0

. Oh, Charles Petzold también publicó cómo hacer esto en Silverlight 3 usando Matrix3dProjection: http: //www.charlespetzold .com/blog/2009/07/Using-the-Matrix3DProjection-Class-in-Silverlight-3.html – sphereinabox

Cuestiones relacionadas