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

假定坐标系是这样的,水平面的是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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值