我的声明:
代号为:Sunny
自2007年1月1日起,我将分阶段完全公开我自己总结写出的C++几何运算库源代码。这些代码是我这些年的积累,来源具体也说不清楚了,这些代码都是经过我彻底精心动手打造的,每个字符。如果对您的工作有价值,请多发表评论和意见吧,同时也希望得到您的指点! 这些代码完全按C++思想设计和实现,可以应用在2D、3D商业图形程序中。代码中所有说明、注释都是英文。希望这个不算问题。 下面的版权信息必须放在代码文件的最前面。 License Information: ********************************************************************* C++ Geometry Library Source Code Date: 2007-1-1 Author: cheungmine – cheungmine@gmail.com ********************************************************************* 1 您可以使用这些代码,但不能声明拥有这些代码的版权。 2 所有源代码不可以出售以获得收益。 3 如果您在商业上应用这些代码,必须在您的产品中注明这部分的来源。 4 如果您使用了这些代码,我们视您为同意遵守此声明。 使用方法: 下面说明如何创建C++动态库,以使用这些源代码。 第1步:创建一个空的win32 dll 项目。(使用VS2003或VS2005创建win32项目,在[应用程序设置]中,[应用程序类型]选中:Dll( D);在附加选项中,选中:空项目( E)) 第2步:将所有我发布的代号为:Sunny 的文件(.h和.cpp)添加到项目中。 第3步:编译以创建 geomlib.lib和geomlib.dll。 第4步:您可以在自己的程序中动态链接到geomlib.dll。如: // testgeom.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "../geomlib/geomlib.h" // 如果是使用了动态链接, 不要忘记把geomlib.dll放到合适的地方!!! #pragma comment(lib, "../geomlib/debug/geomlib.lib") int _tmain( int argc, _TCHAR* argv[]) { G_POINT p(100,200); G_POINT3 p3(p); // 做任何你高兴的事情 return 0; } ============目前总结有============ 点的算法: 1点的基本算法 2点与多边形的关系 3点与线的关系 4点集去掉重复的点 5点集构建三角网(三角剖分) 6点缓冲区 7点集拟合曲面的算法 线的算法: 1线和线的关系 2线和多边形的关系 3线集寻找所有交点 4线集去掉重复的线 5线集构建拓扑面 6线缓冲区 7线裁剪(被点、线、多边形剪切) 8点到线的距离 9最短路径的算法 多边形的算法: 1多边形冲突检测,多边形与多边形之间关系的算法 2多边形BSPTree 3多边形三角剖分(包括简单和复杂算法) 4多边形求凸壳 5多边形凸凹性 6多边形面积、周长、质心、最佳标注位置的算法 7多边形缓冲区 8多边形集组合成复合多边形 9多边形性质判断(是否有效,即不存在自相交的边) 10多边形之间的交、并、减等算法 11点到多边形或点到多边形所在面的距离 三角网的算法: 1三角网追踪等高线 2三角网插值格网 3格网追踪等高线 曲面的算法: 1曲面生成格网 2点到曲面的距离 3曲面上2点间最近距离的曲线 坐标变换的算法: 1地图坐标和屏幕坐标变换