资源简介

Qt Creator+opengl实现鼠标交互,控制模型任意旋转,实现轨迹球, 里面的void Widget::drawarrow(GLdouble x0, GLdouble y0, GLdouble z0, GLdouble x1, GLdouble y1, GLdouble z1)这个函数实现,空间任意两点绘制箭头的。

资源截图

代码片段和文件信息

#include 
#include “ArcBall.h“

//轨迹球参数:
//直径                    2.0f
//半径                    1.0f
//半径平方                1.0f
void ArcBall_t::_mapToSphere(const Point2fT* NewPt Vector3fT* NewVec) const
{
    Point2fT TempPt;
    GLfloat length;

    //复制到临时变量
    TempPt = *NewPt;

    //把长宽调整到[-1 ... 1]区间
    TempPt.s.X  = (TempPt.s.X * this->AdjustWidth)  - 1.0f;
    TempPt.s.Y  = 1.0f - (TempPt.s.Y * this->AdjustHeight);

    //计算长度的平方
    length = (TempPt.s.X * TempPt.s.X) + (TempPt.s.Y * TempPt.s.Y);

    //如果点映射到球的外面
    if (length > 1.0f)
    {
        GLfloat norm;

        //缩放到球上
        norm = 1.0f / FuncSqrt(length);

        //设置z坐标为0
        NewVec->s.X = TempPt.s.X * norm;
        NewVec->s.Y = TempPt.s.Y * norm;
        NewVec->s.Z =

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4299  2014-03-13 11:14  guijiqiu\ArcBall.cpp

     文件      12735  2014-03-13 11:08  guijiqiu\ArcBall.h

     文件        387  2014-03-12 22:24  guijiqiu\guijiqiu.pro

     文件      17903  2014-03-14 10:46  guijiqiu\guijiqiu.pro.user

     文件        175  2014-03-12 22:22  guijiqiu\main.cpp

     文件       6100  2014-03-14 10:46  guijiqiu\widget.cpp

     文件       6062  2014-03-14 15:05  guijiqiu\widget.cpp.autosave

     文件        546  2014-03-13 09:49  guijiqiu\widget.h

     目录          0  2014-03-14 15:05  guijiqiu

----------- ---------  ---------- -----  ----

                48207                    9


评论

共有 条评论