【问题标题】:How to write a program to draw a tiled picture like this?如何编写程序来绘制这样的平铺图片?
【发布时间】:2023-03-17 16:29:01
【问题描述】:

我想写一个程序来画一个平面,上面有平铺的不规则四边形,就像这个:

但是,我不知道相关的算法,例如,我应该按什么顺序绘制边缘?

谁能给我指个方向?

【问题讨论】:

标签: algorithm math graphics


【解决方案1】:

抱歉,在我之前的回答中,我误解了这个问题。

这是对算法的一次尝试(不一定是最佳方式,而是一种方式)。您所需要的只是渲染多边形和基本旋转的能力。

如果您不希望标签被翻转,请单独绘制它们(标签可以存储在顶点中,例如,并随多边形点旋转,但垂直绘制为文本)。

编辑

我收到了一个关于“从任意多边形开始”步骤的问题。我没有很清楚地传达这一步,因为我实际上只是想从提供的图表中建议一个任意多边形,而不是世界上的任何任意多边形。

但是,这至少应该适用于任意四边形,包括凹形四边形,如下所示:

但是,我担心我缺乏适当的背景来证明这为什么有效。也许更精通数学的人可以帮助证明这一点。 我认为解决证明的一种方法是首先从所有平铺边都是多方面的概念开始——考虑到我们在每个边上生成一个相邻的多边形以生成平铺结果,这是一个给定的。然后我们可能能够证明每个 2 价边界顶点都将成为该操作的结果 4 价顶点(因为它的两条边中的每一条都将成为流形,并且将两条新的顶点边引入混合——这似乎是最难向我证明的部分)。最后一步可能是证明每个 4 价顶点的角度总和总是 360 度。

【讨论】:

  • 这适用于任意四边形吗? (它当然不适用于任意多边形——例如凹多边形。)如果是这样,这似乎是一个值得解释的令人惊讶的事实(我在 30 年代找不到反例......)
  • @j_random_hacker 每个顶点有四个不同的角度,在四边形中必须加到 360。查看 OP 的图表,您可以看到一个四边形中的边 a、b 与边 b、a 相邻。所以长度是相同的,角度加起来不管它们的值,所以它适用于任何四边形。
  • @PeteKirkham:这很有帮助,谢谢。基于此,我认为有可能证明始终可以从单个四边形开始并在其周围反复“包裹”四边形层而不会遇到“冲突”。
  • 我提供了基于这些问题的编辑响应,包括凹四边形的视觉结果,但恐怕我缺乏适当的背景来知道如何提供正式的数学证明。在那里,我可能会使用一些帮助来提供更好的答案来证明该技术的普遍性。它可能涉及查看内角和相邻四边形的角度,并首先证明对于任何顶点,它的化合价为 4,角度之和始终为 360。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多