首页 > 解决方案 > 如何缩短点 AB 的直线

问题描述

我有一个带有点 A 和 B 的线段。我想要较短线段的点。

也许我可以使用斜率 dX / dY,但是当 dY 为 0 时有一个例外。另外如何表示这条线以保持这些操作简单?

标签: javascriptmath

解决方案


这是一种避免处理异常的方法。它甚至适用于 A 和 B 是同一点的退化情况。

如果你有一条从 A 点到 B 点的线段,并且你想让它的两边都短一点t(例如),你可以计算两个新点:t=0.1

C = (1 - t) * A + t * B
D = t * A + (1 - t) * B

并在这些新点之间绘制线段。在 2D 中,您需要对组件xy组件进行计算。在 3D 中,您还需要计算z组件。由于这是一个线性组合,C 和 D 将位于 AB 线上。

请注意,可以使用相同的方法来延长线段,方法是选择小于 0 或大于 1 的 t。


推荐阅读