Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Poligonos...

Iniciado por Manu343726, 15 de Junio de 2011, 12:48:03 AM

« anterior - próximo »

Manu343726

HOLA!!!

Hace mucho que no paso por aquí para dar el coñazo (Seamos sinceros, mis preguntas no las entiendo ni yo).

He estado desarrollando un engine desde cero (creo que lo comente hace tiempo), y para no complicarme usé GDI+ para el dibujo. Ahora que lo he ido optimizando, me he dado cuenta de que es éste dibujo el mayor cuello de botella. Por eso empiezo a plantearme portarlo a dxlib32. Lo he intentado varias veces, pero hay cosas que se me resisten. En concreto dibujar polígonos.

No encuentro una manera eficaz (Vale, no encuentro ninguna manera)  para dibujar un polígono cualquiera. Ya lo se, las funciones DRAW_VertexMap,DRAW_Trapezoid, y derivados están diseñadas para dibujar tiles. Pero yo sigo empeñado. Intenté usar DirectX nativo pero es un caos. Así que me rindo a vuestras sugerencias.


Ahora, a riesgo de que alguien me apalee, reabro un viejo debate: El problema de saber si un punto está dentro de un polígono.
He estado ojeando viejos post y he visto que los más citados son el algoritmo radial y el basado en el teorema de la cuerda de Jordan.

A nivel teórico, creo que todos estamos de actuerdo en que el de Jordan es mejor (Admite polígonos concavos y convexos, y es rápido comparado con el cálculo de angulos del radial). Pero a nivel práctico, que me recomendais??? Los numerosos casos que producen fallos en Jordan me dan mala espina...pero los ángulos del radial...Ya véis, todo un debate en mi mente. AYUDADME ANTES DE QUE ME VUELVA LOCO!!!
Gracias de antemano.

PD: Si por curiosidad aparece Giant's Quid, me gustaría hacerle un par de preguntas sobre su engine.

[EX3]

Poligonos, teoremas de la cuerda de Jordan, algoritmo radial... me sacáis por completo del tema :P

El problema de dx_lib32 es ese que comentas, esta diseñado para trabajar con tiles o con poligonos de 4 lados (cajas deformadas), por lo que o juegas para agruparlas y formar poligonos, lo que te daria mas problemas que otra cosa al trabajar quads y no triángulos, tales como que pueden desaparecer la mitad de algunos cuadrilateros al forzar posiciones raras en los vertices o en el caso de dibujar una imagen que la mitad de esta se deforme y no vaya coordinada con el resto de su textura (recuerda que internamente los sprites de dx_lib32 son dos triangulos formando un quad).

Sobre la mejor forma de averiguar si un punto se encuentra en un poligono, no sabria decirte por que nunca he tenido necesidad de ello pero si preguntas en el foro general de Programacion Grafica quizas te lea mas gente y sepan darte una solucion u orientarte a ella :)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.