raices cuadradas

Started by juanpe, December 23, 2009, 03:09:49 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

juanpe

Hola queria saber como se calculan raices cuadradas con bennu. Lo necesito para crear un movimiento eliptico, cuya formula es:

              2      2   
            X      Y     1
           __  + __ =
            a      b




osk

Démosle un vistazo a la wiki:
http://wiki.bennugd.org/index.php?title=Sqrt
(o a mi manualillo)
Venga, hasta luego!


Windgate

Recuerda que las raices devuelven float, si lo guardas en un entero Bennu trunca, para redondear tendras que hacer una funcion que redondee.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Drumpi

Es más fácil usando funciones trigonométricas: dado que un círculo se dibujaría como

x=x0+a*cos(angle);
y=y0+a*sin(angle);

donde a es el radio y angle es eso, el ángulo respecto a la horizontal, y (x0,y0) el punto central. De esta forma el círculo tiene un radio constante respecto a ambos ejes.
Pues como una elipse no es más que una circunferencia bastaría con "estirar" uno de los ejes:

x=x0+a*cos(angle);
y=y0+b*sin(angle);

donde a es el radio horizontal (el radio máximo horizontalmente) y b el vertical (el radio máximo verticalmente). Ejemplo:
x=150+10*cos(angle);
y=100+20*sin(angle);

Obtenemos un movimiento elíptico, centrado en (150,100), con un ancho de 10+10 pixels y un alto de 20+20 pixels.
Es el método que usé en FL para el menú de configuración, junto con una fórmula similar para alterar el size, y daba una sensación genial de 3D.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

juanpe

muchas gracias. Estudiaré ambas opciones a ver por cual me decido.

josebita

Juanpe, mejor usa la fórmula de Drumpi. Al final es lo mismo y piensa que si haces:
y=sqrt(b*(1-x^2/a));
Siempre te va a salir positivo, de forma que sólo podrías recorrer la parte superior de la elipse (y>0) o tendrías que hacer apaños raros para ir pasando de la parte superior a la inferior.
Sin embargo, con lo que te dice Drumpi, sale sólo sin más que aumentar al ángulo.

juanpe

tienes razon josebita. Así es mucho más cómodo, que no estamos para complicarnos la vida :D