Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/06/2014, 22:41
Tachikomaia
Invitado
 
Mensajes: n/a
Puntos:
¿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.