我有太阳的方位角,仰角和方向矢量..我想放在一些距离太阳射线方向的观点。 任何人都可以描述或提供一个链接到的资源,这将有助于我理解和执行必要的步骤?
我用直角坐标系,以从方位角找到方向向量,然后对elevation.and查找视口origin.image这个问题
x = distance
y = distance* tan azimuth
z = distance * tan elevation.
我想找到的距离值......怎么样?
我有太阳的方位角,仰角和方向矢量..我想放在一些距离太阳射线方向的观点。 任何人都可以描述或提供一个链接到的资源,这将有助于我理解和执行必要的步骤?
我用直角坐标系,以从方位角找到方向向量,然后对elevation.and查找视口origin.image这个问题
x = distance
y = distance* tan azimuth
z = distance * tan elevation.
我想找到的距离值......怎么样?
方位角坐标系被引用到NEH(几何北东高(向上))参考帧!!!
在你的链接到图片它引用到-Y
轴,除非你是不是渲染世界,但做一些非线性曲线积投影所以哪一个它是不是真的?
这里顺便说一句ECEF / WGS84和尼你可以找到如何计算尼的WGS84
我可以看到你有不良计算之间,只是坐标要清楚这是怎么样子:
左边是全球对地观测和计算了它的位置(原点)一个尼 。 在中间的是表面对齐侧视图,右侧是表面对齐顶视图。 蓝绿色品红输入方位角坐标,布朗是x,y,z
直角坐标的突起(其中坐标是在其轴线上),以便:
Dist'= Dist *cos(Elev ); z = Dist *sin(Elev ); x = Dist'*cos(Azimut); y =-Dist'*sin(Azimut);
如果使用不同的参考帧或轴的方位,然后改变它相应的...
我怀疑你使用的4x4同质变换矩阵
为代表的坐标系,并握住你的看法端口等等看这里:
构建视图端口
你需要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;
你需要逆矩阵计算为
如果你想整个事情
然后,你也想加入太阳/地球位置计算在这种情况下,看这里:
距离
现在,很明显背后是什么,你只需要设置的距离,如果你想将它设置为太阳那么这将是distance=1.0 AU;
(天文单位),但巨大的距离,如果你有你的观点地球将是非常小的,而不是用一些更近的距离,以符合您的视图大小的样子: