博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数学笔记(二)之平面表示
阅读量:4223 次
发布时间:2019-05-26

本文共 1248 字,大约阅读时间需要 4 分钟。

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

  假设我们知道垂直于平面的法向量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;}

  就这样了~

转载地址:http://bszqi.baihongyu.com/

你可能感兴趣的文章
数据蒋堂 | 报表开发的现状
查看>>
手把手带你复现AI+区块链写码全过程!(附代码&视频)
查看>>
50个“杀手级”AI项目 !(附链接)
查看>>
Python实例介绍正则化贪心森林算法(附代码)
查看>>
Facebook如何运用机器学习进行亿级用户数据处理
查看>>
独家 | 如何解决深度学习泛化理论
查看>>
数据蒋堂 | 谈谈临时性计算
查看>>
独家 | 教你实现数据集多维可视化(附代码)
查看>>
女生节征集令 | 你的数据女神,由你来宠~
查看>>
手把手实战:利用LM神经网络算法自动识别窃电用户(附代码)
查看>>
清华史上最酷炫女生节福利来袭!女神,与我同乘无人车可好?
查看>>
全解今日头条大数据算法原理(附PPT&视频)
查看>>
想知道你在清华100年前的照片是什么样子吗?
查看>>
数据挖掘实战:带你做客户价值分析(附代码)
查看>>
数据院携手汽车工程系,女生节尽展清华大数据风采~
查看>>
机器学习算法清单!附Python和R代码
查看>>
这份深度学习课程笔记获吴恩达点赞
查看>>
清华数据女神评选结果:第一竟然是叉院大神...?
查看>>
手把手教你从零上手Python(付安装地址、代码)
查看>>
数据蒋堂 | 大数据计算语法的SQL化
查看>>