使用GPU硬件在三个球体之间的交叉点产生的点

时间:2011-06-14 20:05:13

标签: opengl cuda geometry gpu hardware

有一些解析表达式可以计算三个穿透球体之间重叠产生的曲线。还有使用网格或其他方法的近似方法,计算属于该部分的准确度更高或更低的点。我想知道对于后者,可以使用来自GPU,CUDA或OpenGL的特殊硬件功能以某种方式进行计算。我需要它用于非常计算密集的数字运算程序,因此琐碎的实现无效,因为它们非常慢,这就是我考虑GPU选项的原因

1 个答案:

答案 0 :(得分:1)

为了测试点(x,y,z)是否位于以(a,b,c)为中心且半径为r的球体中,测试是:

(x - a)^2 + (y - b)^2 + (z - c)^2 < r^2

测试点是否在多个球体中只是类似表达式的and。这只需要减法,乘法和比较,不需要特殊的硬件功能。你可以写一个没有问题的CUDA内核。

可能适用的最接近的“专用硬件”是CUDA中的rsqrtf()函数,它使用单个硬件指令以单精度计算1 / sqrt(x),达到良好的精度。您可以使用它来帮助计算给定球体的x和y值的z值,这对于解决此问题的更复杂的点生成算法非常有用。

相关问题