Hace 9 años | Por enrii.bc a elladodelmal.com
Publicado hace 9 años por enrii.bc a elladodelmal.com

Durante los 10 a 15 minutos que tengo para entrevistar cara a cara a los que voy seleccionando, tengo que intentar descubrir lo mejor y lo peor de cada uno de los entrevistados. esta vez, la prueba que utilicé con bastantes de los llegados para ver si serían capaces de programar y de resolver problemas fue un algoritmo clásico de los inicios de la computación digital de los que se estudian en algorítmica y geometría computacional. "Dados dos puntos de una matriz, pintar una línea recta en una pantalla de píxeles pintando punto a punto."

Comentarios

LuisPas

yo subcontrataria a uno para que lo hiciese

D

Hace muchos años,hice un programa para eso precisamente. Un pseudoalgoritmo de la recta, punto a punto, para mover los motores de pasos de una máquina a traves de toda la trazada, punto a punto o sea paso a paso secuencialmente.

Lo resolví de esta manera, y funcionaba perfectamente y a toda leche. la rutina trazaba entre dos puntos dados x0,y0 y X1,Y1:



Public Sub TRAZA(x0 As Single,y0 As Single, X1 As Single,Y1 As Single)

difx = x1 - X0 'cateto (tú no,eh)
dify = y1 - Y0 'cateto (tú no,eh)

distanciadestino = Sqr( (difx*difx) + (dify*dify)) 'distancia al punto destino(hipotenusa)

incrX = difx / distanciadestino 'incrementos de x e y
incry = dify / distanciadestino 'incrementos de x e y


do while (c < distanciadestino)
c=c+1

puntoX = (c * incrX + x0)
puntoY = (c * incry + y0)


loop


END SUB

D

para mover los motores, calculaba la distancia de cada punto de la trazada hasta el punto final.
Aplicaba un AND con el 3 para coger solamente los 2 bits ultimos del valor de la distancia.

Esos 2 bits los atacaba directamente a los 4 pines de los motores y la secuencia iba a toda leche y perfecto.

K_os

line (x0,y0)-(X1,Y1)

D

#4 el comando line usa el bresenham que es el rey de los algoritmos de la recta ,pero no da la salida de todos los puntos de la recta que es de lo que se trata.
Yo probé con el bresenham pero la secuencia de los motores no iba limpia y la velocidad de calculo apenas variaba

https://es.wikipedia.org/wiki/Algoritmo_de_Bresenham