数学笔记(二)之平面表示

  关于平面的表示方法,之前也有些模糊的地方,在此顺便一记吧~

  假设我们知道垂直于平面的法向量n,以及平面上的一点p0,如何使用这两个元素来表示该平面呢?

  取平面上的任意一点p,并设d为从点p0到点p的向量,以坐标表示如下:

n = (xn, yn, zn)

  p0 = (x0, y0, z0)

  p = (x, y, z)

d = p - p0 = (x - x0, y - y0, z - z0)

  由于n是垂直于平面的向量,所以n也垂直于平面上的任一向量(这里为d),即nd的点乘为0:

n * = 0

  依然以坐标表示:

  (xn, yn, zn) * (x - x0, y - y0, z - z0) = 0    =>

  xn * (x - x0) + yn * (y - y0) + zn * (z - z0) = 0  =>

  xn * x + yn * y + zn * z + (- xn * x0 - yn * y0 - zn * z0) = 0

  如果设定

  A = xn

  B = yn

  C = zn

  D = - xn * x0 - yn * y0 - zn * z0

  那么就有

  A * x + B * y + C * z + D = 0

  而以上便是平面的表示方法了~

  (注:相关的一些向量知识可以参考这里)

  而关于上面等式中的D,但就数值来看似乎是向量n和点p0做点乘,貌似没啥意义,但是如果我们设置k为从坐标原点到p0点的向量,则有:

= (x0, y0, z0) - (0, 0, 0) = (x0, y0, z0)

  那么

  D = - xn * x0 - yn * y0 - zn * z0 = - (xn * x0 + yn * y0 + zn * z0) = - n * k

  如果n是标准化向量(即模为1),那么D其实可以理解为坐标原点到平面的带符号距离,据此,我们也可以判断空间内任一点与平面的相对关系了~

  拿cocos2d-x中的Plane类型举例,其使用的正是这种方法:

class CC_DLL Plane
{
public:
    
// ...
protected:
    Vec3 _normal; // the normal line of the plane
    float _dist; // original displacement of the normal
};
PointSide Plane::getSide(const Vec3& point) const
{
    float dist = dist2Plane(point);
    if (dist > 0)
        return PointSide::FRONT_PLANE;
    else if (dist < 0)
        return PointSide::BEHIND_PLANE;
    else
        return PointSide::IN_PLANE;
}

  就这样了~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习算法工程师

从0 到1 实现YOLO v3(part two)

本部分是 从0到1 实现YOLO v3 的第二部分 的第二部分,前两部分主要介绍了YOLO的工作原理,包含的模块的介绍以及如何用pytorch搭建完整的YOL...

91540
来自专栏贾志刚-OpenCV学堂

图像特征之局部二值模式

一:局部二值模式(LBP)介绍 局部二值模式(Local Binary Pattern)主要用来实现2D图像纹理分析。其基本思想是用每个像素跟它周围的像素相比...

42360
来自专栏深度学习之tensorflow实战篇

Python多元线性回归-sklearn.linear_model,并对其预测结果评估

在前面的博客已经介绍过多元回归模型,现在这里粗略介绍如下 ? python 实现案例 1、选取数据 #!usr/bin/env python #_*_ c...

1.4K50
来自专栏GAN&CV

从0到1实现YOLO v3(part two)

本部分是 从0到1 实现YOLO v3 的第二部分,前两部分主要介绍了YOLO的工作原理,包含的模块的介绍以及如何用pytorch搭建完整的YOLOv3网络结构...

27940
来自专栏简书专栏

基于RandomForestRegressor的波士顿房价回归预测

2018年8月27日笔记 sklearn官方英文用户使用指南:https://sklearn.org/user_guide.html sklearn翻译中文...

41530
来自专栏漫漫深度学习路

pytorch学习笔记(三):自动求导

auto gradient 本片博文主要是对http://pytorch.org/docs/notes/autograd.html的部分翻译以及自己的理解,如有...

325100
来自专栏Python中文社区

用Python从零开始构造决策树

專 欄 ❈ 作者:weapon,不会写程序的浴室麦霸不是好的神经科医生 ❈ 起步 本章介绍如何不利用第三方库,仅用python自带的标准库来构造一个决策树。 ...

23370
来自专栏瓜大三哥

图像分割(六)

图像分割(六) 之基于FPGA的局部自适应分割 子模块设计 顶层模块gauss_segment_2d 有了以上几个模块,顶层设计就十分简单了。需要例化一个均值...

243100
来自专栏我爱编程

Matplotlib入门

qiangbo.space/2018-04-06/matplotlib_l1/ 入门代码示例 import matplotlib.pyplot as plt ...

40390
来自专栏杨熹的专栏

TensorFlow-1: 如何识别数字

数字识别是机器学习领域中一个经典的问题,是一个看似对人类很简单却对程序十分复杂的问题。识别数字在机器学习任务中的地位和 Hello World 在编程中是一样的...

99800

扫码关注云+社区

领取腾讯云代金券