Hacer cumplir cierta orientación para un sistema de coordenadas local.

Este problema requiere alguna explicación, tal vez porque es muy especial o simplemente no conozco la terminología correcta. De cualquier manera, tengan paciencia conmigo mientras trato de explicar esto lo mejor que puedo.

Dados son los cinco vectores a , b , C , norte y r . los vectores a , b y C cada uno describe puntos en el mismo plano.

Quiero definir un sistema de coordenadas local usando el plano definido por los tres vectores a , b y C Para el X / Y -plano del sistema de coordenadas y la normal de ese plano como el Z -eje. El origen de ese sistema de coordenadas debe estar en el punto descrito por norte .

construyo los vectores X , y y z , que definen ese sistema de coordenadas, de la siguiente manera (tenga en cuenta que cada uno de ellos tendrá que convertirse también en vectores unitarios para mantener la escala del sistema de coordenadas global, he omitido ese paso aquí por simplicidad):

  • z = ( a b ) × ( C b )
  • Dejar tu ser el vector ( 0 , 1 , 0 ) del sistema de coordenadas global (el "arriba" global)
  • X = z × tu
  • y = X × z

Ahora aquí es donde me encuentro con un problema. Este sistema de coordenadas funciona tal cual, pero cada vector que define el eje también podría ser su inverso. Para evitar ambigüedades, el sistema de coordenadas local también debe cumplir los siguientes criterios (donde r define un punto que no está en el plano definido por a , b y C ):

  1. Dado un observador en r , el z del sistema de coordenadas local debe apuntar fuera del plano hacia el observador
  2. El y del sistema de coordenadas local debe apuntar en la dirección donde está "más cerca" del "arriba" global. Es decir, dadas ambas alternativas para y debe elegir el que apunta "hacia arriba".
  3. Dado que el mismo observador en r como en el criterio 1, el X debería apuntar hacia la derecha si el observador mirara al plano.

No tengo idea de cómo puedo verificar si mi calculado X , y y z cumplen estos criterios y por lo tanto tampoco sé si necesito invertirlos. Agradecería cualquier idea al respecto, ya que realmente he luchado para encontrar una solución para esto.

Respuestas (1)

Todo esto se logra fácilmente a través de puntos y productos cruzados. Asumiendo que a , b , C y norte son coplanares y que r no miente en este avión,

  1. Examinar el signo de z ( r norte ) . Si es positivo, entonces r está en el medio espacio en el que z puntos. Si es negativo, está en el lado opuesto del plano, así que voltea z . En otras palabras, señalar z en la dirección deseada, multiplicar z por el signo de z ( r norte ) a pesar de todo.

  2. Del mismo modo, multiplica y por el signo de y tu , es decir, por el signo de su propia segunda coordenada. Si eso es cero, y tu y tampoco y ni y está "más cerca" de apuntar hacia arriba.

  3. Aquí, asumiré que este observador está orientado con su "arriba" alineado con el "arriba" global. Una vez que haya alineado y y z correctamente, este criterio se satisface teniendo X ser en el sentido de las agujas del reloj de y al mirar hacia el avión desde r , así que establece X = y × z , normalizado, por supuesto. De nuevo, si y tu , X terminará apuntando "hacia arriba" o "hacia abajo", pero esto al menos asegurará que el X -la dirección está en cierto sentido a la derecha de la y -dirección en ese caso.