擅长:python、mysql、java
<p>信息:我不知道这个想法是否已经是一个专利知识产权(在你的地区),或不是,或如何找到,或其他什么意思。我这样做是为了好玩。:)</p>
<p>但是,这是牛肉:</p>
<ul>
<li><p><strong>第1步:近似:</strong>为了提高效率,将两个对象都视为球体(使用外层球体)。计算它们的<strong><a href="http://en.wikipedia.org/wiki/Euclidean_distance" rel="nofollow">distance</a></strong>(在它们的两个中心点之间),以确定它们是否足够接近以相交。如果它们不可能相交(因为它们的距离大于两个球体的半径之和),则快速返回false。</p></li>
<li><p><strong>第2步:精确计算:</strong>这是一种简单的方法:将圆锥体解释为一批称为<strong><a href="http://en.wikipedia.org/wiki/Voxel" rel="nofollow">voxels</a></strong>(或<a href="http://www.lego.com/en-us/createandshare" rel="nofollow">legos</a>)的三维像素:选择您认为可以接受的任何分辨率(粒度)(可能为0.01)。创建一个向量,从(0,0,0)指向圆锥体体积内的任何体素点(从已命名为“顶点”的点开始)。如果给定立方体中存在该体素的坐标,则返回true。根据所选的粒度,对每个可以为圆锥体对象计算的体素重复此操作。</p></li>
<li><p><strong>步骤3:如果没有匹配项</strong>,则返回false。</p></li>
</ul>
<p>优化:通过考虑立方体的内部球体,确定是否有任何给定的三维点在立方体内部的函数可能是可优化的。也就是说,任何给定的三维点都在立方体内,如果它离立方体内部球体的中心足够近,就在这个球体内。乐趣开始了,当你开始用额外的球体填充空的立方体角落以获得更多的优化(这是完全可选的)。在</p>
<p>我相信第二步还有进一步的优化。然而,这种方法的好处是可以自由地调整粒度,在计算时间和计算精度之间进行微调。在</p>
<p>还可以创建一个解算器,该解算器在多次迭代中自动降低粒度。这意味着精度会随着时间的推移而提高(以获得更好的分辨率)。在</p>