计算平分线段坐标
calculate bisector segment coordinates
我认为对此有一个非常直接的答案,但我找不到。我的几何课离这个太远了。问题是:
给定 2 个点 A 和 B(坐标 Ax Ay Bx 和 By),我想找到点 C 和 D 的坐标,以便 [AB] 和 [CD] 线段在它们的中心相交并且 [CD] 的长度为 d (一个变量)。
我想从 Ax、Ay、Bx、By 和 d 中找到给我 Cx、Cy、Dx 和 Dy 的方程。
这是问题的一个小模式:
以及预期结果的图片:
我已经知道怎么求[AB]的圆心(Ax+Bx/2,Ay+By/2),怎么求[AB]线段的斜率(By-Ay/Bx-Ax) 然后是 [CD] 片段之一 (Ax-Bx/By-Ay)。但是后来我陷入了如何获得两分的问题。我以为我可以计算斜坡的角度,然后将它与一些三角函数一起使用以获得坐标,但这听起来像是一个非常繁重、丑陋和不必要的计算……
感觉很接近,但我还是看不懂
我也找到了this post,几乎完美,但是不能定义长度:必须和第一段一样。
我不认为这是 language-dependent,但如果你必须知道,我正在做一个关于处理的迷你原型,稍后可能会在 javascript 上得到它。
感谢您的帮助。
这里的基本技巧是,在 2d 中,向量 (x, y) 的垂线仅为 ± (-y, x)。 (通过在 3d 中用 (0, 0, 1) 向量计算 cross product,然后投影到 2d 得到这个。)所以你需要做的是:
获取 A 和 B 之间的中点(你已经做到了)。
得到A到B的向量,即B - A = (x, y) = (bx - ax, by - ay)。
得到垂直向量:(-y, x).
标准化。让length = sqrt(y*y + x*x)
,然后norm = (-y/length, x/length)
.
将归一化垂直线乘以您想要的距离±d/2
(因为您希望 C 和 D 之间的距离为 d
),然后添加到中心点。
不需要斜率或三角函数。
我认为对此有一个非常直接的答案,但我找不到。我的几何课离这个太远了。问题是: 给定 2 个点 A 和 B(坐标 Ax Ay Bx 和 By),我想找到点 C 和 D 的坐标,以便 [AB] 和 [CD] 线段在它们的中心相交并且 [CD] 的长度为 d (一个变量)。 我想从 Ax、Ay、Bx、By 和 d 中找到给我 Cx、Cy、Dx 和 Dy 的方程。 这是问题的一个小模式:
以及预期结果的图片:
我已经知道怎么求[AB]的圆心(Ax+Bx/2,Ay+By/2),怎么求[AB]线段的斜率(By-Ay/Bx-Ax) 然后是 [CD] 片段之一 (Ax-Bx/By-Ay)。但是后来我陷入了如何获得两分的问题。我以为我可以计算斜坡的角度,然后将它与一些三角函数一起使用以获得坐标,但这听起来像是一个非常繁重、丑陋和不必要的计算…… 感觉很接近,但我还是看不懂
我也找到了this post,几乎完美,但是不能定义长度:必须和第一段一样。
我不认为这是 language-dependent,但如果你必须知道,我正在做一个关于处理的迷你原型,稍后可能会在 javascript 上得到它。
感谢您的帮助。
这里的基本技巧是,在 2d 中,向量 (x, y) 的垂线仅为 ± (-y, x)。 (通过在 3d 中用 (0, 0, 1) 向量计算 cross product,然后投影到 2d 得到这个。)所以你需要做的是:
获取 A 和 B 之间的中点(你已经做到了)。
得到A到B的向量,即B - A = (x, y) = (bx - ax, by - ay)。
得到垂直向量:(-y, x).
标准化。让
length = sqrt(y*y + x*x)
,然后norm = (-y/length, x/length)
.将归一化垂直线乘以您想要的距离±
d/2
(因为您希望 C 和 D 之间的距离为d
),然后添加到中心点。
不需要斜率或三角函数。