XSIforum.com

Formulas matematicas, del papel al codigo.

0 Usuarios y 1 Visitante están viendo este tema.

agedito

  • ***
  • 1524
  • ¡¡Yo lo que quiero es milonguear!!
Re:Formulas matematicas, del papel al codigo.
« Respuesta #10 en: 05 Febrero 2014, 12:10:36 »
Despues de leerme todo el hilo, lo unico que ha pasado por mi cabeza ha sido: "Vale, me voy al pub".
:p

Re:Formulas matematicas, del papel al codigo.
« Respuesta #11 en: 05 Febrero 2014, 20:11:31 »
Efectivamente, premio para el caballero:
De la forma clásica serían: 3 sumas, 3 multiplicaciones y 2 potencias
usando la propiedad distributiva (para que veáis que lo que enseñaban en la escuela servía para algo :p) serían: 3 sumas y 3 multiplicaciones. Por lo que nos ahorramos las potencias.
Cuando estamos dentro de bucles grandes, se nota




Genial.. porque tengo unas cuantas más dentro del mismo bucle.. asi que más deberes ( Google search "propiedad distributiva").
Porque a ver.. aplicando eso a 'mi' propuesta de ejercicio, que esta implementada asi*:
Código: [Seleccionar]
float IOR = 1.3; // (1)
float Fdr = -1.440  / (IOR*IOR)+ 0.710  / IOR + 0.668 + 0.0636 * IOR;
*No la implementé yo, si no un estudiante chino, en el GSOC 2010.
(1)  este es un valor introducido por el usuario, pero que pongo aqui para saber el valor de IOR dentro de la operación.
Veamos.. Realmente la función Fdr ( Fressnel diffuse reflection ) se resuelve matematicamente, pero aqui han introducido los valores ponderados de algunas variables, para optimizar un poco el código dentro del loop.
Deberes: estudiar como aplicar las propiedades distributivas a Fdr.. y a otras por el estilo.
:)
Saludos


agedito

  • ***
  • 1524
  • ¡¡Yo lo que quiero es milonguear!!
Re:Formulas matematicas, del papel al codigo.
« Respuesta #12 en: 05 Febrero 2014, 21:02:51 »
float Fdr = (-1.440 /IOR+ 0.710)  / IOR + 0.668 + 0.0636 * IOR;

aquí solo te ahorras una multiplicación (por eso puse el ejemplo del polinomio que era más notable el cambio)

Re:Formulas matematicas, del papel al codigo.
« Respuesta #13 en: 05 Febrero 2014, 22:20:29 »
float Fdr = (-1.440 /IOR+ 0.710)  / IOR + 0.668 + 0.0636 * IOR;

aquí solo te ahorras una multiplicación (por eso puse el ejemplo del polinomio que era más notable el cambio)

Aha.. Mi intención es 'aprender' el metodo en cuestión, ya que como dije, hay unas cuantas ecuaciones más que creo que entendiendo lo de las propiedades distributivas, puedo optimizarlas y ahorrar algo de tiempo de proceso.
:)

Re:Formulas matematicas, del papel al codigo.
« Respuesta #14 en: 06 Febrero 2014, 21:25:15 »
Bien.. Agedito,  he comprobado tu metodo de ahorrarse una multiplicación, con Python 3.3.2 y, solo me da una pequeña variacion en el 16-avo decimal.
Tal cual está:
Código: [Seleccionar]
IOR = 1.3
Fdr = -1.440  / (IOR*IOR)+ 0.710  / IOR + 0.668 + 0.0636 * IOR
0.44476284023668644


Con tu método:
Código: [Seleccionar]
IOR = 1.3
Fdr = (-1.440 /IOR+ 0.710)  / IOR + 0.668 + 0.0636 * IOR
0.44476284023668655

Creo que la 'impresición' es mínima y el ahorro de tiempo puede ser importante, ya que esa operacion se ejecuta muchas veces en cada render :)
Que opinais?
« Última modificación: 07 Febrero 2014, 18:54:01 por povmaniaco »