求初始点指定距离外的二维点:画线程序功能实现咨询
核心思路与计算公式
已知条件定义
- 起点(用户确定的第一个点):
(x₁, y₁) - 临时鼠标点(用于获取方向):
(x₂, y₂) - 用户输入的目标距离:
D
计算步骤
生成方向向量:计算从起点指向临时鼠标点的向量分量
- 横向分量:
dx = x₂ - x₁ - 纵向分量:
dy = y₂ - y₁
- 横向分量:
计算方向向量的实际长度:用欧几里得距离公式算出起点到临时鼠标点的距离
L = √(dx² + dy²)- 注意:若
L=0(鼠标与起点重合),需提示用户移动鼠标以确定方向
获取单位方向向量:将方向向量缩小为长度为1的向量,确保后续乘以目标距离时不会偏离方向
- 横向单位分量:
dx_unit = dx / L - 纵向单位分量:
dy_unit = dy / L
- 横向单位分量:
计算目标点坐标:用起点坐标加上单位向量乘以目标距离的位移量
- 目标点横坐标:
x_target = x₁ + dx_unit * D - 目标点纵坐标:
y_target = y₁ + dy_unit * D
- 目标点横坐标:
补充说明
- 相比斜率计算,向量法能适配所有角度(包括垂直、水平方向),不会出现无穷大的异常情况
- 若允许用户输入负的
D,目标点会生成在起点的反方向上,可根据需求决定是否支持该逻辑
内容的提问来源于stack exchange,提问作者Lucas Moura
相关产品推荐
相关产品推荐

