【问题标题】:Gaps Between Rectangles Connected at the Center在中心连接的矩形之间的间隙
【发布时间】:2013-03-27 22:43:49
【问题描述】:

我正在试验一种基于矢量的图形样式,对象表示为具有给定宽度的一系列线段(将这些视为矩形可能更容易)。问题是这些段在中心连接并留下间隙(如下所示)。我已经确定覆盖这个间隙的最有效方法是简单地用一个三角形覆盖它,因为我在 OpenGL 中工作,所以我需要的是不与另一个矩形重叠的两个点的点,第三点是连接两条线段(矩形)的中心点。鉴于我拥有两个矩形的所有点,我如何确定三角形需要使用哪些点?

编辑:我也会接受替代解决方案,只要它们能弥补这一差距。

编辑 2:没关系,我解决了。一旦我有更好的互联网连接,我会发布代码。

【问题讨论】:

  • 我想这就是你要找的东西:stackoverflow.com/questions/687173/…
  • 这基本上是同一个问题,发帖之前我没看到,但是那里的答案对我来说有点太理论了。

标签: graphics geometry rendering rectangles line-segment


【解决方案1】:

也许我误解了这个问题......但是如果你放大红色五边形的顶角,你会得到这样的东西,对吗?

其中 A 和 B 是 edge1 矩形上的节点,C 和 D 是 edge2 矩形上的节点。你说你已经知道这些坐标了。而且按照你说的,边在中心相交,在A和B的中间,也在C和D的中间。所以称这个点为X,我猜你可以很容易地计算出它的坐标。

所以你需要做的就是画出缺失的三角形AXC,对吧?因此,一种方法是确定 A 和 C 位于多边形的“外部”(因此需要填充),而 B 和 D 位于“内部”,因此不需要。但是两者都画可能更容易,因为它没有伤害。所以如果你填写 AXC 和 BXD,你会得到:

【讨论】:

  • 我已经尝试过了,但是我在前面的代码中遇到了一些模棱两可的问题,所以我不能完全区分 A 和 B 或 C 和 D,所以我是希望能找到更通用的解决方案。
  • 要指定,A不一定与C配对,B不一定与D配对,但是当我绘制所有四个可能的三角形时,它看起来很奇怪。
【解决方案2】:

我找到的解决方案假设有 3 种基本情况:

首先,两个矩形的三个唯一中心点向上(正 y 方向),因此间隙位于连接的左侧或右侧。在我的代码中,我将矩形的角点按它们在中心点左侧或右侧的方向组织,所以如果底部矩形的左点低于顶部矩形的左点,则间隙在左点之间两个矩形,否则间隙在正确的点之间。

其次,三个唯一的中心点在大多数中心点的中心都有最大值,因此差距在顶部。然后,间隙位于具有最大 y 值的两个点之间。

第三,三个唯一的中心点在大多数中心点的中心都有最小值,所以间隙在底部。间隙位于 y 值最小的两点之间。

[如果需要,我会发布示例案例的图片]

【讨论】:

    猜你喜欢
    • 2012-04-07
    • 2012-05-18
    • 2022-06-12
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    相关资源
    最近更新 更多