在读几何图元的直线由隐式格式转成“标准向量+距离”的格式的时候有点困惑。已知直线方程是:ax + by = d。
书上是这么写的:
从直线的隐格式转换到“标准向量+距离”形式: \\ n = [ a b ] / a 2 + b 2 \mathbf{n} = [a\:\:\:\:b]\:/ \sqrt{a^2+b^2} n=[ab]/a2+b2 \\ d i s t a n c e = d / a 2 + b 2 distance = d\:/\sqrt{a^2+b^2} distance=d/a2+b2
上式中,n被加粗了,它代表的是一个单位向量(模是1),并且垂直于已知直线。distance代表的是从原点到直线的距离。当时看的时候,n是单位向量好理解,但是第二个式子从原点到直线的距离公式是怎么推出来的?
其实,n所在的直线与给定的直线是垂直关系,那么原点到直线的距离所在的直线与n向量处于平行关系,如图:
因此,过0点和A点的直线方程的斜率可根据n向量的坐标得到:
y = b a x y = \frac{b}{a}x y=abx
它与所给直线组成线性方程组,就交点坐标,再求距离: 求得:
x = d ∗ a / ( a 2 + b 2 ) x = d*a\ / ({a^2 + b^2}) x=d∗a /(a2+b2) \\ y = d ∗ b / ( a 2 + b 2 ) y = d*b\ / ({a^2 + b^2}) y=d∗b /(a2+b2) \\ d i s t a n c e = x 2 + y 2 = d / a 2 + b 2 distance = \sqrt{x^2+y^2}=d\:/\sqrt{a^2+b^2} distance=x2+y2 =d/a2+b2
得证!