开发学院软件开发VC 坐标变换 阅读

坐标变换

 2008-02-26 20:28:17 来源:WEB开发网   
核心提示:摘要坐标变换是图形学中很基本的操作,无论绘制二维还是三维图形都会遇到,坐标变换,下面将会讲到: 如何根据坐标架进行点的坐标变换, 如何根据坐标架生成变换矩阵,得到的 p1 相当于平移 WC 和 frame 重合坐标原点的坐标架中的点,接下来, 如何通过矩阵作点的坐标变换, 曲线、曲面方程如

摘要

坐标变换是图形学中很基本的操作。无论绘制二维还是三维图形都会遇到。下面将会讲到:

  1. 如何根据坐标架进行点的坐标变换。
  2. 如何根据坐标架生成变换矩阵。
  3. 如何通过矩阵作点的坐标变换。
  4. 曲线、曲面方程如何作变换。

1、如何根据坐标架进行点的坐标变换

首先坐标架定义成:

struct PNT3D{
  double x,y,z;
};
struct FRAME{
  PNT3D O, OX, OY, OZ;
};

假设有一个点 p 定义在 frame 所在坐标系 WC(World Coordinate) 之中,也就是说 p 在 frame 之外。为了将 p 转入 frame,我们首先需要作平移 p1 = p - frame.O; 这个时候 p1 相当于定义在一个将 WC 平移到 frame.O 的一个坐标架之中。这个坐标架和 frame.O 供用坐标原点,但是三个坐标轴并不一定相同。为了得到 frame 中的三个坐标分量我们只须将 p1 和三个基矢量作点积 :

WC->frame 变换公式:
p2.x = p1*frame.OX = (p-frame.O)*frame.OX;
p2.y = p1*frame.OY = (p-frame.O)*frame.OY;
p2.z = p1*frame.OZ = (p-frame.O)*frame.OZ;

其中 * 代表点积。这里所得到的 p2 就是 WC 中的 p 在 frame 中对应的点。到此为止我们完成了电从坐标架之外变换到坐标架内。同样的,我们也可以采用简单的方法把点从坐标架内变换到坐标架之外。假设 p 是 frame 之内的点,首先

p1 = p.x*frame.OX + p.y*frame.OY + p.z*frame.OZ;

上面的公式将 p 的各个分量作为权值将三个坐标架的基矢量累加起来,得到的 p1 相当于平移 WC 和 frame 重合坐标原点的坐标架中的点。接下来,自然是处理平移

frame->WC 变换公式:
p2 = p1 + freame.O;
 = p.x*frame.OX + p.y*frame.OY + p.z*frame.OZ + frame.O;

p2 就是转换到 WC 的点。

1 2 3  下一页

Tags:坐标 变换

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接