阅读:5136回复:9
[原创]几何模板库(刚刚完成,各位看看有什么缺陷)
<P>// --------------------几何模板库-----------------------<BR>// 作者 : Tsinghua<BR>// 版本 : Ver 1.0.0.0<BR>// 最后修改: 2006.5.12<BR>/* <BR>0.声明<BR> 1.本模板采用的坐标系为:正右为x+,正上为y+</P>
<P>1.内容<BR> 1.几何类:点,线段,直线,圆,三角形,多边形,链,矩形<BR> 2.工具类:缓冲区构造</P> <P>2.点方法:<BR> 1 返回GeoType(点)<BR> 2 构造函数 -- 多个<BR> 3 重载 = <BR> 4 重载 == ,!=<BR> 5 与另外一个点的距离,返回double型<BR> 6 判断与另外一个点是否是同一个点(容差返回内)<BR> 7 求点 p1_p_p2 三点的夹角<BR> 8 求点 (p1-p0)*(p2-p0) 的叉积</P> <P>3.线段方法:<BR> 1 返回GeoType(线段)<BR> 2 构造函数 -- 多个<BR> 3 重载 =<BR> 4 点是否在线段上<BR> 5 得到线段的中点<BR> 6 得到该线段的直线<BR> 7 得到线段的长度<BR> 8 判断与另外一条线段的位置关系(相交,不相交,完全重合,部分叠交)<BR> 9 求俩条线段的夹角余弦值<BR> 10点到线段的最短距离</P> <P>4.直线方法:<BR> 1 返回GeoType(直线)<BR> 2 构造函数 -- 多个 (支持俩个点构造一条直线)<BR> 3 重载=<BR> 4 点是否在直线上<BR> 5 线段是否在直线上<BR> 6 俩个点是否在直线的同一侧<BR> 7 得到该直线与正向X轴之间的夹角<BR> 8 点到直线的距离<BR> 9 与另一条直线的关系(相交,平行,重合)<BR> 10与另一条线段的关系(有交点,无交点,线段在直线上)<BR> 11与另一条直线的夹角弧度<BR> 12求得已知点关于该直线的对称点<BR> 13判断与直线是否相交<BR> 14求得过指定点,与该直线的垂线</P> <P>5.圆的方法<BR> 1 返回GeoType(圆)<BR> 2 构造函数 -- 多个(支持三点确定一个圆)<BR> 3 重载 =,==,!=<BR> 4 得到面积<BR> 5 得到周长<BR> 6 半径膨胀<BR> 7 重新指定半径<BR> 8 判断一个点与圆的位置关系(圆内,圆外,圆上)<BR> 9 指定x值,得到俩个y值<BR> 10指定y值,得到俩个x值<BR> 11指定角度,得到圆上一个点<BR> 12指定个数n,等距获得圆上的n个点<BR> 13指定角度,得到与圆相交的一个线段<BR> 14计算俩个圆的关系:相离,外切,相交,内切,内含<BR> 15两圆交点(前提:保证俩个圆已经相交或者相切)<BR> 16两个圆的公共面积<BR> 17确定圆和直线的关系(相离,相交,相切)<BR> 18过圆外一点,求该点和圆的切点(前提:该点必须在圆外)<BR> 19矩形是否在圆内</P> <P>6.三角形方法<BR> 1 返回GeoType(三角形)<BR> 2 构造函数 --多个<BR> 3 得到面积<BR> 4 得到周长<BR> 5 判断三角形类型(钝角,直角,锐角)<BR> 6 得到三角形最大的一个角度<BR> 7 得到三角形最小的一个角度<BR> 8 得到最长的一条边线段<BR> 9 得到最短的一条边线段<BR> 10判断是否等腰三角形<BR> 11判断是否等边三角形<BR> 12点是否在三角形内<BR> 13点到三角形的最短距离<BR> 14外接圆<BR> 15内切圆<BR> 16分别求得三个角的角平分线</P> <P>7.矩形方法<BR> 1 返回GeoType(矩形)<BR> 2 构造函数--多个<BR> 3 重载 =,==,!=<BR> 4 得到高度,宽度<BR> 5 得到左上点,左下点,右下点,右上点<BR> 6 得到中间点<BR> 7 重新设置参数<BR> 8 重新设置参数为空<BR> 9 判断矩形是否为空<BR> 10参数格式化,使之上>下,右>左<BR> 11点是否在矩形内(包括在矩形上)<BR> 12线段是否在矩形内<BR> 13圆是否在矩形内<BR> 14点到矩形的最短距离<BR> 15外接圆<BR> 16内切圆</P> <P>8.多边形方法<BR> 1 返回GeoType(多边形)<BR> 2 构造函数 -- 多个<BR> 3 在顶点序列的最后一个位置插入一个点<BR> 4 在顶点序列的指点位置插入一个点<BR> 5 分别得到最小的x,最大的x,最小的y,最大的y<BR> 6 得到顶点数目<BR> 7 得到面积<BR> 8 得到周长 <BR> 9 得到顶点的算术平均值<BR> 10指定点,得到该点在顶点序列中的位置编号<BR> 11根据编号返回顶点<BR> 12判断点是否在多边形内<BR> 13判断线段是否在多边形内<BR> 14判断直线是否穿透多边形<BR> 15删除指定顶点序号的顶点<BR> 16删除指定顶点<BR> 17判断该多边形是否简单多边形<BR> 18检查多边形各个顶点的凸凹性判断<BR> 19检查多边形是否是凸多边形<BR> 20检查顶点的顺序是否是逆时针<BR> 21找出一个在多边形内部的点(前提:该多边形为一个简单多边形)</P> <P>9.链方法:<BR> 1 返回GeoType(链)<BR> 2 构造函数 -- 多个<BR> 3 点集的最后一个位置插入一个点<BR> 4 返回首点<BR> 5 返回尾点<BR> 6 删除首点<BR> 7 删除尾点<BR> 8 得到第index个顶点<BR> 9 得到第index个子线段<BR> 10指定位置插入顶点<BR> 11判断链是否为空<BR> 12删除指定点<BR> 13点是否在链上<BR> 14线段与链是否有交点<BR> 15该链的凸包多边形<BR> 16另外一个链加入本链中(注:没有检查增加后链的自交情况)</P> <P>10.几何形状缓冲 <BR> 1 点缓冲<BR> 1.1 8点缓冲<BR> 1.2 16点缓冲<BR> 1.3 x点缓冲<BR> 2 线段缓冲<BR> 2.1 圆头6点缓冲<BR> 2.2 圆头x点缓冲<BR> 3 链缓冲<BR> 3.1 端点圆头6点缓冲<BR> 3.2 端点圆头x点缓冲<BR>*/<BR>// -----------------------------------------------------</P> |
|
1楼#
发布于:2006-05-12 11:35
如果完善了的话,会公布代码,各路大侠一起来发展它
|
|
2楼#
发布于:2006-05-15 12:22
<P>期待楼主完善以及更多功能,对很多朋友应该会有很大帮助</P>
<P>希望大家更进一步讨论</P> |
|
|
3楼#
发布于:2006-08-30 10:15
3个月过去了,不知道楼主进行得怎么样了?
|
|
4楼#
发布于:2006-08-30 19:49
怎么样了?<img src="images/post/smile/dvbbs/em04.gif" /><img src="images/post/smile/dvbbs/em01.gif" />
|
|
5楼#
发布于:2007-01-30 10:03
不知楼主的模版怎么样啦
|
|
6楼#
发布于:2007-05-15 08:56
<P>好东西啊,非常有用</P>
|
|
7楼#
发布于:2007-05-15 08:57
<P>好东西啊,非常有用</P>
|
|
8楼#
发布于:2007-08-04 14:12
<P>感谢楼主分享,</P><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em04.gif" /><img src="images/post/smile/dvbbs/em08.gif" />
|
|
|
9楼#
发布于:2007-11-22 20:23
<P>谢了!</P>
|
|
|