如何在与给定矢量垂直的平面中找到3D点坐标

时间:2019-01-29 05:23:26

标签: math vector geometry computational-geometry vector-graphics

我在3d空间中有两个点,一个点是(x,0,z),另一个是原点(0,0,0),通过这些点,有一条长度为L的通过线从第一个点开始,一直到原点之后,在这条线的末端,有一个垂直于(垂直于该线)尺寸为W x H的平板,该线在该板的中间终止。

假设给出x,z,L,H,W,我需要一种方法来查找所有3D点坐标,这些点在板上形成像素图像的那些点(意味着每个点距其左侧的距离为1) ,右,上,下相邻点)。

附上一张非常难看的图:)我试图说明这个问题(我用两个问号标记了像素点,但我都需要它们)。

谢谢。

ugly_drawing

1 个答案:

答案 0 :(得分:0)

可以定义该平面。但是没有选择方向来唯一地构建网格。

让我们选择OY方向作为基准(因为法线的Y分量为零)。

所以我们有:

法向向量N = (xx, 0, zz) //我重命名了值以避免与坐标混淆 变量

单位法向向量n = (nx, 0, nz),其中

 nx = xx / Sqrt(xx*xx+zz*zz)
 nz = zz / Sqrt(xx*xx+zz*zz)

基点

B = (bx, 0, bz) =  (xx - nx * L, 0, zz - nz * L)

平面中的基本单位

dy = (0, 1, 0)

另一个基本向量

dc = dy x n  //vector product
   = (-bz, 0, bx)

现在可以使用范围为i, j(-W/2..W/2)的整数索引(-H/2.. H/2)生成网格。网格节点坐标:

  x(i, j) = bx - j * bz
  y(i, j) = 0 + i 
  z(i, j) = bz + j * bx