如何获得两点之间的点?
How to get a point between two points?
我正在使用 UIBezierPath 绘制带有两个点的线(以多个角度),但我想绘制比两点之间的距离短一点的线。
我尝试了以下代码来找到两点之间的一个点:
let x3 = x2 + 0.9 * (x1 - x2);
let y3 = y2 + 0.9 * (y1 - y2);
它在 1 或 2 个角度有效,但在其他角度无效。我怎样才能得到正确的点?谢谢。
=== 已编辑 ===
现在我从搜索中得到了一些想法,但我仍然无法实现它
得到两点之间的距离,然后负15,因为我要短一点
let distance = sqrt(pow((p2.x - p1.x), 2) + pow((p2.y - p1.y), 2)) - 15
获取直线角度:
let angle = (p2.y - p1.y) / (p2.x - p1.x)
获取点 3 的距离和角度:
let x = p1.x + (distance * cos(angle))
let y = p1.y - (distance * sin(angle))
是角度错误的问题,函数atan2
给出了正确的角度值。现在整个代码工作完美。
let angle = atan2((p2.y - p1.y), (p2.x - p1.x))
我正在使用 UIBezierPath 绘制带有两个点的线(以多个角度),但我想绘制比两点之间的距离短一点的线。
我尝试了以下代码来找到两点之间的一个点:
let x3 = x2 + 0.9 * (x1 - x2);
let y3 = y2 + 0.9 * (y1 - y2);
它在 1 或 2 个角度有效,但在其他角度无效。我怎样才能得到正确的点?谢谢。
=== 已编辑 ===
现在我从搜索中得到了一些想法,但我仍然无法实现它
得到两点之间的距离,然后负15,因为我要短一点
let distance = sqrt(pow((p2.x - p1.x), 2) + pow((p2.y - p1.y), 2)) - 15
获取直线角度:
let angle = (p2.y - p1.y) / (p2.x - p1.x)
获取点 3 的距离和角度:
let x = p1.x + (distance * cos(angle)) let y = p1.y - (distance * sin(angle))
是角度错误的问题,函数atan2
给出了正确的角度值。现在整个代码工作完美。
let angle = atan2((p2.y - p1.y), (p2.x - p1.x))