Math 使用该直线上的点查找垂直直线

Math 使用该直线上的点查找垂直直线,math,coordinates,line,Math,Coordinates,Line,我有一条直线(P1,P2)和该直线上的一个点(中点)。我可以用什么方程来求通过中点的直线(P1,P2)的垂线。标有“?”的点未知。我不希望使用角度,只使用给定的3个点(P1、P2、中点)。线P1、P2可以具有任何方向/角度 提前谢谢 P1的坐标:(x1,y1) P2的坐标:(x2,y2) 中点坐标:((x1+x2)/2,(y1+y2)/2) P1P2线的斜率:(y1-y2)/(x1-x2) 任何垂直于P1P2的直线的斜率:(x2-x1)/(y1-y2) 红线方程:y-(y1+y2)/2=((x2

我有一条直线(P1,P2)和该直线上的一个点(中点)。我可以用什么方程来求通过中点的直线(P1,P2)的垂线。标有“?”的点未知。我不希望使用角度,只使用给定的3个点(P1、P2、中点)。线P1、P2可以具有任何方向/角度

提前谢谢

P1的坐标:(x1,y1) P2的坐标:(x2,y2)

中点坐标:((x1+x2)/2,(y1+y2)/2) P1P2线的斜率:(y1-y2)/(x1-x2) 任何垂直于P1P2的直线的斜率:(x2-x1)/(y1-y2)

红线方程:y-(y1+y2)/2=((x2-x1)/(y1-y2))*(x-(x1+x2)/2)

如果你有P1 y P2坐标的实际值,那么只需进行替换。

让我们定义向量

D = P2 - P1  (dx=x2-x1, dy = y2-y1)
中间点

mx = (x2+x1)/2
my = (y2+y1)/2
垂直于D向量

PD = (-dy, dx)
单位(归一化)垂直向量

U = (-dy / L, dx / L)
where
L = Sqrt (dx * dx + dy * dy)
位于距离中间F处的点的坐标为

x = mx + U.x * F
y = my + U.y * F
或(用于另一侧的点)


我投票结束这个问题,因为它是关于数学,而不是编程。你想用什么编程语言来解决这个问题?谢谢你的回答,但是我不完全理解如何计算“?”的坐标?你首先需要知道,黑线和“?”点之间的距离。@Daniel Saldaña避免在计算几何中使用斜率,垂直线和/或水平线不存在斜率@MBo你是对的,但我使用它们是因为Joe Morgan说:“线P1,P2可以是任何方向/角度。”这绝对正确。也许在执行过程中有一些错误……是我的错。我的代码有一个小问题。。现在的问题是,如果我想做同样的事情,如果我们加上z轴的值,需要做什么。在3D的情况下,我们有无穷多的垂直度(圆周),所以有必要选择一些方向,这取决于实际任务。我知道垂直线的长度,我知道中点,我有x,y,z坐标中的两个顶点P1,P2。我怎样才能得到顶点的坐标,这个顶点执行我要画的垂直线。你能详细说明一下吗?你想如何从无数个可能的方向中选择一个方向?随机?一些偏好?
x = mx - U.x * F
y = my - U.y * F