您的位置:首页 > 编程语言

osg dragger 部分代码 简单分析

2012-08-30 21:29 239 查看
最近要自己实现一个osg dragger ,用dragger 来调整自己的图元。从网上没有找到较为完整的dragger代码说明,只能自己想办法了,于是花了一周多的时间来阅读dragger相关源代码,不得不佩服大神的设计,经典!

在 dragger 的组成上,使用了组合模式,将简单的dragger组合到一起,比如,二维plane dragger 使用了一维translate dragger 和scale dragger ,由多小dragger组成功能更完整的dragger。

用 dragger 实时调整图元时使用了命令模式和代理模式。将每个对图元的调整封装成一个命令,解耦。另外 dragger 和 被调整的图元实际并未被一起调整,而是使用的代理模式,由dragger调用这个代理来对图元调整,防止多个dragger共同操作一个图元时形成干扰。

在命令封装上使用了模板模式,每个命令计算其相应的变换矩阵。

一个dragger 会同时操作多个图元,每个图元被代理包装,放在一个容器内,然后dragger使用迭代器来访问,这里实现了迭代器模式。

非常经典的代码,阅读之后,受益颇多,大神就是大神!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: