- 博客(130)
- 资源 (10)
- 收藏
- 关注
原创 3 OSG创建渲染线程的过程
OSG创建渲染线程的过程 图形渲染线程是静态函数,为:static unsignedint __stdcall StartThread(void *data)它是在int Thread::start()中被调用:int Thread::start(){pd->tid.set( (void*)_beginthreadex(NULL,pd->stackSize,Th
2013-04-29 23:38:40
14140
转载 rapid使用手册
1.0 INTRODUCTIONRAPID is a "Robust and Accurate Polygon Interference Detection"package. It is a programmer's tool, as opposed to a product forend-users. RAPID's API is intentionally narrow and
2013-04-14 16:23:23
14049
原创 Node与NodeVisitor
osg::ref_ptr model;NodeVisitor vv( TRAVERSE_ALL_CHILDREN); model->accept( vv);假设model的模型结构如图:则model->accept( vv);多态,相当于调用Group::accept(NodeVisitor)。注意,我开始误认为Group没有对accept()进行重写,但后来在遍历
2013-04-07 22:47:02
16004
原创 B继承自A,A指针无法隐式转换为B指针,函数参数只管指针类型,与实际指向对象无关
#include #include using namespace std; class A{}; class B: public A{}; void F( B& b){ cout"F( B& b)"}void F( A& a){ cout"F( A& a)"<< endl; } int
2013-04-07 22:19:33
10303
转载 二叉排序树的查找
二叉排序树的查找,如找不到某个值,则记录其父结点:Node* Search( Node* root, int key, Node* &prnt){ Node* p= root; while ( p != NULL) { if ( p->data == key) { return p; } prnt= p;//记录其父结
2013-04-03 19:58:14
9109
原创 B继承自A,A指针无法隐式转换为B指针,函数参数只管指针类型,与实际指向对象无关
#include#include usingnamespace std; class A{}; class B:public A{}; void F( B& b){ cout"F( B& b)"}void F( A& a){ c
2012-12-09 21:16:31
12440
转载 类的sizeof大小
#pragma pack(n) 字节对齐用法详解对 齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。其他平台可能没有这种情况,但 是最常见的是如果不按照适合其平台要求对数据存放进行对齐,会在存取效率上带来损失。比如有些平台每次读都是从偶地址开始,如果一个int型(假设为32 位系统)如果存放在偶地址开始的地方,那么一个读周期就
2012-11-07 17:01:00
13163
原创 复杂指针定义
int (*(*F(int,int)))(int)是什么类型?首先,int(*M)(int),其中M为函数指针,则(*F)(int,int)=M,用N代替*F,F为指向N的指针,则N(int,int)=M,这表示N是一个函数,参数为2个int,其返回值为函数指针M。故F为函数指针,该函数指针所指向的函数的参数为2个int,返回值为函数指针。另:int a;int F();可以想
2012-11-07 15:13:42
12554
转载 《程序员面试宝典》错误题:拷贝构造函数 浅拷贝、深拷贝
#include using namespace std; class CDemo{ public: CDemo():str(NULL){} ~CDemo(){if(str) delete [] str;} char *str; }; int main() { CDemo d1; d1.str = new char[32]; strcpy(d1.s
2012-11-07 11:59:52
14202
原创 多态时最好将基类的析构函数设为virtual
多态时最好将基类的析构函数设为virtual,这样在析构时会先调用子类的析构函数,再调用基类的析构函数,否则如果delete的是基类的指针,则只调用基类的析构函数.示例如下:#include class Base { public: Base() { mPtr = new int; } virtual ~Base() { delete
2012-11-04 20:01:10
14360
转载 虚函数、普通成员函数访问类的数据成员
虚函数、普通成员函数访问类的数据成员:class A { protected: int m_data; public: A(int data = 0){ m_data = data; } int GetData(){ return doGetData();} virtual int doGetData(){ return
2012-11-04 19:44:54
16052
转载 VS2005快捷键(新)
vs2005快捷键使用,提高操作速度2008-06-02 03:46 P.M.代码快捷键重点:快捷键可以修改的:1,打开菜单Tools –> Options对话框,选择Environment –> Keyboard 2,在Show commands containing中键入命令的名称,或者从列表框中选择命令 3,在Press shortcut key(s) 编辑框中键入快捷键
2012-10-19 13:17:53
14687
转载 C++类的内存对齐
内存对齐。对下面的类: class B{ public:int m_a; short int m_b; double m_c private: int m_d;
2012-10-09 10:22:54
16098
转载 八叉树 判断长立方体是否在物体内???????
八叉树判断子长方体的8个点是否在物体内,可判断这8个点是不是在整个物体所有面的内侧。 注:(1)但如果物体不是凸壳呢,而是凹体呢???可能某个点在一个面外,但它仍在物体内。??????????(2)每个子长方体里的Object* oo;对象都是该物体的完整模型,该物体的面片并不会被分解。 参考源代码如下:(octtree.h、octtree.cpp、main.cpp)
2012-09-19 11:05:59
15417
原创 3D网址
3D碰撞检测 http://gamma.cs.unc.edu/research/collision/packages.html#cullide 国外好的图形学网站???????? 几何、三维问题http://www.cs.sunysb.edu/~algorith/ 官网:http://developer.nvidia.com/node/76http://msdn.mic
2012-08-17 20:44:26
12044
原创 求交后高亮显示某个Drawable
求交后高亮显示某个Drawable:if (picker->containsIntersections()) { osg::Vec3 ptWorldIntersectPointFirst= picker->getFirstIntersection().getWorldIntersectPoint(); cout
2012-08-17 20:37:42
15638
原创 知识网址
知网http://epub.cnki.net/grid2008/index/ZKCALD.htm万方http://g.wanfangdata.com.cn/
2012-08-12 20:41:40
10388
原创 Trackball详解????
问题:后面的TrackballManipulator::tb_project_to_sphere()????? void TrackballManipulator::computePosition(const osg::Vec3& eye,const osg::Vec3& center,const osg::Vec3& up){ osg::Vec3 lv(center-eye
2012-07-31 19:39:38
9680
原创 OSG鼠标选择求交
OSG鼠标选择求交////求交方法一:(用WINDOW坐标值,在相机下求交) //osg::ref_ptr picker = new osgUtil::LineSegmentIntersector( // osgUtil::Intersector::WINDOW, ea.getX(), ea.getY()); //osg
2012-07-31 14:25:51
14354
原创 OSG中获取视点的世界坐标
OSG中获取视点的世界坐标:(1)osg::Vec3 vPosEye, vCenter, vUp; cameraMaster->getViewMatrixAsLookAt( vPosEye, vCenter, vUp);//获取世界坐标系下的视点值(2)//主相机 osg::ref_ptr cameraMaster = viewer->getCamera
2012-07-31 13:54:36
11949
原创 鼠标单击点在世界坐标系中的射线 计算原理
鼠标单击点在世界坐标系中的射线 计算原理参考osgManipulator/Dragger.cpp:求鼠标单击射线在世界坐标系中Znear、Zfar的交点:bool PointerInfo::projectWindowXYIntoObject(const osg::Vec2d& windowCoord, osg::Vec3d& nearPoint, osg::Vec3d& farPoin
2012-07-28 19:47:26
8630
原创 OSG中的HUD实时显示视点坐标
/*OSG中的HUD实时显示视点坐标*/#include #include #include #include #include #include #include #include #pragma comment( lib, "osgd.lib"); //.在Debug版本下的库名都加d,如"o
2012-05-13 21:08:34
9597
原创 OSG的HUD抬头文字显示
1. HUD流程图:完整源代码如下:/*OSG中的HUD,文字总是显示在最前面*/#include #include #include #include #include #include #pragma comment( lib, "osgd.lib"); //.在Debug版本下的库名都加
2012-05-13 20:50:53
7866
原创 OSG坐标系解释????????
对于下面的代码(选自《OSG海军教程》第十课第一节 使用自定义矩阵来放置相机,但数据有更改):tankXform->setPosition( osg::Vec3(0,60,8) );// 相机位于坦克后方 60个单元,上方 7个单元。T.makeTranslate(0, 0,15 );//沿Z平移+15A= R * T;//设R是绕Y轴旋转+20度的矩阵C= osg::Matr
2012-05-13 11:23:38
9484
原创 OSG显示图片的几种方法???????????????????????
方法一:没有几何体,直接显示图片(见王锐、钱学雷的《OSG三维渲染引擎设计与实践》P119 在场景中绘制位图):osfg::ref_ptr bmp= new osg::DrawPixels;bmp->setPosition( osg::Vec3( 0.0, 0.0, 0.0));bmp->setImage( osgDB::readImageFile("***.png"));osg:
2012-05-08 13:24:31
10572
1
原创 OSG源代码部分剖析(待续)?????????????????????????????
class DrawableDrawCallback : public osg::Drawable::DrawCallback{ virtualvoiddrawImplementation(osg::RenderInfo& renderInfo,const osg::Drawable* drawable)const { std::
2012-05-08 13:10:16
5377
原创 凸包问题扩展 巨人和鬼 分治+递归
巨人和鬼一组n个巨人正与n个鬼进行战斗,每个巨人的武器是一个质子炮, 它可以把一串质子流射中鬼而把鬼消灭。质子流沿直线行进,在击中鬼时就终止。巨人决定采取下述策略。他们寻找鬼配对,以形成n个巨人─鬼对,。然后每个巨人同时向他选取的鬼射出一串质子流。我们知道,让质子流互相交叉是很危险的。因此巨人选择的配对方式应该使质子流都不会交叉。假定每个巨人和每个鬼的位置都是平面上的一个固定点,并且没有三个位
2012-03-01 11:13:30
5071
原创 OSG中嵌入一个opengl代码(且opengl图形能动态更新)
OSG中嵌入一个opengl代码(且opengl图形能动态更新)(1)继承osg::Drawable::DrawCallback,在drawImplementation(osg::RenderInfo& renderInfo,const osg::Drawable* drawable)函数里添加opengl代码。(2)Drawable设置绘制回调函数,并注意要把显示列表设置为false
2012-02-23 15:22:05
3973
转载 三维凸包
三维凸包 3D Convex HullProblem DescriptionThere are N points in 3D-space which make up a 3D-Convex hull*. How many faces does the 3D-convexhull have? It is guaranteed that all the points are not in
2012-02-17 20:26:07
10027
转载 钱学森最后一次谈话:中国大学缺乏创新精神
钱学森最后一次谈话:中国大学缺乏创新精神钱老去世以后,许多人问我们:钱老有什么遗言?并希望我们这些身边工作人员写一篇“钱学森在最后的日子”的文稿。我们已告诉大家,钱老去世时很平静安详,他没有什么最后的遗言。因为在钱老去世前的一段日子,他说话已经很困难了。我们可以向大家提供的,是钱老最后一次向我们作的系统谈话的一份整理稿:钱老谈科技创新人才的培养问题。那是于2005年3月29日下午在301医院谈
2012-02-16 16:10:03
1371
转载 凸包2:分治法解决凸包问题
以下截图代码摘自《ACM程序设计培训教程 吴昊 中国铁道出版社》 :上面代码中,resultList为全局变量,是最终凸包顶点集合,而leftList、rightList是局部变量。而且dealwith()函数中的insert(resultList,side,node)这个插入函数,是在边的起点和中点之间插入。例如上图15-9中,在边p1、pn之间插入pmax,下次在p1、pmax之间
2012-02-16 11:16:40
7143
原创 凸包问题 —— Graham扫描法
凸包问题 —— Graham扫描法:(1)找出点集p[]中最左下的点p1,把p1同点集中其他各点用线段连接,并计算这些线段与水平线的夹角,然后按夹角从小到大和按到p1的距离从近到远排序(夹角范围为 [0, 180)度,而且可以删除相同夹角且距离p1较近的点,保留最远点,这样可减少计算量。因为直线上的非端点不是凸包的极点,即如果p1,p2,p3在一条直线上,则只取凸点p1,p3。p2不在端点,故
2012-02-14 21:00:01
32601
1
转载 《编程之美》两链表相交及扩展详解
《编程之美》两链表相交及扩展详解:给定一个单链表,只给出头指针h:1、如何判断是否存在环?2、如何知道环的长度?3、如何找出环的连接点在哪里?4、带环链表的长度是多少? 解法:1、对于问题1,使用追赶的方法,设定两个指针slow、fast,从头指针开始,每次分别前进1步、2步。如存在环,则两者相遇;如不存在环,fast遇到NULL退出。2、对于问题2,记录下问题1的
2012-02-11 19:36:32
2061
转载 列宁登山
我们每日每时都必须注意培养自己的意志,任何时候,任何地方…… ——列宁H·霍德扎 吴江列宁被沙皇迫害而流亡国外时,曾经在波罗宁村住过。 列宁登山 列宁很喜欢这个小小的村庄。它的周围群山环绕,山峰高耸入云。 一天,列宁决定去登山。一个叫巴戈茨基的波兰革命者得知了这件事,就跑来找列宁,要求当向导。他兴致勃勃地给列宁描述起这一带的风光:“这附近有那么一座山峰,从
2012-02-07 20:46:57
2182
原创 OSG绘制的部分流程(待修改完善)????????????
主相机,从相机:void Viewer::updateTraversal(){//主相机if (_camera.valid() && _camera->getUpdateCallback()) _camera->accept(*_updateVisitor); //从相机for(unsigned int i=0; i{ osg::Camera* camera = ge
2012-01-17 08:54:05
2519
原创 肖鹏的CSouth漫游器 详解
肖鹏的CSouth漫游器 详解:下图是初始的Opengl坐标系,及相机右转,并往前走时的分析:上图中,当按下右箭头时,相机向右转,此时vRotation[2]由0变为-10,即上图的下半部分绕Z轴旋转了-10度,vRotation[2]=-10,图中角度A=90-10=90+ vRotation[2],此时ES=m_fMoveSpeed,M为S在X 轴上的投影点,SM=ES*Sin(A
2012-01-17 08:38:42
4636
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人