c#实现的一些几何算法(三)
来源:互联网 发布:淘宝店怎么看订单 编辑:程序博客网 时间:2024/06/05 08:27
续一、二
//关于面的
public class GeometricClass
{
// 已知矩形的三个顶点(a,b,c),计算第四个顶点d的坐标. 注意:已知的三个顶点可以是无序的
public static SpatialPoint FourthPointOfRec(SpatialPoint a, SpatialPoint b, SpatialPoint c)
{
SpatialPoint d=new SpatialPoint();
if (Math.Abs(dotmultiply(a, b, c)) < EP) // 说明c点是直角拐角处
{
d.x = a.x + b.x - c.x;
d.y = a.y + b.y - c.y;
}
if (Math.Abs(dotmultiply(a, c, b)) < EP) // 说明b点是直角拐角处
{
d.x = a.x + c.x - b.x;
d.y = a.y + c.y - b.x;
}
if (Math.Abs(dotmultiply(c, b, a)) < EP) // 说明a点是直角拐角处
{
d.x = c.x + b.x - a.x;
d.y = c.y + b.y - a.y;
}
return d;
}
//点q是凸多边形polygon内时,返回true;注意:多边形polygon一定要是凸多边形
public static bool InsideConvexPolygon(int vcount,SpatialPoint[] polygon,SpatialPoint q) // 可用于三角形!
{
SpatialPoint p=new SpatialPoint();
SpatialLine l=new SpatialLine();
int i;
p.x=0;p.y=0;
for(i=0;i<vcount;i++) // 寻找一个肯定在多边形polygon内的点p:多边形顶点平均值
{
p.x+=polygon[i].x;
p.y+=polygon[i].y;
}
p.x /= vcount;
p.y /= vcount;
for(i=0;i<vcount;i++)
{
l.startPoint=polygon[i];
l.endPoint=polygon[(i+1)%vcount];
if(multiply(p,l.endPoint,l.startPoint)*multiply(q,l.endPoint,l.startPoint)<0) /* 点p和点q在边l的两侧,说明点q肯定在多边形外 */
break;
}
return (i==vcount);
}
}
- c#实现的一些几何算法(三)
- c#实现的一些几何算法(一)
- c#实现的一些几何算法(二)
- 一些几何算法
- 【翻译】计算机几何基础算法(三)
- C#的一些算法
- 一些常规形几何形状的绘制和效果填充(三)
- 模式识别几何分类算法实现(一)
- 模式识别几何分类算法实现(二)
- 关于计算几何一些算法
- 一些三维计算几何算法
- C#学习笔记(三)---------Repeater的一些常规用法
- 一些算法题的实现
- 一些递归算法的实现
- 一些经典的算法实现
- 计算几何的一些代码。。。
- 计算几何的一些模版
- 计算几何的一些模板
- Google常用的高效使用方法
- c#实现的一些几何算法(二)
- BrewMP 中国论坛,全面建成
- 日志级别的选择:Debug、Info、Warn、Error还是Fatal
- 作业
- c#实现的一些几何算法(三)
- CSS 中 Display 的一些特殊属性
- 使用memcached缓存 替代solr中的LRUCache缓存
- ext3.0 树控件处理
- SQL SERVER 2008 压缩备份
- 解决简化版本xp|Ghost xp 没有iis的问题
- Qt数据库(一)简介
- 用2进制和10进制实现checkBox
- JS常用