Math 将直线转换为多边形

Math 将直线转换为多边形,math,language-agnostic,Math,Language Agnostic,我试图将一条直线转换成一个非常薄的多边形,但不知道如何考虑直线的坡度/角度 假设我有x1,y1和x2,y2的线段。如果这些值是0,0和100,0(完全平坦的直线),我可以通过简单地向两个y点添加0.00001来创建两个新点,从而创建一个非常薄的多边形 如何考虑直线的坡度,以实现直线在任何方向上的相同效果 谢谢。找到一条垂直线,然后在这个方向上得到两个点,你的厚度总是一样的 向量(x,y)的两条垂线是(-y,x)和(y,-x),因此: 因为你的向量是(x2-x1,y2-y1),垂直于它的向量可以是

我试图将一条直线转换成一个非常薄的多边形,但不知道如何考虑直线的坡度/角度

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

如何考虑直线的坡度,以实现直线在任何方向上的相同效果


谢谢。

找到一条垂直线,然后在这个方向上得到两个点,你的厚度总是一样的

向量(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是线的厚度。

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

(dx,dy,0) cross (0,0,1)
结果是条款取消了,你得到的是(免责声明:我可能把我的标志弄错了方向):

然后将该方向归一化(与线条长度相同)并乘以线条宽度的一半。然后沿刚刚计算的方向偏移线端点(正版本和负版本)

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

假设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)

你们都帮了我很多忙,我让它工作了,但你们没事。。。我该怎么办?什么叫礼仪?
(x1, y1)
(x1 + 0.001 * (y2 - y1), y1 - 0.001 * (x2 - x1))
(x2 + 0.001 * (y2 - y1), y2 - 0.001 * (x2 - x1))
(x2, y2)