3d &引用;“袋子里的球体”;平面到球面投影

3d &引用;“袋子里的球体”;平面到球面投影,3d,mapping,projection,texture-mapping,3d,Mapping,Projection,Texture Mapping,我正在寻找数学变换,将二维平面上的点[0,1]x[0,1]变换到单位球面上 最常见的投影是经纬度映射,将u和v解释为球坐标的角度(映射u到[0,2PI]和v到[-PI/2,PI/2]) 这会在球体的极点上产生强烈的扭曲。你可以把这种变换想象成将球体包裹在一张邦邦纸上,在纸的两端旋转。这将在这两端造成扭曲 我正在寻找的转换可以是将球体放在一张纸的中间,然后将球体周围的所有边放在一起,在一个点上旋转,这样你就可以得到一个小纸袋,里面有你的球体。这使得“袋子”底部的失真最小,顶部的失真最大——如果从下

我正在寻找数学变换,将二维平面上的点
[0,1]x[0,1]
变换到单位球面上

最常见的投影是经纬度映射,将
u
v
解释为球坐标的角度(映射
u
[0,2PI]
v
[-PI/2,PI/2]

这会在球体的极点上产生强烈的扭曲。你可以把这种变换想象成将球体包裹在一张邦邦纸上,在纸的两端旋转。这将在这两端造成扭曲

我正在寻找的转换可以是将球体放在一张纸的中间,然后将球体周围的所有边放在一起,在一个点上旋转,这样你就可以得到一个小纸袋,里面有你的球体。这使得“袋子”底部的失真最小,顶部的失真最大——如果从下面看,所有方向的失真都是相等的


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

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

假设这个例子是关于形状的,那么我建议使用一个矩形,但是请注意,它的平面表示不是完全矩形的


对于其他选项,请参见。

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

我想你是在找那个。另请参见。

如果使用0到1(即第一象限)的x-y轴绘制问题草图,则使用相同的原点绘制投影的第一个八分之一,其轴从0到pi/2。从原点标记点(1,1),则该点从原点的幅值为根(2)。现在您可以看到,您的点(1,1)无法映射到球体上,因为它将显示在球体外部

2010年。。。哇-现在我正在尝试制作这样的东西,我认为这是一个未来,甚至是现在;)