输入球心三维坐标及球半径求算球体的球面坐标数据(C/C++)

近期需要一个输入球心三维坐标以及球半径 得到球体的球面坐标数据这样一个功能(当然球面的点数据密集程度可控------通过角度)


最初使用一个比较LOW的方法 大概思路就是:X平方+Y平方+Z平方 = 半径R平方 
(其实说白了就是在一个立方体中掏出一个空心球)
这个已经实现 但是运算速度很LOW..


之后查到了球面算法:
X=OPcos=rsinφcosθ
Y=OPsin=rsinφsinθ
Z=rcosφ



(这个据说是相关专业的研究生在应试教育中必会且必背下来的..)


之后通过上面的算法成功用C/C++代码实现


效果其实不是特别好.. 尤其当精度高于一定值时 会出现"梯田"的效果 

当精度过高的时候运算速度也降低很多(毕竟点数指数级增长)


下面是本人的

x = 2.959 * 10.0;
y = 21.078 * -10.0;
z = 7.636 * -10.0;
r = 1.6705 * 10.0;

这些数据在 0.5的密度上计算得到的效果图(点数:32400)

输入球心三维坐标及球半径求算球体的球面坐标数据(C/C++)_第1张图片输入球心三维坐标及球半径求算球体的球面坐标数据(C/C++)_第2张图片


之后又测试了下0.2的密度的效果(点数:202500)

输入球心三维坐标及球半径求算球体的球面坐标数据(C/C++)_第3张图片

输入球心三维坐标及球半径求算球体的球面坐标数据(C/C++)_第4张图片

输入球心三维坐标及球半径求算球体的球面坐标数据(C/C++)_第5张图片


总体来看效果就是这样 需要进一步增加密度或减少随自己心情..


下面是代码:

代码传送门



你可能感兴趣的:(C/C++)