点到直线

假设直线L1: Ax+By+C=0Ax+By+C=0Ax+By+C=0,直线外一点(x0,y0)(x_0,y_0)(x0,y0),点到直线的垂直距离为ddd

d=∣Ax0+By0+C∣A2+B2d=\frac{\lvert Ax_0+By_0+C \rvert}{\sqrt{A^2+B^2}}d=A2+B2 Ax0+By0+C

用Matlab计算

需要注意坐标的表示方式

// 当坐标为行向量
p0 = [3,6]
p1 = [3,4]
p2 = [5,6]
d = abs(det([p2-p1;p0-p1])/norm(p2-p1))%d=1.1414

// 当坐标为列向量
p0 = [3;6]
p1 = [3;4]
p2 = [5;6]
d = abs(det([p2-p1,p0-p1])/norm(p2-p1))%d=1.414

// 当坐标为三维空间坐标
p0 = [3;6;4]
p1 = [3;4;3]
p2 = [5;6;5]
d = norm(cross(p2-p1,p0-p1)/norm(p2-p1)%d=1.414

直线间夹角

L1: A1x+B1y+C1=0A_1x+B_1y+C_1=0A1x+B1y+C1=0
L2: A2x+B2y+C2=0A_2x+B_2y+C_2=0A2x+B2y+C2=0
cos⁡θ=∣A1A2+B1B2∣A12+B12⋅A22+B22\cos \theta=\frac{\lvert A_1A_2+B_1B_2 \rvert}{\sqrt{A_1^2+B_1^2} \cdot \sqrt{A_2^2+B_2^2}}cosθ=A12+B12 A22+B22 A1A2+B1B2, θ∈[0,π2]\theta \in[0,\frac{\pi}{2}]θ[0,2π]

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐