Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

165
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!