摘要: 使用delta3d有些日子了,对物理引擎这块没有细看过,最近研究了一下。主要分为两大部分,第一在dtCore中对ode的封装,第二通过dtPhysics,使用PAL(phys abstract layer)对三种物理引擎 bullet、ode、phys的封装。 这里先介绍下dtCore中对delta3d中的封装。总结起来就是如下几点:dtCore::ODEWolrdWrap 主要是包装了ODE world的功能。这个类不是供用户直接使用的。dtCore::ODESpaceWrap 主要包装了ODE space的功能,主要用于碰撞检测,这个类也不是直接给用户使用的。dtCore::ODECo..阅读全文
posted @ 2011-12-09 11:20 kanego 阅读(313) 评论(0) 编辑
摘要: 1. 所谓MindMap1.1 MindMap是什么MindMap是什么呢?其实是英国人托尼·巴赞创造的一种提出笔记方法,和传统的直线记录方法完全不同,它以直观形象的图示建立起各个概念之间的联系。在国内,MindMap又被称为脑图或思维导图。思维导图(Mind Mapping)以放射性思考(Radiant Thinking)为基础的收放自如方式,除了提供一个正确而快速的学习方法与工具外,运用在创意的发想与收敛、项目企划、问题解决与分析、会议管理等方 面,往往产生令人惊喜的效果。它是一种展现个人智力潜能极至的方法,将可提升思考技巧,大幅增进记忆力、组织力与创造力。它与传统笔记法和学习法阅读全文
posted @ 2012-05-07 16:04 kanego 阅读(6) 评论(0) 编辑
摘要: 最近在看STL源码剖析这本书,这本书分析的对象是SGI STL。在讲述第二级配置器的实现内容时,有这么一段代码: enum {__ALIGN=8}; size_t ROUND_UP(size_t bytes) //将bytes上调至8的倍数 { return (((__bytes) + (size_t) _ALIGN-1) & ~((size_t) _ALIGN – 1)); } 毫无疑问,这段代码是非常高效的。仔细分析一下,就会发现这段代码适合用来将所有数上调至2^n的倍数:一个数k如果正好是2^n的倍数,那么用二进制来 表示的话,低n位必定全是0,而_ALIGN-1的二进制表示则是阅读全文
posted @ 2012-04-22 21:00 kanego 阅读(736) 评论(1) 编辑
摘要: 1 void sock_Close(NLsocket socket) 2 { 3 nl_socket_t *sock = nlSockets[socket]; 4 struct ip_mreq mreq; 5 6 if(sock->type == NL_UDP_MULTICAST) 7 { 8 /* leave the multicast group */ 9 mreq.imr_multiaddr.s_addr = ((struct sockaddr_in *)&sock->addressout)->sin_addr.s_addr;10 mreq.imr_interf阅读全文
posted @ 2012-04-07 19:51 kanego 阅读(35) 评论(0) 编辑
摘要: 看来不错,转载自http://blog.csdn.net/s_51563946/article/details/4458480引言如果在您的开发过程中遇到了常见的错误,或许您的Release版本不能正常运行而Debug版本运行无误,那么我推荐您阅读本文:因为并非如您想象的那样,Release版本可以保证您的应用程序可以象Debug版本一样运行。如果您在开发阶段完成之后或者在开发进行一段时间之内从来没有进行过Release版本测试,然而当您测试的时候却发现问题,那么请看我们的调试规则1:规则1: 经常性对开发软件进行Debug和Release版本的常规测试.测试Release版本的时间间隔越长,阅读全文
posted @ 2012-03-26 20:29 kanego 阅读(61) 评论(0) 编辑
摘要: const用法总结从OSChina中看到一遍const用法总结,深感不错,特此转来。原文地址:http://my.oschina.net/sasa/blog/6994看到const 关键字,C++程序员首先想到的可能是const 常量。这可不是良好的条件反射。如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮。const 更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设计书籍建议:“Use const when阅读全文
posted @ 2012-03-26 11:18 kanego 阅读(22) 评论(0) 编辑
摘要: 今天被同事问到一个问题,map中第三个参数的意思是什么,于是写了下面这个程序测试了一下。[cpp] view plaincopy#include<map>#include<iostream>usingnamespacestd;typedefmap<int,char>icMap;typedefmap<int,char>::iteratorIt;classfunc{public:func(){};booloperator()(constinti1,constinti2){returni1>i2;}};typedefmap<int,char阅读全文
posted @ 2012-03-20 21:23 kanego 阅读(47) 评论(0) 编辑
摘要: 一. 回顾指针概念: 今天我们又要学习一个叫做指向另一指针地址的指针。让我们先回顾一下指针的概念吧! 当我们程序如下申明变量: short int i; char a; short int * pi; 程序会在内存某地址空间上为各变量开辟空间,如下图所示。 内存地址→6 78 9 10 111213 1415 ------------------------------------------------------------------------------------- …| ||||| |||| ----------------------------------...阅读全文
posted @ 2012-03-18 19:46 kanego 阅读(54) 评论(0) 编辑
摘要: 一般的书上都说,虚函数是在运行时根据对象的实际类型“动态决定”函数入口。但什么是“动态决定”呢?实际上C++编译器在实现这个功能的时候,并非真的 等到虚函数被调用时才去判断这个对象是什么类型的。下面我用一个简单的图表来说明C++编译器到底干了些什么。假设有两个类 struct Base { virtual void f(); virtual void g(); }; struct Derived : public Base { virtual void f(); virtual void g(); }; Base 和 Derived 各有一个虚表,分别是 VTable_B 和 VTa...阅读全文
posted @ 2012-03-11 16:01 kanego 阅读(44) 评论(0) 编辑
摘要: 最近在看delta3d开源引擎,最底层封装的消息机制,是基于其has_slots,搜索了一下其资料发现是一个很好用的C++库,先对其简单介绍一下。首先说下插槽机制。插槽系统常用的有三种:boost的signals,sigslot,sigc++基本功能有:1.connect2.disconnect3.emitsigslot优点1.不用担心空回调,当回调对象析构时会自动disconnect2.支持多线程,线程安全,有锁3.缺点1.只能回调void类型函数,不支持返回值。boost中的signals库架构类似,支持返回值,但引入了boost中的其他库2.slot没有优先级,不能动态调整回调队列中..阅读全文
posted @ 2012-02-27 15:24 kanego 阅读(86) 评论(0) 编辑
摘要: [译] - 投影矩阵的推导原帖地址:http://www.codeguru.com/cpp/misc/misc/math/article.php/c10123__1/Deriving-Projection-Matrices.htm译文:矩阵变换作为3d图形程序员的基本知识,投影矩阵是其中很复杂的内容。平移和缩放是容易理解的,旋转矩阵只需要掌握了基本的三角几何知识,但是投影 矩阵不一样。如果你看过投影矩阵的形式,你会发现你很难很快知道它是怎么来的。而且,我在网上没有发现很多有关推导投影矩阵的资源。本文就是讲述如何推导 投影矩阵。对于新接触3d图形学的人来说,推导投影矩阵需要有一定的数学基础,但不阅读全文
posted @ 2012-02-11 19:41 kanego 阅读(199) 评论(0) 编辑