数学几何

博客围绕空间几何计算展开,介绍了已知三点求平面法向量,通过向量积得出结果;已知三点求圆心,利用约束条件列出线性代数方程组求解;还涉及求两向量夹角和两点间距离的内容,为空间几何计算提供了方法。

(一)已知三点求平面法向量

参考:https://www.cnblogs.com/charlee44/p/10744158.html
参考:https://blog.csdn.net/sinat_41104353/article/details/84963016

空间已知三点的位置p1(x1,y1,z1), p2(x2,y2,z2), p3(x3,y3,z3), 令它们逆时针在空间摆放。这样就可以得到平面的两个向量p1p2(x2-x1,y2-y1,z2-z1),p1p3(x3-x1,y3-y1,z3-z1),而平面法线总是和这两个向量垂直。也就是说,p1p2与p1p3的向量积就是平面的法向量n。

向量积

已知向量:
a=(a1,a2,a3) b=(b1,b2,b3)
其向量积可表示为:
a×b=(a2b3-a3b2,a3b1-a1b3,a1b2-a2b1)
在这里插入图片描述
对于一个空间的平面而言,其法向量可以是两个方向,可以向上也可以向下。
中默认规定的也是右手法则,右手除拇指之外的四指根据点的逆时针握住,大拇指的方向即为法线方向。

%% 求Data.P{1}、Data.P{2}、Data.P{3}三点的法向量ansr.n
ansr.n(:,1) = (Data.P{2}(:,2)-Data.P{1}(:,2)).*(Data.P{3}(:,3)-Data.P{1}(:,3))-(Data.P{3}(:,2)-Data.P{1}(:,2)).*(Data.P{2}(:,3)-Data.P{1}(:,3));
ansr.n(:,2) = (Data.P{2}(:,3)-Data.P{1}(:,3)).*(Data.P{3}(:,1)-Data.P{1}(:,1))-(Data.P{3}(:,3)-Data.P{1}(:,3)).*(Data.P{2}(:,1)-Data.P{1}(:,1));
ansr.n(:,3) = (Data.P{2}(:,1)-Data.P{1}(:,1)).*(Data.P{3}(:,2)-Data.P{1}(:,2))-(Data.P{3}(:,1)-Data.P{1}(:,1)).*(Data.P{2}(:,2)-Data.P{1}(:,2));

(二)已知三点求圆心

参考:https://blog.csdn.net/yanmy2012/article/details/8111600

已知空间三点的坐标为(x1,y1,z1),(x2,y2,z2),(x3,y3,z3),求这三个点所确定的空间圆的圆心坐标和半径。
分析可得约束条件:1、三点共面2、三点到空间圆心坐标的距离相等。
从约束条件可得,4个自由项4个方程可解,可以列出线性代数方程组,即可用消元法求解;即以下的(1)(2)(3)(4)四个方程组成的线性代数方程组

共面约束:
在这里插入图片描述
三点到空间圆心坐标的距离相等约束:
在这里插入图片描述
(1) (2)(3)联解可得(5)(6)同时消去R
在这里插入图片描述
在这里插入图片描述
通过(4)(5)(6)获得关于圆心空间坐标的线性代数方程组
在这里插入图片描述
Matlab代码如下:

function A = cen_of_circle(P1,P2,P3)

syms x1 y1 z1 x2 y2 z2 x3 y3 z3

A1 = y1*z2-y1*z3-z1*y2+z1*y3+y2*z3-y3*z2;
B1 = -x1*z2+x1*z3+z1*x2-z1*x3-x2*z3+x3*z2;
C1 = x1*y2-x1*y3-y1*x2+y1*x3+x2*y3-x3*y2;
D1 = -x1*y2*z3+x1*y3*z2+x2*y1*z3-x3*y1*z2-x2*y3*z1+x3*y2*z1;

A2 = 2*(x2-x1);
B2 = 2*(y2-y1);
C2 = 2*(z2-z1);
D2 = x1^2+y1^2+z1^2-x2^2-y2^2-z2^2;

A3 = 2*(x3-x1);
B3 = 2*(y3-y1);
C3 = 2*(z3-z1);
D3 = x1^2 + y1^2 + z1^2 - x3^2 - y3^2 - z3^2;

X = -inv([A1,B1,C1;A2,B2,C2;A3,B3,C3])*[D1;D2;D3];

x1 = P1(:,1); y1 = P1(:,2); z1 = P1(:,3);
x2 = P2(:,1); y2 = P2(:,2); z2 = P2(:,3);
x3 = P3(:,1); y3 = P3(:,2); z3 = P3(:,3);

A = eval(X');
end

(三)求两向量夹角

A = [1 2 3];
B = [4 5 6];
angle = rad2deg(acos(dot(A,B)/(norm(A)*norm(B))));  %A向量与B向量的角度

(四)求两点间距离

A = [1 2 3];
B = [4 5 6];
D = norm(A-B);              % 求点A与点B间的距离
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值