“球形在一个袋子里”平面到球形投影

时间:2010-09-10 15:26:35

标签: 3d mapping projection texture-mapping

我正在寻找数学变换来将2D平面[0,1]x[0,1]上的点转换到单位球上。

最常见的投影是纬度 - 经度映射,将uv解释为球面坐标的角度(地图u[0,2PI]和{{1}到v

这会对球体的极点产生强烈的扭曲。人们可以把这种转变想象成将球体包裹成两端旋转纸张的糖果纸。这会在这两端产生扭曲。

我正在寻找的转变可能是将球体放入纸张中间并将球体四周放在球体周围并将它们一起旋转到一个位置上,这样你就得到了一个小纸袋。其中的球体。这可以使“袋子”底部的最小变形和顶部最大的变形 - 如果从下面看,变形在所有方向都是相等的。

有人可以告诉我如何计算这种映射吗?

4 个答案:

答案 0 :(得分:3)

对于您描述的映射,您可以使用极坐标:(x,y) - >(r,alpha),其中r在[0,1]中,表示距离中心的距离之间的比率矩形O(0.5,0.5)到当前点P(x,y),以及该段在当前α值时的最大长度。然后将r映射到[-PI / 2,PI / 2]和alpha到[0,2PI]。

答案 1 :(得分:2)

正确的答案取决于保留原始需要的属性,因为每个不同的地图投影都以不同的方式扭曲。一些保留区域,一些保留角度,一些保留距离。

假设情况与形状有关,那么我建议使用Dymaxion map,但请注意其平面表示不是完全矩形。

有关其他选项,请参阅Colorado University上的列表。

答案 2 :(得分:2)

答案 3 :(得分:0)

如果使用从0到1(即第一象限)的x-y轴绘制问题草图,则使用相同的原点绘制投影的第一个八分圆,其轴从0到pi / 2。从原点标记点(1,1),然后从原点开始的这个点的大小是根(2)。您现在可以看到您的点(1,1)无法映射到球体上,就像它出现在球体外部一样。