通过三点计算一个平面 ax+by+cz+d = 0
简介
如何通过三个点计算一个平面的的方程。
数学相关
A(0,1,0);
B(1,0,0);
C(1,1,0);
\]
\]
\vec{AB} \times \vec{AC} =
\left(
\begin{array}{ccc}
i & j & k\\
1 & -1 & 0\\
1 & 0 & 0
\end{array}
\right)
\]
=
\left(
\begin{array}{cc}
-1 & 0\
0 & 0
\end{array}
\right){i}
+
\left(
\begin{array}{cc}
1 & 0\
1 & 0
\end{array}
\right)
+
\left(
\begin{array}{cc}
1 & -1\
1 & 0
\end{array}
\right)_
(0,0,1) = (a,b,c)
\end{equation}$ % 注意观察计算某个向量就把某一列遮住,然后即可计算
得到
a(x - x_{0}) + b(y - y_{0}) + c(z- z_{0}) = 0
==>
0(x - x_{0}) + 0(y - y_{0}) + 1(z- z_{0}) = 0
==> 带入 A 点的坐标
z = 0 即标准答案~~
C++ 实现
void SimpleMesh::computeABCD(Mesh::Point &point1, Mesh::Point &point2, Mesh::Point &point3, double& a, double& b, double & c, double &d)
{
Mesh::Normal vecP1P2 = point2 - point1;
Mesh::Normal vecP1P3 = point3 - point1;
Mesh::Normal vecNormal = vecP1P2 % vecP1P3;
double length = getDis(vecNormal, vecNormal);
a = vecNormal[0] / length;
b = vecNormal[1] / length;
c = vecNormal[2] / length;
// 带入point1
//a * ( x - point1[0] ) + b * (y - point1[1]) + c * (z - point1[2]) = 0
d = a * (-1) * point1[0] + b * (-1) * point1[1] + c * (-1) * point1[2];
}
通过三点计算一个平面 ax+by+cz+d = 0的更多相关文章
- KnockoutJS 3.X API 第三章 计算监控属性(5) 参考手册
计算监控属性构造参考 计算监控属性可使用以下形式进行构造: ko.computed( evaluator [, targetObject, options] ) - 这种形式是创建一个计算监控属性最常 ...
- 【翻译自mos文章】怎么正确的计算一个ip地址的subnet id?
怎么正确的计算一个ip地址的subnet id? 来源于: How to calculate the correct subnet for an interface (文档 ID 1059759.1) ...
- python 练习题:定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程ax^2+bx+c=0的两个解
请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程 ax^2+bx+c=0的两个解. 提示: 一元二次方程的求根公式为: x1 = (-b + math.sqrt((b ...
- Python程序计算ax^2+bx+c=0方程根
程序用来计算ax^2+bx+c=0的两个根,有些异常暂时无法处理: #!/usr/bin/python # -*- coding: utf-8 -*- #当程序存在中文时,注释表明使用utf-8编码解 ...
- webrtc QOS笔记三 RTT计算,SRS增加XR
webrtc QOS笔记三 RTT计算,SRS增加XR RTT计算方式 WebRTC中目前有两种方式计算RTT: 基于媒体流发送端的计算(默认开启).通过Sender Report(SR)与Recei ...
- Linux内核设计第三周——构造一个简单的Linux系统
Linux内核设计第三周 ——构造一个简单的Linux系统 一.知识点总结 计算机三个法宝: 存储程序计算机 函数调用堆栈 中断 操作系统两把宝剑: 中断上下文的切换 进程上下文的切换 linux内核 ...
- js字符串长度计算(一个汉字==两个字符)和字符串截取
js字符串长度计算(一个汉字==两个字符)和字符串截取 String.prototype.realLength = function() { return this.replace(/[^\x00-\ ...
- 用Regex类计算一个字符串出现次数是最好方法【转载】
我的一个朋友问我,怎么在c#或vb.net中,计算一个字符串中查找另一个字符串中出现的次数,他说在网上打了好多方法,我看了一下,有的是用replace的方法去实现,这种方法不是太好,占资源太大了.其实 ...
- PHP计算一个目录文件大小方法
<?php $dirfile='../hnb'; /** *计算一个目录文件大小方法 *$dirfile:传入文件目录名 **/ function dirSize($dirfile) { $di ...
- Python计算一个项目中含有的代码行数
最近想要知道以前做过的project有多少行代码,因为文件太多,直接手工数效率太低,于是编写一个python程序用来计算一个project有多少代码行. 首先,在一个项目中,有很多子文件夹,子文件夹中 ...
随机推荐
- 如何在Uniapp项目中引入uni_modules中的依赖?
在Uniapp项目中引入uni_modules中的依赖分为以下几种情况: 对于通用组件: 如果你已经通过HBuilderX插件市场安装了某个uni_modules组件,通常只需在页面的.vue文件中按 ...
- SaltStack 远程命令执行中文乱码问题
问题 我在一台服务器上写了一个简单的 Python 脚本 haha.py,内容如下: [root@localhost ~]# cat haha.py print("你好") 当我在 ...
- Linux操作系统(中)
上一篇分享了一些Linux操作系统最基本的一些命令和基础知识,下面,要分享的还是Linux操作系统的一些内容,因为在做网安这方面,Linux会经常用到而且也很重要,好了,废话不多说,要开始了. 在Li ...
- K8s新手系列之Pod容器中的command和args指令
概述 command和args是containers下的两个指令,类似Dockerfile中的ENTRYPONIT和CMD指令. 官方文档地址:https://kubernetes.io/zh-cn/ ...
- Vue之“表单修饰符”
1.lazy:失去焦点时处理 案例1 2.number:限制只能输入数字 案例1 3.trim:去掉前后空格 案例1
- 【译】.NET Aspire 和 Azure Functions 集成预览版
您是否曾经为 serverless 技术集成到您现有的 .NET 项目中而挣扎过?Visual Studio 的最新更新已经覆盖了该领域.向 .NET Aspire 与 Azure Functions ...
- Spring 注解之@RequestHeader注解:获取请求头参数
基本用法 Spring MVC提供了 @RequestHeader注解,其作用是将请求头中的参数值映射到控制器的参数中.常用属性如下: name:header值被绑定到的参数名称(The name ...
- RabbitMq安装、配置
#安装 apt install rabbitmq #启动 rabbitmqctl start_app #查看状态 rabbitmqctl status #退出 rabbitmqctl stop #gu ...
- 处理日期和时间的chrono库
C++11中提供了日期和时间相关的库chrono,通过chrono库可以很方便地处理日期和时间,为程序的开发提供了便利.chrono库主要包含三种类型的类:时间间隔duration.时钟clocks. ...
- 一文搞懂K8s中的RBAC认证授权
概述 官方文档: https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/authorization/ https://kubern ...