我遇到了严重问题,解决了下图所示的问题。 假设我们在3D空间中有3个点(蓝点),并且三角形的某个中心基于它们(红点 - 点P)。我们也有这个三角形的法线,所以我们知道我们在谈论哪个半空间。
我需要确定一个点(红色点)的位置取决于两个角度,两个角度都在0-180度范围内。无论alfa = 0和betha = 0角度是如何“锚定”的,重要的是能够扫描整个半球(半径为r)。
http://i.stack.imgur.com/a1h1B.png
如果有人能帮助我,我会非常感激。
亲切的问候, RAV
答案 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
轴L
和N
必须正交且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