Programación Específica > Diseño de Algoritmos
Interpolación de valores
aTx:
Estoy realizando una aplicación que requiere interpolación de valores en un array bidimensional. Simplemente, consiste en varias celdas que toman distintos valores, y mi aplicación tiene que buscar unos valores específicos e interpolarlos de la información que se posee. Aquí va un ejemplo:
[attachment=1:1wle29n2]interpolacion.png[/attachment:1wle29n2]
Mi actual implementación consiste en recorrer todas las celdas y comparar, una a una, con su celda derecha y su superior (empezando desde la parte inferior izquierda), y si el valor está entre esas dos celdas, interpolar el punto donde debería estar el valor buscado y dibujar dicho punto. Pero esto no es efectivo, ya que para figuras mas complejas no es capaz de seguir el orden natural de las figuras, creando formas extrañas e inútiles, como las de esta imagen:
[attachment=0:1wle29n2]interpolacion_mala.png[/attachment:1wle29n2]
¿Se os ocurre alguna otra forma, o conocéis algún algoritmo que me permita realizar lo que pretendo?
Un Saludo.
m0skit0:
¿Y si nos explicases qué es interpolar...?
--- Cita de: "RAE" ---4. tr. Mat. Calcular el valor aproximado de una magnitud en un intervalo cuando se conocen algunos de los valores que toma a uno y otro lado de dicho intervalo.
--- Fin de la cita ---
pero sigo sin entender...
aTx:
Interpolar consiste en "adivinar" donde está un valor dados otros valores que ya tienes. Por ejemplo, si tienes un 5 y un 8, si quieres interpolar un 6 sabrás, por lógica, que está más cerca del 5 que del 8, exactamente a 1/3 de la distancia de 5 y 2/3 de distancia de 8.
En la wikipedia inglesa tienes varios ejemplos mas: wikipedia.org/wiki/Interpolation
m0skit0:
Sí, si interpolar lo entiendo, lo que no entiendo es cómo lo aplicas tú en tu ejemplo, para poder especificarte un algoritmo más concreto.
aTx:
Un ejemplo de como lo hago para contonear el valor 0.1:
[attachment=0:1cz4y6qt]anim.png[/attachment:1cz4y6qt]
Empiezo por la celda 0101 y la comparo con su derecha, la 0201. Como el valor no está entre esas dos celdas, entonces comparo entre 0101 y su superior, 0102. Como no he encontrado el valor entre ninguna de las celdas, repito los mismos pasos con la celda 0102, es decir, comparo los valores de 0102 con 0202 y luego con 0103. En este caso, al comparar 0102 con 0103,la primera tiene el valor 0.09806 y la segunda 0.1139, por tanto, el 0.1 está entre esas dos celdas. Simplemente calculo el punto donde debería estar y lo dibujo entre dichas celdas, y repito esos pasos para todas las celdas y valores que quiero buscar.
Navegación
[#] Página Siguiente
Ir a la versión completa