Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

166
Vistas
¿Cómo implementar hacer rodar una pelota sobre una esfera en términos de matrices?

Objetivo: es necesario crear dos esferas, una de las cuales se puede rodar sobre la superficie de la otra con el mouse, e implementar una cámara que se pueda mover alrededor de estas bolas con el teclado.

Implementación: inicié una matriz que almacena el estado actual de la rotación de la bola rodante. Cuando el usuario arrastra, obtengo una serie de eventos de movimiento del mouse, y cada vez que me muevo, calculo cuántos grados alrededor de X e Y actuales, tal como los ve el usuario, la rotación ha cambiado. Luego calculo una matriz que representa estas dos rotaciones y multiplico la matriz de rotación de la esfera original por ella en orden inverso; el orden inverso es necesario porque la rotación ocurre desde el punto de vista de la cámara, y no desde el punto de vista del modelo. espacio.

Problema: Pero con tal implementación, la segunda esfera no cambiará el punto de contacto con la primera esfera (se deslizará, por así decirlo), ¿cómo se puede implementar analíticamente la rotación del punto de contacto de las bolas? en términos de matrices?

Aquí está el código si alguien está interesado: https://github.com/AndrewStrizh/spheres-with-webGL

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Lo que necesita es poder controlar la rotación de su esfera alrededor de dos (o más) pivotes de rotación diferentes.

Una forma adecuada de lidiar con transformaciones complejas es implementar transformaciones jerárquicas:

http://web.cse.ohio-state.edu/~wang.3602/courses/cse3541-2019-fall/05-Hierarchical.pdf

En este caso, puede controlar la rotación de la sphereB alrededor de la sphereA haciendo que la sphereB un hijo de un tercer objeto invisible, llámelo Locator , ubicado en el centro de la sphereA . Con la implementación adecuada de las transformaciones jerárquicas, la rotación del Locator también rotará la sphereB alrededor de este Locator (es decir, alrededor de la sphereA ). Al mismo tiempo, también puedes aplicar una rotación de la sphereB alrededor de su propio centro, haciéndola girar.

En la práctica, implementar verdaderas transformaciones jerárquicas requiere implementar un gráfico de escena, con un recorrido de nodos adecuado, etc. Pero la idea principal es que cada objeto tenga lo que se llama una matriz de transformación local y una matriz de transformación mundial. La matriz de transformación local contiene solo la transformación propia de ese objeto en particular (localmente a su propio origen), mientras que la matriz de transformación mundial es la matriz final, resultado de la suma de todas las transformaciones jerárquicas (desde los padres) aplicadas a este objeto. La matriz de transformación del mundo es la que se utiliza como matriz "modelo", para ser multiplicada con las matrices de vista y proyección. Las matrices de transformación locales y mundiales de los nodos se calculan así (pseudocódigo):

node.worldMatrix = node.localMatrix * node.parent.worldMatrix;

Sabiendo que, dado que solo necesita tres objetos y dos transformaciones jerárquicas, no tiene que implementar un escenario gráfico completo, solo necesita simular este principio multiplicando las matrices adecuadas para reproducir el comportamiento deseado.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda