集约化网站建设的核心宁波seo公司联系方式
news/
2025/10/3 22:56:25/
文章来源:
集约化网站建设的核心,宁波seo公司联系方式,企业网络营销案例,直接进入网址的浏览器在上一篇中#xff0c;我们解决了照射计算的基本模型关系#xff0c;并能够根据手电的位置指向#xff0c;在地表求取光斑。但是#xff0c;前文使用的是设置探针求取场强的点求取#xff0c;对于绘制地表的等值线包络图、求取地表包线的具体解析情况#xff0c;就不够用…在上一篇中我们解决了照射计算的基本模型关系并能够根据手电的位置指向在地表求取光斑。但是前文使用的是设置探针求取场强的点求取对于绘制地表的等值线包络图、求取地表包线的具体解析情况就不够用了。使用单点的方法计算量大且步长不容易控制。
本文给出基于向量旋转与交汇的计算算法。代码参考 https://gitcode.net/coloreaglestdio/geocalc
1. 向量参数方程与椭球交点
对一个高度为H的标准椭球其方程为 x 2 ( a H ) 2 y 2 ( a H ) 2 z 2 ( b H ) 2 1 \frac{x^2}{(aH)^2}\frac{y^2}{(aH)^2}\frac{z^2}{(bH)^2}1 (aH)2x2(aH)2y2(bH)2z21
为了便于展开设 G 1 ( a H ) 2 G\frac{1}{(aH)^2} G(aH)21 K 1 ( b H ) 2 K\frac{1}{(bH)^2} K(bH)21
假设ECEF一个空间向量为 T ⃗ A B t , C D t , E F t \vec T{ABt, CDt, EFt} T ABt,CDt,EFt 大写的字母均为常数t为参数方程的参数则可以使用Octave的符号功能求取t与椭球的交点:
clc
clear
pkg load symbolic
G sym(G);
K sym(K);
A sym(A);
B sym(B);
C sym(C);
D sym(D);
E sym(E);
F sym(F);
t sym(t);
Tsolve(G*(AB*t)^2 G*(CD*t)^2 K*(EF*t)^21,t);
latex(sym(T))获得两个解为 [ − A B G C D G E F K B 2 G D 2 G F 2 K − − A 2 D 2 G 2 − A 2 F 2 G K 2 A B C D G 2 2 A B E F G K − B 2 C 2 G 2 − B 2 E 2 G K B 2 G − C 2 F 2 G K 2 C D E F G K − D 2 E 2 G K D 2 G F 2 K B 2 G D 2 G F 2 K − A B G C D G E F K B 2 G D 2 G F 2 K − A 2 D 2 G 2 − A 2 F 2 G K 2 A B C D G 2 2 A B E F G K − B 2 C 2 G 2 − B 2 E 2 G K B 2 G − C 2 F 2 G K 2 C D E F G K − D 2 E 2 G K D 2 G F 2 K B 2 G D 2 G F 2 K ] \left[\begin{matrix}- \frac{A B G C D G E F K}{B^{2} G D^{2} G F^{2} K} - \frac{\sqrt{- A^{2} D^{2} G^{2} - A^{2} F^{2} G K 2 A B C D G^{2} 2 A B E F G K - B^{2} C^{2} G^{2} - B^{2} E^{2} G K B^{2} G - C^{2} F^{2} G K 2 C D E F G K - D^{2} E^{2} G K D^{2} G F^{2} K}}{B^{2} G D^{2} G F^{2} K}\\- \frac{A B G C D G E F K}{B^{2} G D^{2} G F^{2} K} \frac{\sqrt{- A^{2} D^{2} G^{2} - A^{2} F^{2} G K 2 A B C D G^{2} 2 A B E F G K - B^{2} C^{2} G^{2} - B^{2} E^{2} G K B^{2} G- C^{2} F^{2} G K 2 C D E F G K - D^{2} E^{2} G K D^{2} G F^{2} K}}{B^{2} G D^{2} G F^{2} K}\end{matrix}\right] [−B2GD2GF2KABGCDGEFK−B2GD2GF2K−A2D2G2−A2F2GK2ABCDG22ABEFGK−B2C2G2−B2E2GKB2G−C2F2GK2CDEFGK−D2E2GKD2GF2K −B2GD2GF2KABGCDGEFKB2GD2GF2K−A2D2G2−A2F2GK2ABCDG22ABEFGK−B2C2G2−B2E2GKB2G−C2F2GK2CDEFGK−D2E2GKD2GF2K ]
2. 向量的绕轴旋转
向量的绕轴旋转在绘制地表区域时非常有用。考虑很多方向图都是对称的或者想控制投影仪上的画笔在地表绘制线条则可以控制一个 HPR向量在 F ( α , β ) F(\alpha ,\beta) F(α,β) 底片上进行游动其转换到ECEF下与椭球的交点就是投影的位置。
使用这样的方法我们可以快速生成复杂的图形。
罗德里格旋转公式Rodrigues’ rotation formula v ⃗ ′ v ⃗ cos ( s i t a ) ( 1 − cos ( s i t a ) ) ⋅ ( k ⃗ ⊙ v ⃗ ) ⊙ k ⃗ k ⃗ ⊗ v ⃗ ⋅ s i n ( s i t a ) ; \vec v\vec v \cos(sita) (1-\cos(sita))\cdot(\vec k\odot \vec v)\odot \vec k \vec k \otimes \vec v \cdot sin(sita); v ′v cos(sita)(1−cos(sita))⋅(k ⊙v )⊙k k ⊗v ⋅sin(sita); 其中v 是被旋转的向量 k 是转轴。
相关函数
/*!* \brief vec_rotation 罗德里格旋转公式Rodrigues rotation formula* \param v 旋转前向量* \param k 旋转轴* \param sita 转角* \param res 旋转后向量* \param rad 弧度true/度 false*/
void vec_rotation(const double v[3],const double k[3],const double dsita, double res[3],const bool rad false);/*!* \brief ellipsoid_intersections 求取过A的三维斜率为k的直线与椭球的交点。* \param A_ecef A点的ECEF坐标* \param k 直线的单位矢量方向* \param H 椭球海拔* \param result 交点* \param pt 截距即 A kt 的 t* \return 交点个数。*/
int ellipsoid_intersections(const double A_ecef[3],const double k[3],const double H,double result[/*2*/][3],double *pt/*2*/ nullptr);
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/926412.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!