我需要一个函数,对在三维中的圆返回点。

在圆应“帽”,由点A和B以及它的半径所限定的线段。每个帽垂直于所述线段。并在其中一个端点居中。

这里是一个低劣图

有帮助吗?

解决方案

设n是在从A到B,即,N =(B-A)/长度(A-B)的方向上的单位向量。第一步是找到两个以上向量X和Y,使得{N,X,Y}形成的基础。你想要两个以上向量该装置,使得所有对{N,X,Y}的是彼此垂直的,并且还使得它们所有的单位矢量。想想这另一种方式是,你要创建一个新的坐标系,其X轴线与线段。你需要找到在Y轴和Z轴的方向指向矢量。

请注意,有X和Y.你无限多的选择,只是需要以某种方式找到两个这项工作。

要做到这一点的一种方法是首先找到矢量{N,W,V}其中,N是从上方和W和V是两个的(1,0,0),(0,1,0),和( 0,0,1)。挑为W上的两个向量和V对应于N.所以最小的坐标,如果N =(0.31,0.95,0),那么你选择(1,0,0)和(0,0,1)用W和V.(数学怪胎注:采摘W和V确保的这种方式,{N,W,V}跨度,R 1a 3)。然后你擦上的施密特过程以{N,W,V }来获得向量{N,X,Y}如上。请注意,您所需要的矢量N是第一载体,这样它不会被处理改变。

所以,现在你有两个矢量的垂直于该线段和垂直于彼此。此装置上围绕一个圆的点是X * COS T + Y *罪吨+ A其中,0 <= T <2 * PI。这是完全一样在两个维度上的圆的通常的描述;如上所述它刚刚写入的新的坐标系英寸

其他提示

正如David诺曼注意的关键是找到两个正交单位矢量X,Y相正交的N.然而,我认为一个更简单的计算这些方法是通过寻找映射N到的倍数一家之主反射Q(1 ,0,0),然后虽然这可能听起来有点复杂它归结为取为X的(0,1,0的图像)Q和Y如下中(0,0,1的图像)Q.下:

S =(N [0]> 0.0)? 1.0:-1.0

T = N [0] + S; F = -1.0 /(S * T);

X [0] = F * N [1] * T; X [1] = 1 + F * N [1] * N [1]; X [2] = F * N [1] * N [2];

Y [0] = F * N [2] * T; Y [1] = F * N [1] * N [2]; Y [2] = 1 + F * N [2] * N [2];

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top