javascript - 如何缩短点 AB 的直线
问题描述
我有一个带有点 A 和 B 的线段。我想要较短线段的点。
也许我可以使用斜率 dX / dY,但是当 dY 为 0 时有一个例外。另外如何表示这条线以保持这些操作简单?
解决方案
这是一种避免处理异常的方法。它甚至适用于 A 和 B 是同一点的退化情况。
如果你有一条从 A 点到 B 点的线段,并且你想让它的两边都短一点t
(例如),你可以计算两个新点:t=0.1
C = (1 - t) * A + t * B
D = t * A + (1 - t) * B
并在这些新点之间绘制线段。在 2D 中,您需要对组件x
和y
组件进行计算。在 3D 中,您还需要计算z
组件。由于这是一个线性组合,C 和 D 将位于 AB 线上。
请注意,可以使用相同的方法来延长线段,方法是选择小于 0 或大于 1 的 t。
推荐阅读
- python - argparse 不适用于 Windows 上的 Cython
- python - Python int 太大而无法放入 SQLite
- sql - 如何将 X 秒添加到 SQL 中的多行?
- android - React Native Maps:标记图像不显示在 react-native-maps 中使用自定义标记
- c++ - 使用 splashkit 依次显示多个 C++ 图像
- c# - .NET C#:HttpClient 和 TaskCanceledException 异常
- python - 如何在 Django 中访问 html?
- php - PHP:无法解码 base64 编码的 JPEG
- java - Tomcat 9 / JNDI 数据源 - 无法为连接 URL 'null' 创建类 '' 的 JDBC 驱动程序
- php - 如何从 Slim 微框架中的 JSON 文件中读取数据?