如何找到观点坐标?(How to find view point coordinates?)

2019-10-20 23:14发布

我有太阳的方位角,仰角和方向矢量..我想放在一些距离太阳射线方向的观点。 任何人都可以描述或提供一个链接到的资源,这将有助于我理解和执行必要的步骤?

我用直角坐标系,以从方位角找到方向向量,然后对elevation.and查找视口origin.image这个问题

x = distance
y = distance* tan azimuth
z = distance * tan elevation.

我想找到的距离值......怎么样?

Answer 1:

  1. 方位角坐标系被引用到NEH(几何北东高(向上))参考帧!!!

    在你的链接到图片它引用到-Y轴,除非你是不是渲染世界,但做一些非线性曲线积投影所以哪一个它是不是真的?

    这里顺便说一句ECEF / WGS84和尼你可以找到如何计算WGS84

    我可以看到你有不良计算之间,只是坐标要清楚这是怎么样子:

    左边是全球对地观测和计算了它的位置(原点)一个 。 在中间的是表面对齐侧视图,右侧是表面对齐顶视图。 蓝绿色品红输入方位角坐标,布朗是x,y,z直角坐标的突起(其中坐标是在其轴线上),以便:

     Dist'= Dist *cos(Elev ); z = Dist *sin(Elev ); x = Dist'*cos(Azimut); y =-Dist'*sin(Azimut); 

    如果使用不同的参考帧或轴的方位,然后改变它相应的...

  2. 我怀疑你使用的4x4同质变换矩阵

    为代表的坐标系,并握住你的看法端口等等看这里:

    • 变换矩阵解剖
  3. 构建视图端口

    你需要X,Y,Z轴矢量和O原点位置。 O你已经有(至少你认为), Z轴光线的方向,所以你应该有这一点。 现在只需计算X,Y为对齐的东西(否则视图将周围的光线旋转)我使用尼为这样:

     view.Z=Ray.Dir // ray direction view.Y=NEH.Z // NEH up vector view.X=view.Y x view.Z // cross product make view.X axis perpendicular to Y ansd Z view.Y=view.Z x view.X // just to make all three axises perpendicular to each other view.O=ground position - (distance*Ray.Dir); 

    要使它成为一个有效的view_port你必须:

     view = inverse(view)*projection_matrix; 

    你需要逆矩阵计算为

  4. 如果你想整个事情

    然后,你也想加入太阳/地球位置计算在这种情况下,看这里:

    • 开普勒方程完整地球与太阳的位置
  5. 距离

    现在,很明显背后是什么,你只需要设置的距离,如果你想将它设置为太阳那么这将是distance=1.0 AU; (天文单位),但巨大的距离,如果你有你的观点地球将是非常小的,而不是用一些更近的距离,以符合您的视图大小的样子:

    • 如何定位摄像头,这样的对象总是具有相同的大小


文章来源: How to find view point coordinates?