
12/06/2014, 22:41
|
|
¿Cómo compruebo...? Armo una línea de 360 píxeles o lo que sea.
Coloco X puntos cuya distancia con los contiguos es la misma. O sea la distancia entre el punto 1 y 2 sería la misma que entre el 2 y el 3, y así sucesivamente. Aunque no necesariamente hay 3 puntos, hay X.
Si X es 7 o ciertos números, tengo un problema.
Yo quiero colocar un objeto en una de esas posiciones, y luego comprobar que el objeto está ahí.
Pos = 5;
// posiciones o puntos.
Margen = 360 / (Pos*2) + 20;
// el +20 es porque la línea empieza desde el píxel 20. Va desde 20 a 380.
PosDis = 360 / Pos;
// distancia entre las posiciones.
IA._x = Margen + PosDis * (Act-1);
// Act inicia como 1.
Bueno así coloco al objeto "IA". Como comprobación usé:
Si IA._x > 20
Evidentemente eso no comprueba que esté en la posición exacta.
Entonces probé esto:
N = (IA._x-Margen) / PosDis;
if (N == Math.floor(N)) {
}
Pero cuando Pos es 7 esto no sirve. O sea, el objeto se coloca en la posición 1, correctamente, pero cuando hace la comprobación dice que no está ahí. Es algo relacionado con números decimales y operaciones con tales.
Posteriormente probé esto:
N = (IA._x-Margen) / PosDis+1;
if (N == Math.floor(N)) {
}
...que tiene más sentido pero es lo mismo...
La idea en ese caso es despejar Act:
IA._x = Margen + PosDis * (Act-1)
IA._x - Margen = PosDis * (Act-1)
(IA._x - Margen)/PosDis = Act-1
(IA._x - Margen)/PosDis+1 = Act
¿Está bien?
He aquí los resultados:
Pos = 7
Margen = 45.7142857142857
PosDis = 51.4285714285714
N = 0.999722222222222
Act = 1
...
Ahora que pienso podría aproximar (redondear) N. Y si da 1 está bien.
¿Alguna otra idea?
Gracias. |