Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

168
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda