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