点的三维旋转坐标及在屏幕上的坐标

来源:互联网 发布:p2p网络理财产品好吗 编辑:程序博客网 时间:2024/09/21 06:38
假定坐标系是这样的,水平面的是X轴和Y轴,垂直的是Z轴。Y轴指向屏幕里面。

以下公式表示某点旋转的坐标变换。old是指某点当前的三维坐标(x,y,z)。new是指旋转后的坐标。Rx、Ry、Rz分别表示该点围绕X轴、Y轴、Z轴旋转的度数(弧度)。
    Xnew = Xold * (CosRy * CosRz) + Yold * (-CosRx * SinRz + SinRx * SinRy * CosRz) + Zold * (SinRx * SinRz + CosRx * SinRy * CosRz)
    Ynew = Xold * (CosRy * SinRz) + Yold * (CosRx * CosRz + SinRx * SinRy * SinRz) + Zold * (-SinRx * CosRx + CosRx * SinRy * SinRz)
    Znew = Xold * (-SinRy) + Yold * (SinRx * CosRy) + Zold * (CosRx * CosRy)

以下公式表示三维坐标(x,y,z)转化为屏幕上的二维坐标(X,Y)(这里实际上是指在窗体上的left和top)。用Pset语句在窗体上画点。其中,originX和originY表示坐标系的原点在窗体上的left和top值,Hu表示水平面上的Y轴相对于X轴的(在屏幕上的)夹角弧度。
    Me.DrawWidth = 3
    Me.PSet (originX + x + y * cosHu, originY - y * sinHu - z), vbBlue
0 0
原创粉丝点击