3维空间坐标旋转

本文探讨了三维空间中的坐标旋转,特别是如何利用右手定则进行旋转操作。通过示例代码展示了如何对三维点a进行绕指定轴的旋转,角度为angle。此内容对于理解3D图形编程和相关数学概念至关重要。
摘要由CSDN通过智能技术生成
三维空间中,每个物体有一个包围球 ,跟踪球思想有点类似拨动地球仪,就是拨动物体的包围球,物体也随之旋转,这样子可以更好的,更全面的观察物体。
主要思想就是鼠标单击屏幕,并执行拖动:画出一段弧线,起点v0,终点v1。这两点都是二维的,必须投影到三维空间中,分别记为:p0,p1, 也就是两个向量:p0,p1,进行单位化以后,二者进行差乘求出向量axis,则axis就是物体旋转轴。angle成员变量是控制球体转动速度的


 //根据二维的坐标x,y产生一组三维的坐标,单位化后存放到v中
    void trackball_Prov(int x, int y, float v[3])
    {
        GLfloat    d, a;


        //(winWidth/2, winHeight/2)为球心
        v[0] = (x - winWidth/2) / (winWidth/2);
        v[1]=(y - winHeight/2) / (winHeight/2);


        d=(float)sqrt(v[0]*v[0]+v[1]*v[1]);
        v[2]=(float)cos ( (M_PI/2.0F)* ( (d<1.0) ? d : 1.0F ) );
       // 单位化
        a=1.0F / (float)sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]);
        v[0] *=a;
        v[1] *=a;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值