Math 找到一个垂直于给定直线的点
我想找到一个垂直于给定直线的点z(x3,y3)。在我的例子中,我得到了两个坐标A(x1,y1)和B(x2,y2)。我想找到点z,它垂直于AB线,距离B点,ABZ角是90。 这是我的C++代码。Math 找到一个垂直于给定直线的点,math,equation,cartesian,Math,Equation,Cartesian,我想找到一个垂直于给定直线的点z(x3,y3)。在我的例子中,我得到了两个坐标A(x1,y1)和B(x2,y2)。我想找到点z,它垂直于AB线,距离B点,ABZ角是90。 这是我的C++代码。 double AB_slope=m;//了解它 //找到垂直于AB线的z点 双AZ_坡度=-1/m double x3=x2+规定的_距离*dx double y3=y2+规定的_距离*dy 但我不知道如何找到dx,dy和指定的距离。请帮帮我。让我把你的问题改成我想的,然后回答 你的分数是A=(x1,y1
double AB_slope=m;//了解它
//找到垂直于AB线的z点
双AZ_坡度=-1/m代码>
double x3=x2+规定的_距离*dx代码>
double y3=y2+规定的_距离*dy代码>
但我不知道如何找到dx,dy和指定的距离。请帮帮我。让我把你的问题改成我想的,然后回答
你的分数是A=(x1,y1)
和B=(x2,y2)
。您希望找到一个点Z=(x3,y3)
,使得AZ
垂直于AB
,并且BZ
具有长度h
从A
到B
的向量是v=(x2-x1,y2-y1)
。一个易于计算的垂直向量是w=(y2-y1,x1-x2)
。垂直于AB
的穿过A
的线表示为F(s)=A+s*w=(x1+s*(y2-y1),y1+s*(x1-x2))
ass
在实数范围内。因此,我们需要选择一个值s
,使F(s)
远离B
根据毕达哥拉斯定理,从F(s)
到B
的长度的平方总是从F(s)
到A
的距离的平方,加上从A
到B
的距离的平方。从中我们得到了我们想要的混乱表达式:
h**2 = s**2 * ((y2 - y1)**2 + (x1-x2)**2) + ((x1 - x2)**2 + (y1 - y2)**2))
= s**2 * ((x1 - x2)**2 + (y1 - y2)**2)) + ((x1 - x2)**2 + (y1 - y2)**2))
= (s**2 + 1) * ((x1 - x2)**2 + (y1 - y2)**2))
(s**2 + 1) = h**2 / ((x1 - x2)**2 + (y1 - y2)**2))
s**2 = h**2 / ((x1 - x2)**2 + (y1 - y2)**2)) - 1
s = sqrt(h**2 / ((x1 - x2)**2 + (y1 - y2)**2)) - 1)
现在把s
的表达式插回到F(s)=(x1+s*(y2-y1),y1+s*(x1-x2))
中,你就得到了你的观点Z
。另一个可能的答案是另一边的距离相同。点不能垂直于线。这是一个数学问题,问它问题的条件是否包括h
值,或者你只想找到穿过a
并与AB
正交的线的任何点?@devan,如果你需要帮助,你需要参与,并解释更多你想要的。有无限多的点距离B(假设现实的h>AB)事实上,所有这些点的集合描述了一个以a为中心的圆。@Lance Roberts在三维空间中,这些点的集合将描述一个圆。在4维空间中,它将形成一个球体。但是给出的代码是针对二维的,然后你会得到2分。我给出的技巧可以找到这些点。好的,在2D中肯定是+1。(虽然我们可能永远不知道OP真正想要什么)。@B请你澄清一下这个答案中**
的含义好吗?e、 g.h**2
@Styne666它表示幂运算。在许多C派生的编程语言(例如C、C++、java、perl、Ruby、…)中,意味着XOR,所以使用**代替幂运算。