Primitive Collision Detecting (6)

原创 2006年06月04日 21:50:00

Sphere & AABB

Sphere:   | P – C | <= R

AABB :A  { V3d inf, sup;}

 

           //摘自Real Time Rendering

 

           d = 0;

           for each i [x, y, z]

            {

               if ( C.i < A.inf.i )

              {

              d += (C.i –A.inf.i)^2;
              }

              else

              if ( C.i > A.sup.i )

              {

              d += (C.i –A.sup.i)^2;
               }

           }

 

 if ( d > R^2 )return No Intersection;

 

           return Intersectant;

 

 

Sphere & OBB

Sphere:   | P – Q | <= R

OBB :     {  V3d C, U, V, W;

  V3d L; }      //C是中心点坐标,U、V、W是三个轴方向,L的三个分量是U、V、W是三个方向的半长,表示Box长宽高各一半大小

 

Method(1)

             做空间变换,使得变成Sphere & AABB的相交判断,这种做法是Real Time Rendering上写的

 

Method(2)

             S = Q – C;

             x = S • U;

             y = S • V;

             z = S • W;

 

      d = 0;

       for each i [x, y, z]

{

          if ( i < -L.i )

{

              d += (i + L.i)^2;

}

           else

          if (i > L.i )

{

              d += (i –L.i)^2;

}

}

 

      if ( d > R^2 )return No Intersection;

 

       return Intersectant;

 

Ellipsoid & AABB

Ellipsoid:    (x - x0)^2 / a^2 + (y - y0)^2 / b^2 + (z - z0)^2 / c^2 <= 1       (a>0, b>0, c>0)

AABB   :  A  { V3d inf, sup;}

 

Method(1)

                    做空间变换,将Ellipsoid变换成Sphere,然后做Sphere & AABB的相交判断

 

Method(2)

                    P0 = { x0, y0, z0 };

           d = 0;

           for each i [x, y, z], j ∈ [a, b, c]

           {

              if ( P0.i < A.inf.i )

               {

              d += (P0.i –A.inf.i)^2 / j^2;
              }

               else

              if ( P0.i > A.sup.i )

              {

              d += (P0.i –A.sup.i)^2 / j^2;
              }

            }

 

 if ( d > 1 )  return No Intersection;

 

           return Intersectant;

 

Ellipsoid& OBB

Ellipsoid:    (x - x0)^2 / a^2 + (y - y0)^2 / b^2 + (z - z0)^2 / c^2 <= 1       (a>0, b>0, c>0)

OBB   :  {   V3d C, U, V, W;

  V3d L; }

 

Method(1)

                    做空间变换,将Ellipsoid变换成Sphere,然后做Sphere & OBB 的相交判断

 

Method(2)

                    做空间变换,将OBB变换成AABB,然后做Ellipsoid & AABB的相交判断

 

Method(3)

                    做两次空间变换,将Ellipsoid变换成Sphere,OBB变换成AABB,然后做Sphere & AABB的相交判断

 

Method(4)

             P0 = { x0, y0, z0 };

             S = P0 – C;

             x = S • U;

             y = S • V;

             z = S • W;

 

       d = 0;

       for each i [x, y, z], j ∈ [a, b, c]

{

          if ( i < -L.i )

{

              d += (i + L.i)^2 / j^2;

}

          else

          if ( i > L.i )

{

              d += (i –L.i)^2 / j^2;

}

}

 

       if ( d > 1 )  return No Intersection;

 

return Intersectant;

 

 

Line Segment & Sphere, Optimized

Line Seg:  P = P0 + t * V         t ∈ [0, 1]

Sphere :  | P – C | <= R

 

//摘自Real Time Rendering

          L = C – P0;

s = V • L / |V|;

l2 = L^2;

if ( s < 0 && l2 > r^2 )   return No Intersection;

 

m2 = l2 – s^2;

if ( m2 > r^2 )           return No Intersection;

 

returnIntersectant;

//q = sqrt(r^2 – m^2);

//if ( l^2 > r^2 ) t = (s – q) / |V|;

//elset = (s + q) / |V|

           



版权声明:本文为博主原创文章,未经博主允许不得转载。

java的primitive主数据类型和引用

前言: 在java中,变量分为两种, 一种是primitive主数据类型,也称之其为基本数据类型, 还有一种是引用数据类型;下面就这两种类型分别展开进行讨论; primitive主数据类型 pri...
  • u010661782
  • u010661782
  • 2016年05月25日 22:43
  • 2000

<Head First Java>学习笔记--第三章:primitive主数据类型和引用

Java变量有两种:primitive主数据类型和引用。 变量就像是杯子,是一种容器,承载某些事物,它有大小与类型。 声明变量Java注重类型,只有类型匹配的才能通过编译。像下面的就无法通过编译...
  • encourage2011
  • encourage2011
  • 2015年04月21日 19:46
  • 1990

Cesium之Primitive相关探索

Primitive: 它代表着场景(scene)中的几何体,这个几何体可以是一个几何实例,或者由一组几何实例合并而成,即便它们是不同种类的几何体,例如一个矩形和一个椭球。 primitive通过把...
  • u013929284
  • u013929284
  • 2016年10月07日 15:46
  • 1597

【ECCV2016】Detecting Text in Natural Image with Connectionist Text Proposal Network

本文的方法最大亮点在于把RNN引入检测问题(以前一般做识别)。文本检测,先用CNN得到深度特征,然后用固定宽度的anchor来检测text proposal(文本线的一部分),并把同一行anchor对...
  • zchang81
  • zchang81
  • 2017年07月15日 15:02
  • 440

opencv 第10天 Detecting and Matching Interest Points

Detecting Harris corners int main() { Mat cornerStrength; Mat image = imread("D:\\images\\church01...
  • zhouzhouzf
  • zhouzhouzf
  • 2013年07月11日 10:33
  • 3150

Detecting Near-Duplicates for Web Crawling - simhash与重复信息识别

随着信息爆炸时代的来临,互联网上充斥着着大量的近重复信息,有效地识别它们是一个很有意义的课题。例如,对于搜索引擎的爬虫系统来说,收录重复的网页是毫无意义的,只会造成存储和计算资源的浪费;同时,展示重复...
  • meijia_tts
  • meijia_tts
  • 2012年09月20日 17:16
  • 8201

Web Service and primitive SOA

  • 2014年06月27日 21:26
  • 1.25MB
  • 下载

7series_hdl_primitive_library

  • 2014年10月27日 22:10
  • 12.64MB
  • 下载

data augmentation for object detecting目标检测xml文件扩增(旋转实现)

背景描述: 在利用CNN做目标检测时,数据量不足时,旋转源图像进行数据的扩充。例: 源图像如下图所示: 标记所得xml文件中目标信息如下: airplane U...
  • yinhuan1649
  • yinhuan1649
  • 2017年12月09日 21:25
  • 37

Detecting Texts of Arbitrary Orientations in Natural Images(总结)

  • superlab403
  • superlab403
  • 2016年11月19日 22:03
  • 115
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Primitive Collision Detecting (6)
举报原因:
原因补充:

(最多只允许输入30个字)