加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

如何判定一个空间点在四面体内部?

(2010-11-30 16:43:51)
分类: 物理引擎
假定四面体的四个顶点为:
        V1 = (x1, y1, z1)
        V2 = (x2, y2, z2)
        V3 = (x3, y3, z3)
        V4 = (x4, y4, z4)

你测试的空间点为:

        P = (x, y, z)

如果下面的5个行列式有相同的符号,则点P在四面体内:

             |x1 y1 z1 1|
        D0 = |x2 y2 z2 1|
             |x3 y3 z3 1|
             |x4 y4 z4 1|

             |x  1|
        D1 = |x2 y2 z2 1|
             |x3 y3 z3 1|
             |x4 y4 z4 1|

             |x1 y1 z1 1|
        D2 = |x  1|
             |x3 y3 z3 1|
             |x4 y4 z4 1|

             |x1 y1 z1 1|
        D3 = |x2 y2 z2 1|
             |x  1|
             |x4 y4 z4 1|

             |x1 y1 z1 1|
        D4 = |x2 y2 z2 1|
             |x3 y3 z3 1|
             |x  1|

 

需要注意的一些情况:

  • 如果正好 D0=0, 则该四面体是退化的四面体(比如退化成三角形,此时四点共面)。
  • 如果 Di=0(i 不等于0),则P位于四面体的边界面i上 (边界面i是指和Vi相对应的其它三个顶点形成的面)。
  • 如果Di的符号和D0不同,则Di位于边界面i的外边。
  • 如果所有Di的符号都和D0相同,则P 位于边界面i之内(在四个边界面内,就是在四面体之内)。
  • 等式D0 = D1+D2+D3+D4成立。
  • 这个公式能够扩展到任何维的单纯形 (在2D情况下是三角形,在3D情况下是四面体)。
  • 注意:bi = Di/D0 就是通常的重心坐标。
  • 注意:比较Di 和D0的符号仅是判定P和Vi是否在边界面i的同一边。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有