输入球心三维坐标及球半径求算球体的球面坐标数据(C/C++)
近期需要一个输入球心三维坐标以及球半径 得到球体的球面坐标数据这样一个功能(当然球面的点数据密集程度可控------通过角度)
最初使用一个比较LOW的方法 大概思路就是:X平方+Y平方+Z平方 = 半径R平方
(其实说白了就是在一个立方体中掏出一个空心球)
这个已经实现 但是运算速度很LOW..
之后查到了球面算法:
X=OPcos=rsinφcosθ
Y=OPsin=rsinφsinθ
Z=rcosφ
效果其实不是特别好.. 尤其当精度高于一定值时 会出现"梯田"的效果
最初使用一个比较LOW的方法 大概思路就是:X平方+Y平方+Z平方 = 半径R平方
(其实说白了就是在一个立方体中掏出一个空心球)
这个已经实现 但是运算速度很LOW..
之后查到了球面算法:
X=OPcos=rsinφcosθ
Y=OPsin=rsinφsinθ
Z=rcosφ
(这个据说是相关专业的研究生在应试教育中必会且必背下来的..)
效果其实不是特别好.. 尤其当精度高于一定值时 会出现"梯田"的效果
当精度过高的时候运算速度也降低很多(毕竟点数指数级增长)
下面是本人的
x = 2.959 * 10.0;
y = 21.078 * -10.0;
z = 7.636 * -10.0;
r = 1.6705 * 10.0;
这些数据在 0.5的密度上计算得到的效果图(点数:32400)
之后又测试了下0.2的密度的效果(点数:202500)
总体来看效果就是这样 需要进一步增加密度或减少随自己心情..
下面是代码: