c# – 跟踪顶点的连接并确定何时制作多边形
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 跟踪顶点的连接并确定何时制作多边形,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1639字,纯文字阅读大概需要3分钟。
内容图文
![c# – 跟踪顶点的连接并确定何时制作多边形](/upload/InfoBanner/zyjiaocheng/781/6bb1833ef4844184a21470248bbde569.jpg)
我正在努力研究c#中的游戏机制,它涉及连接顶点和形成多边形.
可以有任意数量的5到30个顶点.每个顶点可以用直线连接(线不能相交).当线条关闭多边形时,多边形内部将以特定颜色着色. (如果在关闭期间内部有一个点,则无法关闭多边形)
例如,下面两张图片不可能发生:
但是,这可以:
我遇到的问题是如何识别我刚关闭的多边形并记住它(如果我关闭一个与它共享边缘的多边形).我可以有多个闭合的多边形,直到可以绘制从每个顶点绘制而不破坏交叉规则的所有线.
我试图记住绘制AB,ED,CD,CA等的线条并寻找一个循环,但是当我关闭多个多边形时,我需要更多信息来知道哪个多边形已经被关闭.但我很难搞清楚如何做到这一点.
例如(下图),如果绘制了行n,我想找到刚制作的多边形.
有谁知道我怎么做到这一点?
任何想法,帮助,见解都会有所帮助.
解决方法:
可能有点简单,但您可以存储字典< Face,List< Vertex>>你可以用linq查询.
您可以通过添加反向查找来简化它.字典< Vertex,List< Faces>>
场景1:路径触及属于同一面的边缘
要测试新路径DC,您将获得2个顶点,D和C,并找到包含两个顶点的任何面.从List< Vertex>中的D开始并创建C的路径
现在用C – >做同样的事情. D.
你现在有2条路径,D – > E – > C和C – > A – > B – > D都使用D – >形成有效面部. C所以现在你必须枚举所有顶点并消除任何包含现有顶点的面.
场景2:路径接触不属于任何面部的边缘
这条路是开放的.
场景3:路径触及eges,它们是不同面孔的一部分
Face1:ABDEC
Face2:AGF
测试路径FC. F是Face2 C的一部分,是Face1的一部分.
查找交叉点:Face1.Face2 == A它是两个列表中的唯一点,这次您获得2组2条路径.
F A
FGA
AC
ABDEC
从F到A,这些路径成倍增加
FAC
FGAC
FABDEC
FGABDEC
现在可以测试这些面部的有效性.
对于这种更复杂的场景(3个面部接触,面部共享边缘)来说,可能更容易保持所有连接边的图形,这将为您提供一种更简单的方法来检测2个顶点之间的可能路径.
请注意,包含3个顶点的任何路径都会形成一个可能的面,可以检查其有效性
内容总结
以上是互联网集市为您收集整理的c# – 跟踪顶点的连接并确定何时制作多边形全部内容,希望文章能够帮你解决c# – 跟踪顶点的连接并确定何时制作多边形所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。