[NetTopologySuite](2)任意多边形求交
任意多边形求交:
private void btnPolygon_Click(object sender, EventArgs e)
{ double[] Xs = new double[] { , , , , , , , , , , , , , };
double[] Ys = new double[] { , , , , , , , };
int m = Xs.Length / ;
var coords = new Coordinate[m];
var coordscheck = new Coordinate[m];
for (var i = ; i < Xs.Length / ; i++)
{
var x = Xs[i * ];
var y = Xs[i * + ];
coords[i] = new Coordinate(x, y);
coordscheck[i] = new Coordinate(x, y);
}
// Shell Rings
var ring = new LinearRing(coords);
var gf = new GeometryFactory();
var ringCheck = gf.CreateLinearRing(coordscheck);
// Hole Coordinates
int n = Ys.Length / ;
var coordsholecheck = new Coordinate[n];
var coordshole = new Coordinate[n];
for (var i = ; i < Ys.Length / ; i++)
{
var x = Ys[i * ];
var y = Ys[i * + ];
coordshole[i] = new Coordinate(x, y);
coordsholecheck[i] = new Coordinate(x, y);
}
// Hole LinearRing Arrays
var hole = new LinearRing(coordshole);
var holes = new ILinearRing[];
var holeCheck = gf.CreateLinearRing(coordsholecheck);
var holescheck = new ILinearRing[];
holes[] = hole;
holescheck[] = holeCheck;
Polygon pg = new Polygon(ring, holes);//
var polygonCheck = gf.CreatePolygon(ringCheck, holescheck);
var areaCheck = polygonCheck.Area;
var area = pg.Area;
//
inputGeometry = pg; double[] XsAnalysis = new double[] { , , , , , , , , , , , , , };
double[] YsAnalysis = new double[] { , , , , , , , , , , , };
m = XsAnalysis.Length / ;
var coordsAnalysis = new Coordinate[m];
var coordscheckAnalysis = new Coordinate[m];
for (var i = ; i < XsAnalysis.Length / ; i++)
{
var x = XsAnalysis[i * ];
var y = XsAnalysis[i * + ];
coordsAnalysis[i] = new Coordinate(x, y);
coordscheckAnalysis[i] = new Coordinate(x, y);
}
// Shell Rings
var ringAnalysis = new LinearRing(coordsAnalysis);
var gfAnalysis = new GeometryFactory();
var ringCheckAnalysis = gfAnalysis.CreateLinearRing(coordscheckAnalysis);
// Hole Coordinates
n = YsAnalysis.Length / ;
var coordsholecheckAnalysis = new Coordinate[n];
var coordsholeAnalysis = new Coordinate[n];
for (var i = ; i < YsAnalysis.Length / ; i++)
{
var x = YsAnalysis[i * ];
var y = YsAnalysis[i * + ];
coordsholeAnalysis[i] = new Coordinate(x, y);
coordsholecheckAnalysis[i] = new Coordinate(x, y);
}
// Hole LinearRing Arrays
var holeAnalysis = new LinearRing(coordsholeAnalysis);
var holesAnalysis = new ILinearRing[];
var holeCheckAnalysis = gf.CreateLinearRing(coordsholecheckAnalysis);
var holescheckAnalysis = new ILinearRing[];
holesAnalysis[] = holeAnalysis;
holescheckAnalysis[] = holeCheckAnalysis;
Polygon pgAnalysis = new Polygon(ringAnalysis, holesAnalysis);//
var polygonCheckAnalysis = gf.CreatePolygon(ringCheckAnalysis, holescheckAnalysis);
var areaCheckAnalysis = polygonCheckAnalysis.Area;
var areaAnalysis = pgAnalysis.Area;
//
AnalysisPolygonGeometry = pgAnalysis; intersectionOutput = AnalysisPolygonGeometry.Intersection(inputGeometry);
this.Invalidate();
}

[NetTopologySuite](2)任意多边形求交的更多相关文章
- HDU - 3982:Harry Potter and J.K.Rowling(半平面交+圆与多边形求交)(WA ing)
pro:给定一枚蛋糕,蛋糕上某个位置有个草莓,寿星在上面切了N刀,最后寿星会吃含有草莓的那一块蛋糕,问他的蛋糕占总蛋糕的面积比. sol:显然需要半平面交求含有蛋糕的那一块,然后有圆弧,不太方便求交. ...
- 一种实用性较强的求IOU的算法(任意多边形之间的IOU)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- POJ 1279 Art Gallery 半平面交/多边形求核
http://poj.org/problem?id=1279 顺时针给你一个多边形...求能看到所有点的面积...用半平面对所有边取交即可,模版题 这里的半平面交是O(n^2)的算法...比较逗比.. ...
- 任意多边形切割/裁剪(附C#代码实现)
本实现主要参考了发表于2003年<软件学报>的<一个有效的多边形裁剪算法>(刘勇奎,高云,黄有群)这篇论文,所使用的理论与算法大都基于本文,对论文中部分阐述进行了详细解释,并提 ...
- ray与triangle/quad求交二三事
引擎中,ray与quad求交,算法未细看,但有求解二次方程,不解.ray与triangle求交,使用的是97年经典算法,仔细看过论文,多谢小武同学指点,用到了克拉默法则求解线性方程组.想模仿该方法,做 ...
- C# 实现 任意多边形切割折线算法
1. 内容简介 本文旨在解决任意多边形切割折线,获取切割之后的折线集合. 本文实现的算法内容包括:判断两条线段是否相交,如若相交,获取交点集合.对线上的点集,按斜率方向排序.判断点是否在多边形内 ...
- C#多边形求角——实例说
前段时间有写过一个计算多边形角度的代码,这里给它整理整理,留给自己也送给萌新. 看左下图,这是一个多环的多边形,一个外环(内部为多边形内部区域),一个内环(外部为多边形内部区域),同时多边形中任意一个 ...
- Gym - 101208J 2013 ACM-ICPC World Finals J.Pollution Solution 圆与多边形面积交
题面 题意:给你一个半圆,和另一个多边形(可凹可凸),求面积交 题解:直接上板子,因为其实这个多边形不会穿过这个半圆,所以他和圆的交也就是和半圆的交 打的时候队友说凹的不行,不是板题,后面想想,圆与多 ...
- 一步一步实现基于GPU的pathtracer(二):求交算法
不管是哪种全局光照算法,最根本的都要落实到光线与物体的求交.主要分为光线与参数曲面和非参数曲面的求交,典型的参数曲面有球.盒.圆柱等基本体及基本体的组合体,以及一些更为复杂的参数曲面.非参数曲面就是所 ...
随机推荐
- 使用LTT升级HP磁带机的固件程序
下载后将软件包解压 解压后,进入该文件夹可以看到固件程序 将所有固件程序拷贝至LTT软件安装目录下的firmware文件夹中 C:\Program Files\HP StorageWorks ...
- 词频统计(WEB版)
通过点击浏览按钮输入文件: 点击查询按钮后返回结果: 前台代码: <%@ Page Language="C#" AutoEventWireup="true" ...
- ZOJ 2975 思维
题意 给出一个矩形 问在其中存在多少子矩形 其四个角上的字母是一样的 一开始暴力写了一发 先枚举行数 再枚举两个列数 再向下枚举行数 判断能否 没有意外的超时了 后来想了想 当我们已经确定两个列数的时 ...
- HDU 1698 线段树 区间更新求和
一开始这条链子全都是1 #include<stdio.h> #include<string.h> #include<algorithm> #include<m ...
- C#winform使用+=和-=订阅事件和移除事件订阅
1.C#winform中使用+=和-=订阅事件和移除事件订阅 2.可以使用+=给一个控件订阅多个事件,触发事件时按顺序执行,直到使用-=移除事件订阅为止.
- jquery 选择器,模糊匹配
按姓名匹配 1,name前缀为aa的所有div的jquery对象 $("div[name^='aa']"); 2,name后缀为aa的所有div的jquery对象 $(" ...
- 微信公众账号开发教程(一) 基本原理及微信公众账号注册 ——转自http://www.cnblogs.com/yank/p/3364827.html
微信公众账号开发教程 基本原理 在开始做之前,大家可能对这个很感兴趣,但是又比较茫然.是不是很复杂?很难学啊? 其实恰恰相反,很简单.为了打消大家的顾虑,先简单介绍了微信公众平台的基本原理. 微信服务 ...
- jquery全选+下拉+单选+事件+挂事件
1.全选 <body> <input type="checkbox" id="qx" /> 全选 <input type=&quo ...
- c语言学习感想
接触c语言已经2个多月了,在这段期间按时的完成了作业,上课能够较好的听讲,因此我获得了老师奖励的小黄衫. 同时,希望自己能够学好c语言! 学习感受与心得 因为兴趣,选择了计算机这专业,我从遥远的南方来 ...
- Bluetooth RFCOMM介绍
目录 1. 介绍 2. 服务概述 2.1 RS-232控制信号 2.2 Null Modem Emulation 2.3 多串口仿真 3. 服务接口描述 4. RFCOMM帧类型 5. RFCOMM帧 ...