0

我正在尝试将一条线转换为一个非常细的多边形,但不知道如何考虑线的斜率/角度。

假设我有 x1,y1 和 x2,y2 的线段。如果这些值是 0,0 和 100,0(完全平坦的直线),我可以通过在两个 y 点上简单地添加 0.00001 来创建 2 个新点来创建一个非常薄的多边形。

我如何考虑线的斜率以实现与任何方向的线相同的效果?

谢谢。

4

3 回答 3

1

您可以使用与 z 轴(即三维)的叉积来确定与您的线成直角的线的方向。

(dx,dy,0) cross (0,0,1)

事实证明,这些条款取消了,你得到的是(免责声明:我的标志可能是错误的):

(-dy,dx,0)

然后是规范化该方向(与您的线的长度相同)并乘以线宽的一半的情况。然后,您将线端偏移到您刚刚计算的方向(正数和负数版本)。

您需要根据线的方向进入哪个象限来计算手性,以便以正确的顺序(顺时针或逆时针)生成点。

于 2012-12-19T22:27:18.527 回答
0

找到一条垂直线,然后在这个方向上得到两个点,你将始终拥有相同的厚度。

向量 (x, y) 的两条垂线是 (-y, x) 和 (y, -x) 所以:

因为你的向量是 (x2 - x1, y2 - y1) 一个垂直于它的向量可能是:

(y1 - y2, x2 - x1) 或 (y2 - y1, x1 - x2)

只需选择一个,然后将其添加到每个点即可获得相应的点。假设您选择了第一个,您的两个额外点将是:

(x1 + d(y1 - y2), y1 + d(x2 - x1)) and (x2 + d(y1 - y2), y2 + d(x2 - x1))

其中 d 是您的线条粗细。

于 2012-12-19T22:25:18.953 回答
0

假设 delta = 0.001

然后,您正在寻找的多边形是:

(x1, y1)
(x1 + 0.001 * (y2 - y1), y1 - 0.001 * (x2 - x1))
(x2 + 0.001 * (y2 - y1), y2 - 0.001 * (x2 - x1))
(x2, y2)
于 2012-12-19T22:28:16.073 回答