解三棱锥 1 (Matlab)

                     

贡献者: addis

  • 本文处于草稿阶段。

  

未完成:给出公式
若已知 4 个点的坐标为 $ \boldsymbol{\mathbf{P}} _i = (x_i,y_i,z_i)$,且某点 $ \boldsymbol{\mathbf{P}} = (x,y,z)$ 到它们的距离 $r_i$,那么使用勾股定理可以唯一地解出 $ \boldsymbol{\mathbf{P}} $。
\begin{equation} (x-x_i)^2 + (y-y_i)^2 + (z-z_i)^2 = r_i^2 \qquad (i = 1,2,3,4)~. \end{equation}
以下给出 Matlab 代码。

  

未完成:该程序输入只有三个点,按照右手定则来选取。应该再写一个程序输入 4 个点,输出唯一的解。
代码 1:pmdL32P.m
% 已知三棱锥底面的三个点坐标 P1,P2,P3, 和三条棱 L1,L2,L3, 求顶点坐标
function P = pmdL32P(L1,L2,L3,P1,P2,P3)

P12 = P2-P1; mag = norm(P12);
C1 = (L1^2+mag^2-L2^2)/(2*L1*mag);% C1 = cos<P1P,P1P2>
P12 = P12/mag;

P13 = P3-P1; mag = norm(P13);
C2 = (L1^2+mag^2-L3^2)/(2*L1*mag);% C2 = cos<P1P,P1P3>
P13 = P13/norm(P13);

% P12和P13的法向量
vn = cross(P12,P13); vn = vn/norm(vn);

% 求单位投影矢量
M33 = [P12; P13; vn]; % 方程组: xs,ys,zs的点是单位P1P在P1P2,P1P3平面上的投影矢量(单位矢量)
C = [C1; C2; 0];      % 第一条: 矢量在P1P2方向的投影 = C1
Pproj = (M33\C)';     % 第二条: 矢量在P1P3方向的投影 = C2
                      % 第三条: 矢量在(nx,ny,nz)方向的投影 = 0
% 还原
a = sqrt(1-norm(Pproj)^2);
P = L1*(a*vn+Pproj)+P1;
end

  

未完成:demo


致读者: 小时百科一直以来坚持所有内容免费,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择大量广告以及内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 10 元,我们一个星期内就能脱离亏损, 并保证在接下来的一整年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

                     

友情链接: 超理论坛 | ©小时科技 保留一切权利