在距第一个点 X-axis 的特定距离处找到线上的一个点
Find a point on a line at a specific distance by X-axis from the first point
我有一条线,端点为 (x1,y1) 和 (x2,y2)。我的任务是在两者之间找到我的观点。我想从 (x1,y1) 中找到一个点 (xnew,ynew),使得 xnew 与 x1 的距离为 0.1 个单位。我怎么在这里找到ynew?
我的代码:
# I know how to find the mid point
def find_line_mid(x1,y1,x2,y2)
xnew = (x1+x2)/2
ynew = (y1+y2)/2
return xnew,ynew
# My attempt
# We know that slope along the line is constant. We use it here
sl = (y2-y1)/(x2-x1)
xnew = x1+0.1
ynew = sl*(xnew)+y1 # from y=mx+c
这是正确的方法吗?
如何找到距第一个点特定距离的点?
如果 3 分与 resp.坐标 (x1, y1), (x2, y2) 和 (xnew, ynew) 对齐,且 x1 != x2,则有以下关系:
ynew - y1 == (xnew - x1) * (y2 - y1) / (x2 - x1)
它立即给出:
ynew = y1 + (xnew - x1) * (y2 - y1) / (x2 - x1)
使用Shapely,您可以在距给定点(x1,y1)的指定距离处构造一条垂直线,并找到两条线的交点:
from shapely.geometry import LineString
x1, y1 = 0, 2
x2, y2 = 2, 0
x_dist = 0.5
line = LineString([(x1, y1), (x2, y2)])
x_new = x1 + x_dist
vertical = LineString([(x_new, y1), (x_new, y2)])
new_point = line.intersection(vertical)
print(new_point)
# POINT (0.5 1.5)
print(new_point.y)
# 1.5
此外,值得注意的是,Shapely 实际上提供了具有类似功能的 interpolate
方法,即在指定的 距离沿线 :[=16= 找到一个点]
line = LineString([(0, 0), (5, 5)])
distance = 2
new_point = line.interpolate(distance)
print(new_point)
# POINT (1.414213562373095 1.414213562373095)
我有一条线,端点为 (x1,y1) 和 (x2,y2)。我的任务是在两者之间找到我的观点。我想从 (x1,y1) 中找到一个点 (xnew,ynew),使得 xnew 与 x1 的距离为 0.1 个单位。我怎么在这里找到ynew?
我的代码:
# I know how to find the mid point
def find_line_mid(x1,y1,x2,y2)
xnew = (x1+x2)/2
ynew = (y1+y2)/2
return xnew,ynew
# My attempt
# We know that slope along the line is constant. We use it here
sl = (y2-y1)/(x2-x1)
xnew = x1+0.1
ynew = sl*(xnew)+y1 # from y=mx+c
这是正确的方法吗?
如何找到距第一个点特定距离的点?
如果 3 分与 resp.坐标 (x1, y1), (x2, y2) 和 (xnew, ynew) 对齐,且 x1 != x2,则有以下关系:
ynew - y1 == (xnew - x1) * (y2 - y1) / (x2 - x1)
它立即给出:
ynew = y1 + (xnew - x1) * (y2 - y1) / (x2 - x1)
使用Shapely,您可以在距给定点(x1,y1)的指定距离处构造一条垂直线,并找到两条线的交点:
from shapely.geometry import LineString
x1, y1 = 0, 2
x2, y2 = 2, 0
x_dist = 0.5
line = LineString([(x1, y1), (x2, y2)])
x_new = x1 + x_dist
vertical = LineString([(x_new, y1), (x_new, y2)])
new_point = line.intersection(vertical)
print(new_point)
# POINT (0.5 1.5)
print(new_point.y)
# 1.5
此外,值得注意的是,Shapely 实际上提供了具有类似功能的 interpolate
方法,即在指定的 距离沿线 :[=16= 找到一个点]
line = LineString([(0, 0), (5, 5)])
distance = 2
new_point = line.interpolate(distance)
print(new_point)
# POINT (1.414213562373095 1.414213562373095)