2016-11-07 63 views
0

如果我有一个近似的球体,我该如何映射球体的顶点以形成(矩形)四面体?如何将球体映射到四面体?

我目前的做法是将球体的所有顶点映射到四面体的四个顶点中的一个顶点。不过,如果可能的话,我希望它们均匀分布。

我会感谢任何方法或解决方案。

+1

虽然一个有趣的问题,你可能有更多的运气与[computergraphics.se]或这个问题甚至[math.se],这是不太实际的编程导向,可以帮助您更与更广泛的算法指导。 –

+0

谢谢,我会在那里发表我的问题。 – noobprogrammer

+0

但请确保不要将您的问题交叉发送到多个网站,这非常令人沮丧。选择一个站点并将其发布到那里。或者将其标记为迁移。 –

回答

1

想一想,它的一种方式是想象一个四面体内的球体,并想象从球体中心投射一束光线直到它切割四面体。

获得四面体中点的方程有点棘手。也许最容易想象它嵌入在边长为2的立方体中,顶点在(1,1,1),(-1,-1,1),(1,-1,-1),(-1,1, -1)。面的方程式是x + y + z = 1, x - y - z = 1, - x + y - z = 1, - x - y + z = 1

因此对于单位球体上的给定点x = sin(theta) cos(phi), y = sin(theta) sin(phi), z = cos(theta)。我们只需要找到满足四个方程之一的点(r x,r y,r z)。举例来说,我们可能有r x + r y + r z = 1。如果我们知道x,y,z它很容易解决r:r = 1/(x+y+z)。这是一个简单的方法,计算r1 = 1 /(x + y + z),r2 = 1 /(xyz),r3 = 1 /( - x + yz),r4 = 1 /( - x-y + z)。丢弃任何负值并取其余值中的最小值。

这是使用这种技术的球体的投影。

enter image description here

+0

r1,r2,r3或r4可能相等吗?我将如何处理? – noobprogrammer

+0

这里没有问题。我们所要做的就是找到射线上最接近原点的点。如果光线通过边缘,那么它将以相同的距离穿过两个平面,所以r1 = r2说。如果它通过一个顶点,那么三个半径将是相等的,全部给出相同的点。 –