1

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

例子

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

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

4

2 回答 2

0

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

两个多边形边之间的交汇点

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

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

在此处输入图像描述

于 2013-03-28T09:29:11.583 回答
0

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

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

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

第三,三个独特的中心点在大多数中心点的中心都有最小值,因此间隙在底部。然后,间隙位于具有最小 y 值的两个点之间。

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

于 2013-04-02T01:11:07.483 回答