求空间平面方程
时间:2020-04-26
本文章向大家介绍求空间平面方程,主要包括求空间平面方程使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、已知平面上一点p、法线N 求平面方程
法向量N: N(a,b,c) 点P: p(x0, y0, z0) 平面方程: a(x-x0)+b(y-y0)+c(z-z0)=0;
A = a
B = b
C = c
D = -1*(a*x0+b*y0+c*z0)
Ax+By+Cz+D=0;
综上所述方程Ax+By+Cz+D=0各参数的意义
(A,B,C)法向量的分量,D,原点到平面的距离
2、已知平面三点P1(x1, y1, z1), P2(x2, y2, z2), P3(x3, y3, z3), 求平面方程
a、线性解法
求过三zhidao点:M₁(x₁,y₁,z₁);M₂(x₂,y₂,z₂);M₃(x₃,y₃,z₃)的平面的方法: 设过M₁的平面方程为 A(x-x₁)+B(y-y₁)+C(z-z₁)=0.................① M₂,M₃都在此平面上,因此它们的坐标都满足方程①;将它们的坐标依专次代入得: A(x₂-x₁)+B(y₂-y₁)+C(z₂-z₁)=0.............② A(x₃-x₁)+B(y₃-y₁)+C(z₃-z₁)=0..............③ ①②③是关于A、B、C的线性方程组,此方程组有非零解的充要条件是关于A、B、C的系数 行列属式∆=0;即:
求过三zhidao点:M₁(x₁,y₁,z₁);M₂(x₂,y₂,z₂);M₃(x₃,y₃,z₃)的平面的方法:
设过M₁的平面方程为 A(x-x₁)+B(y-y₁)+C(z-z₁)=0.................①
M₂,M₃都在此平面上,因此它们的坐标都满足方程①;将它们的坐标依专次代入得:
A(x₂-x₁)+B(y₂-y₁)+C(z₂-z₁)=0.............②
A(x₃-x₁)+B(y₃-y₁)+C(z₃-z₁)=0..............③
①②③是关于A、B、C的线性方程组,此方程组有非零解的充要条件是关于A、B、C的系数
行列属式∆=0;即:
打开此行列式,就可得到所求平面的方程。
D==
a1·b2·c3+b1·c2·a3+c1·a2·b3-a3·b2·c1-b3·c2·a1-c3·a2·b1(注意对角线就容易记住了)
这里一共是六项相加减
b、克莱姆法则
平面方程:
Ax+By+Cz+D=0 (参数,A,B,C,D是描述平面空间特征的常数)
//根据3个点,计算空间平面的方程 //Ax+By+Cz+D=0 //输入参数:in_points---空间中3个点的坐标,大小为3;输入点>3时,只取前3个点 //输出参数A,B,C,D //返回值:0---计算成功;-1----计算失败 int GetPlaneEquation(vector<PointT> &in_points, float &A, float &B, float &C, float &D) { if( in_points.size() <3 ) { cerr<<"GetPanelEquation(...)函数中输入点的数量小于3."<<endl; return false; } A = in_points[0].y*(in_points[1].z-in_points[2].z) + in_points[1].y*(in_points[2].z-in_points[0].z) + in_points[2].y*(in_points[0].z-in_points[1].z); B = in_points[0].z*(in_points[1].x-in_points[2].x) + in_points[1].z*(in_points[2].x-in_points[0].x) + in_points[2].z*(in_points[0].x-in_points[1].x); C = in_points[0].x*(in_points[1].y-in_points[2].y) + in_points[1].x*(in_points[2].y-in_points[0].y) + in_points[2].x*(in_points[0].y-in_points[1].y); D = -in_points[0].x*(in_points[1].y*in_points[2].z - in_points[2].y*in_points[1].z) - in_points[1].x*(in_points[2].y*in_points[0].z - in_points[0].y*in_points[2].z) - in_points[2].x*(in_points[0].y*in_points[1].z - in_points[1].y*in_points[0].z); return 0; }
c、其他
A = (y2 - y1)*(z3 - z1) - (z2 -z1)*(y3 - y1); B = (x3 - x1)*(z2 - z1) - (x2 - x1)*(z3 - z1); C = (x2 - x1)*(y3 - y1) - (x3 - x1)*(y2 - y1); 即得过P1,P2,P3的平面方程 方程也可写为 Ax + By + Cz + D = 0 (一般式) 其中D = -(A * x1 + B * y1 + C * z1)
d、也可以三个点 构造两个向量 进行叉乘 得到平面法线,再利用点法式求得。
原文地址:https://www.cnblogs.com/lovebay/p/12777556.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java自动化测试(web自动化测试框架2 29)
- 精讲RestTemplate第9篇-如何通过HTTP Basic Auth认证
- 【Rust日报】2020-09-14 测试数据表明, Rust 可以帮你省钱!
- 【43期】盘点那些必问的数据结构算法题之二叉树基础
- 精讲RestTemplate第8篇-请求失败自动重试机制
- 精讲RestTemplate第7篇-自定义请求失败异常处理
- 精讲RestTemplate第10篇-使用代理作为跳板发送请求
- 精讲响应式WebClient第5篇-请求超时设置与异常处理
- 精讲响应式WebClient第4篇-文件上传与下载
- 【大家的项目】Rust Base62 库学习和分析
- ES2020 中 Javascript 10 个你应该知道的新功能
- Webpack5 跨应用代码共享 - Module Federation
- 【Rust日报】2020-09-16 - Rust 2021 规划
- 精讲响应式WebClient第3篇-POST、DELETE、PUT方法使用
- C++的黑魔法: 用四种方式实现add!