资源简介
利用直角坐标值完成了基本的地形绘制,实现了基本的漫游
代码片段和文件信息
#include “stdafx.h“
#include “South.h“
using namespace std;
CSouth::CSouth():m_fMoveSpeed(1.5)//初始速度设为1.5
m_bLeftButtonDown(false)//左键没有按下
m_fpushX(0)//左键点下时初始坐标为0
m_fAngle(2.5)//初始角速度是2.5
m_bpeng(false)//开始时碰撞检测关闭
m_fpushY(0)//右键点下时位置为0
{
m_vPosition = osg::Vec3(-22.0-227.0100.0);//出生点位0
m_vRotation = osg::Vec3(osg::PI_200);//初始角度
scale = 1.0;
}
CSouth::~CSouth()
{
}
void CSouth::setByMatrix (const osg::Matrixd& matrix )
{
}
void CSouth::setByInverseMatrix(const osg::Matrixd& matrix)
{
}
osg::Matrixd CSouth::getMatrix(void) const
{
osg::Matrixd mat;
mat.makeRotate(m_vRotation._v[0]osg::Vec3(0.00.00.0)m_vRotation._v[1]osg::Vec3(0.0f0.0f0.0f)m_vRotation._v[2]osg::Vec3(0.00.00.0));
// // std::cout< return mat * osg::Matrixd::translate(m_vPosition);
// return osg::Matrixd::inverse(mat * osg::Matrixd::translate(m_vPosition));
// return mat;
}
osg::Matrixd CSouth::getInverseMatrix(void) const
{
osg::Matrixd mat;
mat.makeRotate(m_vRotation._v[0]osg::Vec3(1.00.00.0)m_vRotation._v[1]osg::Vec3(0.0f1.0f0.0f)m_vRotation._v[2]osg::Vec3(0.00.01.0));
return osg::Matrixd::inverse(mat * osg::Matrixd::translate(m_vPosition));
// return mat * osg::Matrixd::translate(m_vPosition);
// return mat1;
}
bool CSouth::handle(const osgGA::GUIEventAdapter& eaosgGA::GUIActionAdapter& us)
{
float mouseX = ea.getX();
float mouseY = ea.getY();
switch(ea.getEventType())
{
case(osgGA::GUIEventAdapter::KEYDOWN):
{
if (ea.getKey()==0x20)//如果是空格
{
//重绘
us.requestRedraw();
us.requestContinuousUpdate(false);
return true;
}
if (ea.getKey()==0xFF56)//如果是 home键
{
//视点向上移动
changePosition(osg::Vec3(00m_fMoveSpeed));
return true;
}
if (ea.getKey()==0xFF55) //如果是end键
{
//视点向下移动
changePosition(osg::Vec3(00-m_fMoveSpeed));
return true;
}
if (ea.getKey()==0x2B)//如果是加号键
{
//加速
m_fMoveSpeed += 1.0f;
return true;
}
if (ea.getKey()==0x2D)//如果是减号
{
//减速
m_fMoveSpeed -= 1.0f;
if (m_fMoveSpeed<1.0f)
{
m_fMoveSpeed = 1.0f;
}
return true;
}
if (ea.getKey()==0xFF52||ea.getKey()==0x57||ea.getKey()==0x77)//如果是w或者up键
{
// //向前走
changePosition(osg::Vec3(05*m_fMoveSpeed*sinf(osg::PI_2+m_vRotation._v[2])0));
changePosition(osg::Vec3(5*m_fMoveSpeed*cosf(osg::PI+m_vRotation._v[2])00));
// changePosition(osg::Vec3(0m_fMoveSpeed*50));
return true;
}
if (ea.getKey()==0xFF54||ea.getKey()==0x53||ea.getKey()==0x73)//如果是s或者down键
{
//向后退
// changePosition(osg::Vec3(0-m_fMoveSpeed*sinf(osg::PI_2+m_vRotation._v[2])*50));
// changePosition(osg::Vec3(0-5*m_fMoveSpeed*sinf(osg::PI_2+m_vRotation._v[2])0));
// changePosition(osg::Vec3(-5*m_fMoveSpeed*cosf(osg::PI_2+m_vRotation._v[2
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-06-09 11:38 terrian\
目录 0 2012-06-09 11:38 terrian\Debug\
文件 94208 2012-06-23 19:07 terrian\Debug\terrian.exe
文件 738712 2012-06-23 19:07 terrian\Debug\terrian.ilk
文件 4459520 2012-06-23 19:07 terrian\Debug\terrian.pdb
目录 0 2012-07-16 10:18 terrian\Release\
目录 0 2012-06-23 19:07 terrian\terrian\
目录 0 2012-06-23 19:07 terrian\terrian\Debug\
文件 7520 2012-06-23 19:07 terrian\terrian\Debug\BuildLog.htm
文件 65 2012-06-23 19:07 terrian\terrian\Debug\mt.dep
文件 561561 2012-06-09 11:30 terrian\terrian\Debug\south.obj
文件 11873 2012-06-09 11:30 terrian\terrian\Debug\stdafx.obj
文件 663 2012-06-09 11:31 terrian\terrian\Debug\terrian.exe.em
文件 728 2012-06-09 11:31 terrian\terrian\Debug\terrian.exe.em
文件 621 2012-06-23 19:07 terrian\terrian\Debug\terrian.exe.intermediate.manifest
文件 559263 2012-06-23 19:07 terrian\terrian\Debug\terrian.obj
文件 3211264 2012-06-09 11:30 terrian\terrian\Debug\terrian.pch
文件 1682432 2012-06-23 19:07 terrian\terrian\Debug\vc90.idb
文件 3829760 2012-06-23 19:07 terrian\terrian\Debug\vc90.pdb
文件 1183 2011-06-03 17:49 terrian\terrian\ReadMe.txt
目录 0 2012-06-09 11:38 terrian\terrian\Release\
文件 58098 2012-06-09 11:36 terrian\terrian\Release\BuildLog.htm
文件 7584103 2012-06-09 11:36 terrian\terrian\Release\south.obj
文件 36899 2012-06-09 11:36 terrian\terrian\Release\stdafx.obj
文件 7615196 2012-06-09 11:36 terrian\terrian\Release\terrian.obj
文件 3211264 2012-06-09 11:36 terrian\terrian\Release\terrian.pch
文件 502784 2012-06-09 11:36 terrian\terrian\Release\vc90.idb
文件 3731456 2012-06-09 11:36 terrian\terrian\Release\vc90.pdb
文件 7274 2011-06-05 19:57 terrian\terrian\south.cpp
文件 1607 2011-06-05 19:41 terrian\terrian\south.h
文件 212 2011-06-03 17:49 terrian\terrian\stdafx.cpp
............此处省略12个文件信息
- 上一篇:北航数值分析第三次大作业
- 下一篇:GT-POWER自学很有用哦
相关资源
- OpenSceneGraph-3.4.0版本安装包
- VPB的所有版本
- 地形渲染DEMO lod地形代码
- 实时地形引擎 完全版,有目录
- OSG-Cookbook.pdf一本学习OSG难得的好书
- Ferr2D Terrain Tool - 快速制作2D卡通地形
- OpenSceneGraph-OpenSceneGraph-3.4.0.rar
- opengl 三维地形模拟含纹理贴图
- 地形可视化三维可视化
- opengl 生成三维地形
- OsgEarth2.8 使用高程和影像
- osg经典入门教程
- 数字地形分析ArcGis中的窗口分析
- 用OSG实现的实时仿真的雷达波效果
- 地形渲染的动态LOD四叉树算法
- osg天空盒源程序
- OSG载入地形和模型文件
- OpenSceneGraph快速入门指导.pdf
- OpenSceneGraph三维渲染引擎设计与实践
- OpenGL绘制三维地形图184196
- DEM 规则格网 插值、地形生成
- osg 海量数据处理
- DirectX地月系+高度图地形源代码
- OSG3.4.0第三方库VS2015 x64
- OSG 3dparty VS2015(x86
- OSG 3dparty VS2015(x64)64位三方库
- OpenGL实践二:基于分形的山地地形绘
- osgOcean update
- Prefab Painter 2 2.1
- cass绘制地形图学习资料.zip
评论
共有 条评论