我正在寻找一种算法,可以在一个底部为平面的圆锥体内生成点。
我已经有了沿着创建圆锥体的归一化轴(我们假设它是y轴,因此为(0,1,0))和圆锥的角度(假设为45度)。
我在网上找到的唯一资源是在锥体内生成向量,但它们基于对球进行采样,因此在底部会得到一种“雪糕筒”的效果,而不是底部为圆盘的效果。
以下是该伪代码:
以下图片是我要寻找的。如果能够在表面或内部生成样本,那就更好了。
我已经有了沿着创建圆锥体的归一化轴(我们假设它是y轴,因此为(0,1,0))和圆锥的角度(假设为45度)。
我在网上找到的唯一资源是在锥体内生成向量,但它们基于对球进行采样,因此在底部会得到一种“雪糕筒”的效果,而不是底部为圆盘的效果。
以下是该伪代码:
// Sample phi uniformly on [0, 2PI]
float phi = rand(0, 1) * 2 * PI
// Sample u uniformly from [cos(angle), 1]
float u = rand(0, 1) * (1 - cos(angle * PI/180)) + cos(angle * PI/180)
vec3 = vec3(sqrt(1 - u^2) * cos(phi), u, sqrt(1 - u^2) * sin(phi)))
以下图片是我要寻找的。如果能够在表面或内部生成样本,那就更好了。
![enter image description here](https://istack.dev59.com/CGGJD.webp)