Как рассчитать точный угол между вектором от камеры до якоря и между осями x в мировых координатах? - PullRequest
0 голосов
/ 26 апреля 2020

Внутри метода отрисовки ondrawFrame ():

session.update();
    Pose camera = frame.getCamera().getPose();
    Pose anchor= anchor.getPose();
     float x =  anchor.tx() - camera.tx();
        float y =  anchor.ty() - camera.ty();
        double theta_g= Math.atan2(y,x);

значение, возвращаемое theta_g, неверно, застряло здесь долгое время

1 Ответ

0 голосов
/ 08 мая 2020

Я решил это методом проб и ошибок, как только я сосредоточился на логи c и координировать изменения было легко:

float[] zcam = camera.getZAxis();
    float g_x =  (anchor.tx() - camera.tx());
    //float g_y = ( 0 - camera.ty());
    float g_z= (anchor.tz() - camera.tz());
    double distance_left= Math.sqrt((g_z*g_z)+(g_x*g_x));
    double theta_g=Math.atan2(g_z,g_x);
    double theta_c= Math.atan2(-zcam[2],-zcam[0]);
    double w = (theta_g-theta_c)*180/3.14;
...