Mayo 08, 2016, 02:39:21 AM Ultima modificación: Mayo 14, 2016, 06:18:07 PM por NiuWeb
Autor: NiuWeb
Versión de GM utilizada: GM8.0, no he probado si funciona en anteriores, ni tengo cómo.
Descripción: Una emulación sencillísima de la función lerp() de GMS. No me sé la fórmula de la interpolación lineal, ni tengo idea de cómo trabaja la misma en GMS. Pero lo importante es que hace el mismo trabajo xDD
Códigos:
Función lerp(a, b, amt);
[gml]
///lerp(a, b, amt);
var a, b, amt;
a = argument0;
b = argument1;
amt = argument2;
var w, p;
w = b - a;
p = w*amt;
return a + p;
[/gml]
Argumentos:
a: El primer valor a interpolar.
b: El segundo valor a interpolar.
amt: La cantidad a interpolar.

Ejemplo:
[gml]
lerp(10, 15, 0.5); //Devuelve 12.5
lerp(7, 24, 0.2); //Devuelve 11.4 aprox.
lerp(12, 18, 1.5); //Devuelve 21.
lerp(21, 3, 0.5); //Devuelve 12.
[/gml]

Es muy corto, pero qué se le hace, funciona xD. Espero le pueda ser de utilidad a alguien que aún use GM8 xD
alaberga regué el café.

BA:STFW&RTFM

en suiza, cuando me puse a empoyar gml, me trabe con esta funcion, no comprendia que narices es una interpolacion linear (linear o lineal? :S) mire videos y videos y nada, no me empano, pero yo solo haciendo miles de pruebas llegue a la conclusion de que:

lerp(a,b,amt) es igual a (b-a)*amt

lo que no entiendo esa ultima suma de la a... en mis pruebas no me cuadra xd
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Cita de: kostra en Mayo 14, 2016, 01:43:55 PM
en suiza, cuando me puse a empoyar gml, me trabe con esta funcion, no comprendia que narices es una interpolacion linear (linear o lineal? :S) mire videos y videos y nada, no me empano, pero yo solo haciendo miles de pruebas llegue a la conclusion de que:

lerp(a,b,amt) es igual a (b-a)*amt

lo que no entiendo esa ultima suma de la a... en mis pruebas no me cuadra xd
Lol xD, juro que en algún lugar lo había leído así xD, o quizás el sueño que tenía cuando lo leí xD :-[

La suma es para que la función devuelva un valor entre los otros dos. Con esto me refiero que lerp(5, 15, 0.5), sin la suma, devolvería: 15-5=10, 10*0.5=5. Pero obviamente 5 no es el resultado, ya que está devolviendo el mismo primer valor. Por eso la suma. a+5= 5+5=10, y el "centro", por decirlo así (o promedio, pero sólo si la cantidad a interpolar es 0.5), de los dos números es 10.

E incluso uno más sencillo: lerp(5, 10, 1) debería dar 10. Pero si le quitamos la suma, quedaría 5. ¿Por qué? porque b-a=10-5=5, y 5*1=5  :o
alaberga regué el café.

BA:STFW&RTFM