如何确定半球的点x-y-z坐标?

时间:2011-05-24 13:49:17

标签: computational-geometry linear-algebra

我遇到了严重问题,解决了下图所示的问题。 假设我们在3D空间中有3个点(蓝点),并且三角形的某个中心基于它们(红点 - 点P)。我们也有这个三角形的法线,所以我们知道我们在谈论哪个半空间。

我需要确定一个点(红色点)的位置取决于两个角度,两个角度都在0-180度范围内。无论alfa = 0和betha = 0角度是如何“锚定”的,重要的是能够扫描整个半球(半径为r)。

http://i.stack.imgur.com/a1h1B.png

如果有人能帮助我,我会非常感激。

亲切的问候, RAV

2 个答案:

答案 0 :(得分:1)

从图中看,球体上的点的位置看起来好像是spherical coordinates的形式。设r为球体的半径;让alpha相对于x轴给出;让beta成为相对于x-y平面的角度。球体上点的笛卡尔坐标是:

x = r * cos(beta) * cos(alpha)
y = r * cos(beta) * sin(alpha)
z = r * sin(beta)

修改

但是对于以(L, M, N)为中心的轴(X, Y, Z)的一般坐标系,坐标为(如dmuir的答案):

(x, y, z) = 
   (X, Y, Z) 
   + r * cos(beta) * cos(alpha) * L 
   + r * cos(beta) * sin(alpha) * M 
   + r * sin(beta) * N

LN必须正交且M = cross(N, L)。相对于alpha给出L,相对于beta - L平面给出M。如果你不知道L与三角形的点有什么关系,那么这个问题就无法回答了。

答案 1 :(得分:0)

你需要在三角形平面和单位法线N中找到两个单位长度的正交矢量L,M表示。球体上的点是

r * cos(beta)* cos(alpha)* L + r * cos(beta)* sin(alpha)* M + r * sin(beta)* N