我尝试使用球面坐标弯曲平面网格。我在维基百科上的令牌公式,它几乎工作! 但是一些顶点定位在同一个地方。 网格平面位于0,0,0,您可以在此处观察结果:
这是我的代码:
@radius = 4
@oPhi = 0
@oTheta = 0
projection : (vertice) ->
p = Math.sqrt(vertice.x ** 2 + vertice.y ** 2)
c = Math.asin(p/@radius)
phi = Math.asin(Math.cos(c) * Math.sin(@oPhi) + (vertice.y * Math.sin(c) * Math.cos(@oPhi) / p))
theta = @oTheta + Math.atan((vertice.x * Math.sin(c)) / (p * Math.cos(@oPhi) * Math.cos(c) - vertice.y * Math.sin(@oPhi) * Math.sin(c)))
vertice.x = @radius * Math.sin(phi) * Math.cos(theta)
vertice.z = @radius * Math.sin(phi) * Math.sin(theta)
vertice.y = @radius * Math.cos(phi)
感谢您的帮助!