资源简介
通过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
- 上一篇:锁相环程序代码
- 下一篇:搅拌摩擦焊温度场模拟
相关资源
- OpenGL参考手册
- Qt Creator opengl实现四元数鼠标控制轨迹
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- OpenGL导入贴图的Texture类
- 计算机图形学(openGL)代码
- 用OpenGL开发的机械臂运动仿真程序(
- OpenGL-3D坦克模拟
- OPENGL实现世界上最小的3D游戏
- VS2012OpenGL配置所需要的全部libdllh文件
- 基于OpenGL的仿蝗虫机器人三维动态仿
- 图形学 - OpenGL实现3种三维茶壶显示源
- opengl程序-会跳舞的骷髅
- opengl实现三维网格光顺Laplacian算法
- opengl——爆炸
- OpenGL三维地形建模
- opengl游戏编程徐明亮版(含源码)
- 用OPENGL画的一个简单的直升飞机
- opengl完美天空盒
- Kinect手势代替鼠标控制PC
- 3D绘图程序设计:使用Direct3D 10/9和Ope
- OpenGL绘制可运动自行车源程序.zip
- OpenGL实现飘动效果
评论
共有 条评论