我在程序中定义了一组线段,每条线段包含两个属性即point1,point2两个点坐标,这些线相互连接构成了一个网,现在我想在这个网里搜索出最小多边形的个数,并得到每一个多边形的顶点坐标,大家看有什么好的算法吗?想了两天了,还是没什么思路。一些简单的线段是这样定义的:
line1 两个点: point(0,0),point(0,5),
line2 两个点: point(0,0),point(5,0)
line3 两个点: point(0,5),point(5,5)
line4 两个点: point(5,0),point(5,5)
line5 两个点: point(5,0),point(10,0)
line6 两个点: point(5,5),point(10,5)
line7 两个点: point(10,0),point(10,5)
上面这7条线组成的应该是两个矩形,怎么得到这两个矩形中每一个矩形的顶点坐标呢??
同时不能把两个矩形合并为一个矩形,是要搜索各个点组成的最小矩形,且矩形之间不能相互包含。
line1 两个点: point(0,0),point(0,5),
line2 两个点: point(0,0),point(5,0)
line3 两个点: point(0,5),point(5,5)
line4 两个点: point(5,0),point(5,5)
line5 两个点: point(5,0),point(10,0)
line6 两个点: point(5,5),point(10,5)
line7 两个点: point(10,0),point(10,5)
上面这7条线组成的应该是两个矩形,怎么得到这两个矩形中每一个矩形的顶点坐标呢??
同时不能把两个矩形合并为一个矩形,是要搜索各个点组成的最小矩形,且矩形之间不能相互包含。
解决方案 »
- 使用datatable绑定datagridview怎样实现查找定位下一数据行功能.
- 急,关于Response.Expires!!!!在线等
- Socket 高手请入
- C#实现最短路径分析
- 如何用C#以POST方式把参数传递到网页上
- c# (winform中)的DataGrid1怎么不能DataGrid1.DataBind();进行绑定啊?
- 请版主和高手兄弟们帮我解决一个我好久没搞出来的问题!关于treeview控件的使用,我的工具箱中没有这个控件,请问如何添加?我已下载ieweb
- C#在textbox1输入ID回车键显示数据库的内容分别显示在textbox2,textbox3,textbox4
- 高手问题:已知一个表结构,想要创建 一个和该表结构一样的表.请问应如和做呢?
- dataGrid显示问题
- DataGridView Default Error Dialog[求助]
- 关于一个射频卡的问题。
<?xml version="1.0"?>
<FCCH_MulitLineString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MulitLineString>
<FCCH_Line>
<Line_Length>119</Line_Length>
<Start_Point>
<X>144</X>
<Y>76</Y>
</Start_Point>
<End_Point>
<X>263</X>
<Y>76</Y>
</End_Point>
<Line_Type>户室线</Line_Type>
<Line_Color />
<Line_Size>3</Line_Size>
</FCCH_Line>
<FCCH_Line>
<Line_Length>153</Line_Length>
<Start_Point>
<X>263</X>
<Y>76</Y>
</Start_Point>
<End_Point>
<X>416</X>
<Y>76</Y>
</End_Point>
<Line_Type>户室线</Line_Type>
<Line_Color />
<Line_Size>3</Line_Size>
</FCCH_Line>
<FCCH_Line>
<Line_Length>119</Line_Length>
<Start_Point>
<X>144</X>
<Y>144</Y>
</Start_Point>
<End_Point>
<X>263</X>
<Y>144</Y>
</End_Point>
<Line_Type>户室线</Line_Type>
<Line_Color />
<Line_Size>3</Line_Size>
</FCCH_Line>
<FCCH_Line>
<Line_Length>153</Line_Length>
<Start_Point>
<X>263</X>
<Y>144</Y>
</Start_Point>
<End_Point>
<X>416</X>
<Y>144</Y>
</End_Point>
<Line_Type>户室线</Line_Type>
<Line_Color />
<Line_Size>3</Line_Size>
</FCCH_Line>
<FCCH_Line>
<Line_Length>119</Line_Length>
<Start_Point>
<X>144</X>
<Y>199</Y>
</Start_Point>
<End_Point>
<X>263</X>
<Y>199</Y>
</End_Point>
<Line_Type>户室线</Line_Type>
<Line_Color />
<Line_Size>3</Line_Size>
</FCCH_Line>
<FCCH_Line>
<Line_Length>153</Line_Length>
<Start_Point>
<X>263</X>
<Y>199</Y>
</Start_Point>
<End_Point>
<X>416</X>
<Y>199</Y>
</End_Point>
<Line_Type>户室线</Line_Type>
<Line_Color />
<Line_Size>3</Line_Size>
</FCCH_Line>
<FCCH_Line>
<Line_Length>68</Line_Length>
<Start_Point>
<X>144</X>
<Y>76</Y>
</Start_Point>
<End_Point>
<X>144</X>
<Y>144</Y>
</End_Point>
<Line_Type>户室线</Line_Type>
<Line_Color />
<Line_Size>3</Line_Size>
</FCCH_Line>
<FCCH_Line>
<Line_Length>55</Line_Length>
<Start_Point>
<X>144</X>
<Y>144</Y>
</Start_Point>
<End_Point>
<X>144</X>
<Y>199</Y>
</End_Point>
<Line_Type>户室线</Line_Type>
<Line_Color />
<Line_Size>3</Line_Size>
</FCCH_Line>
<FCCH_Line>
<Line_Length>68</Line_Length>
<Start_Point>
<X>263</X>
<Y>76</Y>
</Start_Point>
<End_Point>
<X>263</X>
<Y>144</Y>
</End_Point>
<Line_Type>户室线</Line_Type>
<Line_Color />
<Line_Size>3</Line_Size>
</FCCH_Line>
<FCCH_Line>
<Line_Length>55</Line_Length>
<Start_Point>
<X>263</X>
<Y>144</Y>
</Start_Point>
<End_Point>
<X>263</X>
<Y>199</Y>
</End_Point>
<Line_Type>户室线</Line_Type>
<Line_Color />
<Line_Size>3</Line_Size>
</FCCH_Line>
<FCCH_Line>
<Line_Length>68</Line_Length>
<Start_Point>
<X>416</X>
<Y>76</Y>
</Start_Point>
<End_Point>
<X>416</X>
<Y>144</Y>
</End_Point>
<Line_Type>户室线</Line_Type>
<Line_Color />
<Line_Size>3</Line_Size>
</FCCH_Line>
<FCCH_Line>
<Line_Length>55</Line_Length>
<Start_Point>
<X>416</X>
<Y>144</Y>
</Start_Point>
<End_Point>
<X>416</X>
<Y>199</Y>
</End_Point>
<Line_Type>户室线</Line_Type>
<Line_Color />
<Line_Size>3</Line_Size>
</FCCH_Line>
</MulitLineString>
</FCCH_MulitLineString>
先能正确建立数组,存的是点?是线?
然后根据数组生成一正确的路径graphicpath
然后使用bitmap的drawpath(red,points[]),路径用红色勾线,画在一bitmap上
然后遍历每一个像素,每一个像素朝四周蔓延,如果碰到红色就是碰到边了,而且红色的这点在数组里存在,说明是顶点,就加入,如果这个像素再也蔓延不了了,之前碰到的顶点就是所在多边形的所有顶点,这个像素蔓延完毕,然后这个像素蔓延过的点其他像素已经不用再考虑了