关闭。此问题不符合 Stack Overflow 准则。它目前不接受答案。这个问题似乎与帮助中心定义的范围内的编程无关。 6 个月前关闭。社区在 6 个月前审查了是否重新打开此问题并将其关闭:原始关闭原因未解决 改进此问题
假设我有一条从 (x1,y1) 到 (x2,y2) 的线段。如何计算垂直于线的法向量?
我可以找到很多关于为 3D 飞机执行此操作的内容,但没有 2D 内容。
请在数学上轻松一点(欢迎提供工作示例、图表或算法的链接),我是一名程序员,而不是一名数学家;)
如果我们定义 dx = x2 - x1
和 dy = y2 - y1
,那么法线是 (-dy, dx)
和 (dy, -dx)
。
请注意,不需要除法,因此您不会冒被零除的风险。
另一种思考方式是计算给定方向的单位矢量,然后逆时针旋转 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)
和{的线3}。这条线的方向是 (x2-x1,y2-y1)
或 (dx,dy)
。
所以,
(x',y').(dx,dy) = 0
x'.dx + y'.dy = 0
有很多对 (x',y') 满足上述等式。但始终满足的最佳配对是 (dy,-dx)
或 (-dy,dx)
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..
如果你想从你定义的点传递它
不定期副业成功案例分享