資源簡介
C#版的多邊形拓撲結構算法,給定頂點及連接頂點的弧段信息,計算弧段-點關系表、多邊形-弧段關系表。并且計算出各個多邊形的面積,代碼增加了對孤島多邊形的算法。

代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.Data;
using?System.Linq;
using?System.Runtime.InteropServices;
namespace?Polygon
{
????public?class?CreatePolygons
????{
????????public?IList?Points?=?new?List();
????????public?IList?Arcs?=?new?List();
????????public?IList?PointArcses?=?new?List();
????????public?IList?Polygons?=?new?List();
????????public?int?PolygonIndex;
????????public?ArcAngle?MinAngle;
????????public?CreatePolygons(IList?points?IList?arcs)
????????{
????????????Points?=?points;
????????????Arcs?=?arcs;
????????}
????????public?void?MainCreatePolygons()
????????{
????????????//建立點-弧段關系
????????????BuildPointArcs();
????????????//多邊形自動構建算法
????????????foreach?(var?arc?in?Arcs.Where(arc?=>?arc.TimesOfSearch==0))
????????????{
????????????????BuildPolygons(arc);
????????????}
????????}
????????///?
????????///?建立點-弧段關系
????????///?
????????public?void?BuildPointArcs()
????????{
????????????foreach?(var?point?in?Points)
????????????{
????????????????var?pointArcs?=?new?PointArcs?{PointId?=?point.Id};
????????????????foreach?(var?arc?in?Arcs)
????????????????{
????????????????????var?startPoint?=?arc.Points[0];
????????????????????var?endPoint?=?arc.Points[arc.Points.Count?-?1];
????????????????????if?(point.Id?==?startPoint.Id?||?point.Id?==?endPoint.Id)
????????????????????{
????????????????????????pointArcs.Arcs.Add(arc);
????????????????????}
????????????????}
????????????????if?(pointArcs.Arcs.Count?!=?0)
????????????????????PointArcses.Add(pointArcs);
????????????}
????????}
????????
????????///?
????????///?從指定弧段開始構建多邊形
????????///?
????????///?弧段
????????public?void?BuildPolygons(Arc?arc)
????????{
????????????var?polygons?=?new?List();
????????????//正向(逆時針)構建第一個多邊形
????????????var?polygon?=?BuildPolygon(arc);
????????????polygon.Points?=?GetPolygonPoints(polygon);
????????????polygon.Area?=?Math.Abs(GetArea(polygon.Points));
????????????polygons.Add(polygon);
????????????//反向(順時針)構建其它多邊形
????????????for?(var?i?=?0;i ????????????{
????????????????//從正向已經(jīng)構建任意弧度開始構建
????????????????if?(Arcs[i].TimesOfSearch?==?1)
????????????????{
????????????????????//改變當前弧段的構建方向
????????????????????Arcs[i].Direction?*=?-1;
????????????????????polygon?=?BuildPolygon(Arcs[i]);
????????????????????if?(polygon?==?null)?return;
????????????????????polygon.Points?=?GetPolygonPoints(polygon);
????????????????????polygon.Area?=?Math.Abs(GetArea(polygon.Points));
????????????????????polygons.Add(polygon);
????????????????????//每次都從第一個弧段開始搜索
????????????????????i?=?0;
????????????????}
????????????}
????????????//刪除面積最大的一個多邊形
????????????RemoveMaxPolygon(polygons);
????????????//給多邊形增加編號
????????????foreach?(var?polygon1?in?polygons)
????????????{
????????????????polygon1
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-09-22?14:07??Topology\
?????目錄???????????0??2014-09-22?15:03??Topology\Polygon\
?????文件?????????187??2014-09-18?11:06??Topology\Polygon\App.config
?????文件???????12376??2014-09-22?13:38??Topology\Polygon\CreatePolygons.cs
?????文件????????2353??2014-09-22?14:04??Topology\Polygon\DataModel.cs
?????文件????????2680??2014-09-19?10:20??Topology\Polygon\Polygon.csproj
?????文件????????3190??2014-09-22?15:03??Topology\Polygon\Program.cs
?????目錄???????????0??2014-09-20?08:11??Topology\Polygon\Properties\
?????文件????????1338??2014-09-18?11:06??Topology\Polygon\Properties\AssemblyInfo.cs
?????文件????????3335??2014-09-22?14:03??Topology\Polygon\Topology.cs
?????目錄???????????0??2014-09-20?08:11??Topology\Polygon\bin\
?????目錄???????????0??2014-09-20?08:11??Topology\Polygon\bin\Debug\
?????文件???????16896??2014-09-22?14:04??Topology\Polygon\bin\Debug\Polygon.exe
?????文件?????????187??2014-09-18?11:06??Topology\Polygon\bin\Debug\Polygon.exe.config
?????文件???????46592??2014-09-22?14:04??Topology\Polygon\bin\Debug\Polygon.pdb
?????文件???????23168??2014-09-22?13:45??Topology\Polygon\bin\Debug\Polygon.vshost.exe
?????文件?????????187??2014-09-18?11:06??Topology\Polygon\bin\Debug\Polygon.vshost.exe.config
?????文件?????????490??2010-03-17?22:39??Topology\Polygon\bin\Debug\Polygon.vshost.exe.manifest
?????目錄???????????0??2014-09-25?09:57??Topology\Polygon\bin\Release\
?????目錄???????????0??2014-09-20?08:11??Topology\Polygon\obj\
?????目錄???????????0??2014-09-22?14:04??Topology\Polygon\obj\Debug\
?????文件????????6526??2014-09-21?21:13??Topology\Polygon\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
?????文件?????????896??2014-09-22?13:45??Topology\Polygon\obj\Debug\Polygon.csproj.FileListAbsolute.txt
?????文件????????1755??2014-09-19?14:04??Topology\Polygon\obj\Debug\Polygon.csprojResolveAssemblyReference.cache
?????文件???????16896??2014-09-22?14:04??Topology\Polygon\obj\Debug\Polygon.exe
?????文件???????46592??2014-09-22?14:04??Topology\Polygon\obj\Debug\Polygon.pdb
?????目錄???????????0??2014-09-25?09:57??Topology\Polygon\obj\Debug\TempPE\
?????文件???????????0??2014-09-18?11:07??Topology\Polygon\obj\Debug\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
?????文件???????????0??2014-09-18?11:07??Topology\Polygon\obj\Debug\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
?????文件???????????0??2014-09-18?11:07??Topology\Polygon\obj\Debug\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
?????目錄???????????0??2014-09-22?06:30??Topology\PolygonTest\
............此處省略57個文件信息
評論
共有 條評論