121 字
1 分钟
Python 数学方法
图形几何
import numpy as np
def cal_Distance_Point2Point(p1:np.array, p2:np.array) -> np.array: """ @brief 计算 p1 到 p2 的距离 @param p1 [[x, y], ...] @param p2 [[x, y], ...] @return np.array([distance1, ....]) """ return np.sqrt(np.power(p1[:,0]-p2[:,0],2) + np.power(p1[:,1]-p2[:,1],2))
def cal_Distance_Point2Line(p1:np.array, p2:np.array, p3:np.array, absolute:bool = True) -> np.array: """ @brief 计算 p1 到 p2 和 p3 连线的距离 @param p1, p2, p3 [[x, y], ...] @param absolute True(只输出距离) False(带方向的距离) @return np.array([distance1, ....]) """ d1 = (p2[:,1]-p3[:,1]) * p1[:,0] + (p3[:,0]-p2[:,0]) * p1[:,1] + p2[:,0]*p3[:,1] - p2[:,1]*p3[:,0] d2 = np.sqrt(np.power(p2[:,0]-p3[:,0],2) + np.power(p2[:,1]-p3[:,1],2)) distance = d1 / d2 return abs(distance) if absolute else distance
def calA