3D Math Keynote 3

3D Math Keynote 3算法

一、球的表面积 Surface、球的体积 Volumn:spa

  

二、当物体旋转后,若是经过变换后的旧AABB来顶点来计算新的AABB顶点,则生成的新AABB可能比实际的新AABB大一些。blog

  

  由 旧AABB 快速计算 新AABB的方法。it

  

  若是 m < 0,则取min值参与计算,若是 m > 0,则取max值参与计算。变量

三、多于3个点的最佳平面。算法就是求出全部的n,而后求个平均值。(此公式书中未给出证实过程)方法

  

  使用求和符号,能使公式更简洁一些。im

  

  最佳d值为:img

  

四、点到平面的距离。好比平面外有一点q,求q到平面的距离。时间

  

  

五、三角形的正弦、余弦公式。co

  

  

  海伦公式,让咱们可使用三边长度,计算出面积:

    

六、根据三个顶点坐标,快速计算三角形面积。

  顺时针,依次每条边与x轴围成的面积。

    

  A(e1) + A(e2) + A(e3) 便是三角形面积。

  

  能够看到若是将三角形下移h高度,使得三角形与X轴穿叉,面积实际上不会变。

  A(e1) = (y3+y2-h)(x3-x2)/2,将-h提取出来,获得 -hx3+hx2

  A(e2) = (y1+y3-h)(x1-x3)/2,将-h提取出来,获得 -hx1+hx3

  A(e3) = (y2+y1-h)(x2-x1)/2,将-h提取出来,获得 -hx2+hx1

  能够看到,上面三个A中新增出来的项,恰好相互抵消。因此即便三角形与X轴相互穿叉,上述算法也能获得正确的面积。

  最后,最简单的方法实际是计算叉积,叉积便是面积。

  

七、三角形局部坐标,一般可使用重心坐标。

  

    

  每一个顶点对应的边上的每个点的对应份量为0。

  

  重心坐标不一样于笛卡尔坐标,笛卡尔有2个维度的变量,重点坐标却有3个维度的变化。因为 b1+b2+b3=1,因此实际上,在重心坐标系下,只要两个维度就能唯一肯定一个位置。

八、给定 v1,v2,v3和p,计算 p 的重心坐标。

    

  

  重心坐标实际是面积比。

  

九、计算3D中任意点的重心坐标。

  一种算法是经过抛弃 x,y,z 中的一个份量,将3D问题转化到 2D 中。

  但存在一个问题,若是投影后三点或两点共线怎么办。一种解决方法是,挑选投影面积最大的那一面来计算。实际计算方法就是,抛弃法向量中份量最大的那一个轴。

  

  另外一种算法是使用公式 12.23 中的面积比法,计算p点与各边围成的面积,求出比例。

十、重心或质心。

  

  心里是指到三角形各边相等的点。之因此称之为心里,是由于它是三角形内切圆的圆心。心里是角平分线的交点。

  

  

  外心是到三角形各顶点距离相等的点,是三角形外接圆的圆心。

  

    

    

十一、简单多边形不包含洞,复杂多边形可能包含洞。

  凸多边形任意两点连续均在图形内,凹多边形有可能在图形外。怎样才能知道一个多边形是凹的仍是凸的?一种方法是检查n个顶点的较小角的和(解决凹多边形的问题), 是否为 (n-2)*180。

  

  凸多边形的补角和为 360 度。

  另外一个检测凹凸多边形的方法是每个点的转身,用叉乘来作。

十二、点距直线的最接近点。

    

1三、点距射线的最接近点。

    

1四、点到平面的最接近点。与12中的点到直接的最接近点公式同样,只是多了一维。

  

1五、点到圆或球的最接近点。

    

1六、计算AABB上的最接近点。
  算法是按必定顺序,沿着每条轴将 q 推 B。

  

  

1七、2D 中隐式直接相交性检测。

  

1八、3D中两条射线的相交检测。

  

  

1九、射线和平面的相交性检测。

    

  上述公式是经过代数的方程的方法来解。  

  根据公式,能够提供另外一种理解方法。 d-p0*n 实际上是 p0到平面的距离,d*n实际上是d与n平行的分向量。总距离除以向量步行,便可获得t的值。

 

20、AABB和平面的相交性检测。

  

   动态检测:

    

2一、三平面相交性检测。算法与2D中两直线相交性检测相似,解方程。

    

 

2二、射线和圆、球的相交性检测。

  

  上图中 a能够经过 e到射线的投影计算出来。

  

  b 能够经过 e、a求出来。

  

  f 能够经过 r、b求出来。

  

  t 能够经过 a、f求出来。

  

 

2三、两个圆球的相交性检测。

   两个运动的球须要经过相对运动来计算。

    

  经过相对运动,将问题转化成了以下模型:

  

  根据 cos 定理,有以下公式:

  

    

2四、球和AABB的相交性检测。

  选择 min/ max,取一个最小 magnitude, 看是否小于距离。

2五、球和平面的相交性检测。

  计算圆心到平面的距离,看是否小于r。

  

  若是圆在运行中,如何求解t为什么值时与平面碰撞?

  

  问题转化成了点到平面的距离。

  

 

2六、射线和三角形的相交性检测。

  第一步,计算射线到三角形平面的交点。第二步,经过计算交点的重心主坐标,来判断它是否在三角形中。

2七、射线和AABB的相交性检测。

  书中未详细说明算法。

2八、两个AABB的相交性检测。

  检测两个AABB是否相交很是简单,只要在每一维上检查它们的重合度便可。若是全部维上都没有重合,那么这两个AABB就不会相交。

  动态状况麻烦一点,若是向某方向以d运行,求t时刻相遇。t为全部维上同时重合的第一个点。

  

  全部时间区间的交集,就是两个边界框相交的时间段。

  

2九、

30、

3一、

3二、

3三、

相关文章
相关标签/搜索