问题描述
|
我在解决下图所示的问题时遇到了严重问题。
假设我们在3D空间中有3个点(蓝色点),并基于它们有一个三角形的中心(红色点-点P)。我们也有这个三角形的法线,因此我们知道我们在谈论哪个半空间。
我需要确定一个点(红色???点)上取决于两个角度(都在0-180度范围内)的位置是什么。阿尔法= 0和贝塔= 0角如何固定都无关紧要,能够扫描整个半球(半径为r)仅是重要的。
http://i.stack.imgur.com/a1h1B.png
如果有人可以帮助我,我将非常感激。
亲切的问候,
拉夫
解决方法
从图中可以看出,该点在球体上的位置似乎是通过球面坐标的形式给出的。设ѭ0为球的半径;设ѭ1相对于x轴;设
beta
为相对于x-y平面的角度。球上点的笛卡尔坐标为:
x = r * cos(beta) * cos(alpha)
y = r * cos(beta) * sin(alpha)
z = r * sin(beta)
编辑
但是,对于以(X,Y,Z)
为中心的轴(L,M,N)
的一般坐标系,坐标为(如dmuir的答案):
(x,y,z) =
(X,Z)
+ r * cos(beta) * cos(alpha) * L
+ r * cos(beta) * sin(alpha) * M
+ r * sin(beta) * N
轴L
和N
必须正交且and9ѭ。相对于L
给出alpha
,相对于L
-M
平面给出beta
。如果您不知道ѭ7与三角形的点之间的关系,则无法回答该问题。
,您需要在三角形平面以及单位法线N中找到两个单位长度的正交向量L,M,例如。
r *cosβ*cosα* L + r *cosβ*sinα* M + r *sinβ* N