Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Clases Para La Luz (opengl)

Iniciado por Leoheart, 29 de Agosto de 2003, 11:47:50 PM

« anterior - próximo »

ethernet

 Poniendo int unsigned _casi_ arreglas el error (ironia). Yo retornaria un const float * :)

Leoheart

 Wenas,
LO de las funciones ya lo arreglare :blink: .

Ahora lo que me gustaria saber es como calcular cual es la luz que tengo mas cerca para crearla y cuando me aleje destruirla. No se que algoritmo usar. Eso si siempre suponiendo quee tengo tres variables :
- PersonajeX
- PersonajeY
- PersonajeZ

A partir de esto como lo puedo calcular , por mas que pienso no lo consigo  (uoh)  
oding!

Mars Attacks

 Para cada luz calculas la raíz cuadrada del módulo de la resta de los cuadrados de las posiciones de la luz y del personaje y la que menor valor te dé es la que tienes que activar.

en forma de algoritmo:

luzactivada<-1 (supongamos que la luz más cercana es la primera)
para x<-1 hasta numluces hacer
 distancia<- raizcuadrada(módulo(posicionluz*posicionluz - posicionpersonaje*posicionpersonaje))
 si x igual a 1 entonces
     distancia_anterior<-distancia
 finsi
 si distancia menor o igual a distancia_anterior entonces
     luzactivada<-x
 finsi
 distancia_anterior<-distancia
finpara


Así a ojo de buen cubero y en plena modorra. Si me he equivocado que alguien lo arregle.

DraKKaR

 Bueno, yo en realidad calcularia la distancia al cuadrado, en vez de la distancia. Para comparar entre luces sigue siendo valido, y asi te ahorras una odiosa raiz cuadrada.

Es decir, usar el algoritmo de mars, pero kirando lo de raiz_cuadrada.

Leoheart

 Wenas,
Bueno gracias por el algoritmo Mars y voi a ver si lo paso a C y Opengl. B)  
oding!

Mars Attacks

 Supongo que faltaría hacer también un desactivaluz(luzactivada) antes del luzactivada<-x, si no te irá activando otras luces sin desactivar las anteriores.






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.