如何计算线段的法向量?
假设我有一条从(x1,y1)到(x2,y2)的线段。 如何计算垂直于线的法向量?
我可以在3D中find很多有关这样的飞机的东西,但没有2D的东西。
请在math上轻松一些(链接到工作的例子,图表或algorithm是受欢迎的),我是一个程序员,而不是我是一个math家;)
如果我们定义了dx = x2-x1和dy = y2-y1,那么法线是(-dy,dx)和(dy,-dx)。
请注意,不需要划分,所以你不用冒被零除的风险。
另一种考虑方法是计算给定方向的单位向量,然后应用90度逆时针旋转来获得法向量。
一般2D变换的matrix表示如下所示:
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
与之前所给出的结果相同,但是对于其来源有更多的解释。
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是一些东西
这个问题已经被很久以前发布了,但是我find了一种可以回答的方法。 所以我决定在这里分享。
首先,必须知道:如果两个向量垂直,他们的点积等于零。
法向vector(x',y')
垂直于连接(x1,y1)
和(x2,y2)
的直线。 这条线有方向(x2-x1,y2-y1)
或(dx,dy)
。
所以,
(x',y').(dx,dy) = 0 x'.dx + y'.dy = 0
满足上式的大量对(x',y')。 但总是满足的最好的一对是(dy,-dx)
或(-dy,dx)