资源简介

通过opengl绘制三维模型,通过鼠标控制可以旋转模型,vs2010编写。

资源截图

代码片段和文件信息

/** KempoApi: The Turloc Toolkit *****************************/
/** *    *                                                  **/
/** **  **  Filename: ArcBall.cpp                           **/
/**   **    Version:  Common                                **/
/**   **                                                    **/
/**                                                         **/
/**  Arcball class for mouse manipulation.                  **/
/**                                                         **/
/**                                                         **/
/**                                                         **/
/**                                                         **/
/**                              (C) 1999-2003 Tatewake.com **/
/**   History:                                              **/
/**   08/17/2003 - (TJG) - Creation                         **/
/**   09/23/2003 - (TJG) - Bug fix and optimization         **/
/**   09/25/2003 - (TJG) - Version for NeHe basecode users  **/
/**                                                         **/
/*************************************************************/

#include  // Header File For Windows
#include  // Header File For The OpenGL32 Library
#include  // Header File For The GLu32 Library
#include  // Header File For The GLaux Library

#include “math.h“                                               // Needed for sqrtf

#include “ArcBall.h“                                            // ArcBall header

//Arcball sphere constants:
//Diameter is       2.0f
//Radius is         1.0f
//Radius squared is 1.0f

void ArcBall_t::_mapToSphere(const Point2fT* NewPt Vector3fT* NewVec) const
{
    Point2fT TempPt;
    GLfloat length;

    //Copy paramter into temp point
    TempPt = *NewPt;

    //Adjust point coords and scale down to range of [-1 ... 1]
    TempPt.s.X  =        (TempPt.s.X * this->AdjustWidth)  - 1.0f;
    TempPt.s.Y  = 1.0f - (TempPt.s.Y * this->AdjustHeight);

    //Compute the square of the length of the vector to the point from the center
    length      = (TempPt.s.X * TempPt.s.X) + (TempPt.s.Y * TempPt.s.Y);

    //If the point is mapped outside of the sphere... (length > radius squared)
    if (length > 1.0f)
    {
        GLfloat norm;

        //Compute a normalizing factor (radius / sqrt(length))
        norm    = 1.0f / FuncSqrt(length);

        //Return the “normalized“ vector a point on the sphere
        NewVec->s.X = TempPt.s.X * norm;
        NewVec->s.Y = TempPt.s.Y * norm;
        NewVec->s.Z = 0.0f;
    }
    else    //Else it‘s on the inside
    {
        //Return a vector to a point mapped inside the sphere sqrt(radius squared - length)
        NewVec->s.X = TempPt.s.X;
        NewVec->s.Y = TempPt.s.Y;
        NewVec->s.Z = FuncSqrt(1.0f - length);
    }
}

//Create/Destroy
ArcBall_t::ArcB

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-01-24 19:49  17210110OpenGL_Mouse_rotate_physical\
     目录           0  2015-01-24 21:56  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\
     文件        4708  2003-09-25 04:12  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\ArcBall.cpp
     文件       18012  2003-09-25 05:02  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\ArcBall.h
     目录           0  2015-01-25 16:17  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\Backup\
     目录           0  2015-01-24 20:26  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\Debug\
     文件       20210  2012-10-30 15:49  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\Debug\ArcBall.obj
     文件           0  2012-10-30 15:49  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\Debug\ArcBall.sbr
     文件       28744  2012-10-31 22:06  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\Debug\Mouse_rotate_physical.obj
     文件           0  2012-10-31 22:06  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\Debug\Mouse_rotate_physical.sbr
     文件     2507776  2012-10-31 22:06  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\Debug\OpenGL鼠标旋转物体.bsc
     文件      217207  2012-10-31 22:06  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\Debug\OpenGL鼠标旋转物体.exe
     文件      257168  2012-10-31 22:06  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\Debug\OpenGL鼠标旋转物体.ilk
     文件      156672  2012-10-31 22:06  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\Debug\vc60.idb
     文件       77824  2012-10-31 22:06  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\Debug\vc60.pdb
     文件        7432  2012-10-31 22:06  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\Mouse_rotate_physical.cpp
     文件        4631  2012-10-30 16:02  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\OpenGL鼠标旋转物体.dsp
     文件         544  2012-10-30 15:44  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\OpenGL鼠标旋转物体.dsw
     文件       58368  2012-10-31 22:08  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\OpenGL鼠标旋转物体.ncb
     文件       55808  2012-10-31 22:08  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\OpenGL鼠标旋转物体.opt
     文件        1166  2012-10-31 22:06  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\OpenGL鼠标旋转物体.plg
     文件    29163520  2015-01-24 21:56  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\OpenGL鼠标旋转物体.sdf
     文件         993  2015-01-24 20:26  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\OpenGL鼠标旋转物体.sln
     文件       15360  2015-01-24 21:56  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\OpenGL鼠标旋转物体.v12.suo
     文件        6657  2015-01-24 20:26  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\OpenGL鼠标旋转物体.vcxproj
     文件        1208  2015-01-24 20:26  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\OpenGL鼠标旋转物体.vcxproj.filters
     文件       34508  2015-01-24 20:26  17210110OpenGL_Mouse_rotate_physical\OpenGL鼠标旋转物体及剪切平面\UpgradeLog.htm

评论

共有 条评论