2010-04-07 62 views
2

我想确定一个点P(x,y,z)是否在由其中心C(cx,cy,cz),半径R,和垂直于所述圆位于N.确定三维点是否在二维圆内

平面我知道的点P躺在3D空间中的2D圆被定义为:

P = R * cos(t)的ü + ř罪(T)*(ñ X Ù)+ C

其中U是从圆心到圆上任意点的单位向量。但是,如果问题Q,我怎么知道Q在圈内还是圈内?什么是合适的参数t可供选择?我可以比较点Q,看看它们是否在圆圈内?

谢谢。

+0

小心澄清你的符号?这是什么**噪音**?看起来它可能是矢量的大小,但它鼓励其他人在你的问题被清楚地呈现时提供有用的答案。 – 2010-04-07 15:57:30

+0

我试图大胆他们,但他们不会大胆....? ** U **是一个大胆的向量,表示一个向量。 ** N **相同​​。编辑:我通过将它们从“代码”部分中取出来加粗了字母 – Myx 2010-04-07 15:58:45

+0

您尝试查找有关3d鼠标拾取的信息吗? – HyperCas 2010-04-07 16:00:26

回答

10

项目P到包含该圆的平面上,称为P'。 P当且仅当| P - P'|在圆中= 0和| P' - C | < R.

+1

如果我希望在我的支票中包含该点的边界,是否检查| P-C | <= R且| P-P'| = 0? – Myx 2010-04-07 16:13:58

+0

http://en.wikipedia.org/wiki/3D_projection – HyperCas 2010-04-07 16:16:06

+0

假设您所有的坐标都是浮点数,这意味着您在处理“| P - P'| = 0”时应该小心。它几乎不会出现到零,所以你可以做一些类似“| P - P'| MatrixFrog 2010-04-07 16:40:07

3

我应该这样做打破它分成两个部分:

  1. 找出如果点在同一平面上的圆(即看是否该向量的点积从去中心到点,法线为零)

  2. 找出它是否在包含圆的球体内(即,看中心到点的距离是否小于半径)。