Programación Específica > Diseño de Algoritmos

 Interpolación de valores

(1/3) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa