首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式链接所有点

以编程方式链接所有点
EN

Stack Overflow用户
提问于 2013-11-24 16:39:01
回答 5查看 1.3K关注 0票数 5

重写:我没有收到多少关于这个问题的反馈,我想我写得不好,我试图澄清。

我正在做一个让人们创造国家的计划。下图中的红线是与上述国家的边界。我试图找出如何生成一个多边形来填充“边界线”内的整个区域。我有接受多边形工作的三角剖分代码--我用我手动输入的多边形进行了测试--现在我正在试图找出如何从线/链接点生成多边形。

更多的信息-所有的红线是如何把黄色的点连接在一起的。用户将黄色点拖到一起,以连接这些线。多边形有可能在里面有一个洞并且被打开--我试图做的是做一个代码来处理打开的多边形和在里面有洞的多边形,并为我的三角剖分代码生成所有黄色点的位置的输出(向量3和x和z,因为它在y平面上是0)。

我仍然在寻找方法来解决这个问题,但我甚至没有想出从哪里开始寻找解决方案。谢谢你的帮助。

下面的老问题

我试图找到一种将点连接在一起形成内部多边形的方法。基本上,我正在创建一个程序,让人们把线连接在一起。在形成一个封闭多边形之后,它应该在线条中生成一个新的多边形对象。

我不太确定如何做到这一点--我已经做到了,这样他们就可以生成线并将它们连接在一起,但是如何做一个封闭的多边形让我无法理解。我看了凸壳,但这是不一样的,并尝试寻找或思考一些不同的东西,似乎不起作用。我很好奇是否有人能为我指明写作方向/教程或如何继续我的创作的想法。

我上传了两张照片来说明我的观点。

以上是我试图做的,但不太确定如何-基本上,当用户完成一个封闭多边形(所有的黄色点是多边形的外部点),我希望它生成一个内部多边形(标记为黑色1,2和3)。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-12-19 23:05:53

你可能会在多谱线中感到兴奋。这可以帮助你阻止对图论的大量研究。与Polygon类一样,您可以填充Polyline对象。文献资料说:

此对象与Polyline对象类似,但此对象必须是封闭形状。

因为你希望你的形状是“开放的”,这可能对你有帮助。

链接的手册页甚至包括如何以编程方式创建Polyline的示例:

代码语言:javascript
复制
// Add the Polyline Element
myPolyline = new Polyline();
myPolyline.Stroke = System.Windows.Media.Brushes.SlateGray;
myPolyline.StrokeThickness = 2;
myPolyline.FillRule = FillRule.EvenOdd;
System.Windows.Point Point4 = new System.Windows.Point(1, 50);
System.Windows.Point Point5 = new System.Windows.Point(10, 80);
System.Windows.Point Point6 = new System.Windows.Point(20, 40);
PointCollection myPointCollection2 = new PointCollection();
myPointCollection2.Add(Point4);
myPointCollection2.Add(Point5);
myPointCollection2.Add(Point6);
myPolyline.Points = myPointCollection2;
myGrid.Children.Add(myPolyline);

你的第二个要求是,你的形状可以有“洞”。

请注意,您不必负责填充折线。通过设置myPolyline.FillRule,您可以在形状内有“洞”。请参阅MSDN上的Polyline.FillRule页面,其中显示:

如果您对如何创建“洞”有进一步的希望,请查看Geometry.Combine方法,特别是GeometryCombineMode

一个演示GeometryCombineModes的例子..。

玩得开心:)

图片和代码是示例内容,由Microsoft提供,并从MSDN中提取。请注意版权,这是可以通过给定的链接,当重用它。对于在这里使用这些内容,我想参考一下微软有限公司公共许可证

票数 1
EN

Stack Overflow用户

发布于 2013-12-19 16:03:33

那么Marching的导数呢?你可以有这样的东西:

对于每三个点(在网格内按创建顺序分组),找到多边形的中心,让用户给它分配一个bool值,它将定义这个多边形是在网格内还是在网格之外,然后绘制它是否。

票数 0
EN

Stack Overflow用户

发布于 2013-12-21 07:04:45

您不能创建一个打开的多边形。只有当它被关闭时才会变成多边形。但是,这里有一种可能满足您需要的方法。

通过连接所有可用的线来创建一个封闭的多边形,然后计算在中间状态下将起始点和端点连接起来的最后一条线。

然后,

  1. 用与背景不同的颜色绘制(而不是填充)多边形。
  2. 用背景色绘制最后的计算线,这样它就消失了。

这种方法,或修改后的版本,将产生打开多边形的错觉。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20177024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档