假设有一条从(x1,y1)到(x2,y2)的线段。如何计算垂直于直线的法向量?
我可以找到很多关于在3D平面上做这个的东西,但没有2D的东西。
请在数学上放松(欢迎链接到工作示例,图表或算法),我是一个程序员,而不是一个数学家;)
假设有一条从(x1,y1)到(x2,y2)的线段。如何计算垂直于直线的法向量?
我可以找到很多关于在3D平面上做这个的东西,但没有2D的东西。
请在数学上放松(欢迎链接到工作示例,图表或算法),我是一个程序员,而不是一个数学家;)
m1 = (y2 - y1) / (x2 - x1)
若两条直线垂直:
m1*m2 = -1
然后
m2 = -1 / m1 //if (m1 == 0, then your line should have an equation like x = b)
y = m2*x + b //b is offset of new perpendicular line..
B是从你定义的点开始传递的
如果我们定义dx = x2 - x1和dy = y2 - y1,那么法线是(-dy, dx)和(dy, -dx)。
注意,这里不需要除法,所以不用冒被0除的风险。
另一种思考方法是计算给定方向的单位向量,然后应用90度逆时针旋转来得到法向量。
一般二维变换的矩阵表示是这样的:
x' = x cos(t) - y sin(t)
y' = x sin(t) + y cos(t)
其中(x,y)是原向量的分量,(x', y')是变换后的分量。
如果t = 90度,那么cos(90) = 0, sin(90) = 1。代入并乘出:
x' = -y
y' = +x
与之前给出的结果相同,但对它的来源有更多的解释。
我们知道:如果两个向量垂直,它们的点积等于零。
法向量(x',y')垂直于连接(x1,y1)和(x2,y2)的直线。这条直线的方向是(x2-x1,y2-y1)或者(dx,dy) 所以,
(x',y').(dx,dy) = 0
x'.dx + y'.dy = 0
有很多对(x',y')满足上面的方程。但ALWAYS满足的最佳对是(dy,-dx)或(-dy,dx)