我有一套五点:a,b,c,d,e。我想计算下面三角形的角Q,R。棘手的部分是Q-e和R-e之间的距离必须相等。
我使用直线 L(x)= kx + m 的公式,如this cute webpage所示。第一交叉点P计算如下。
double k_ab = (b.Y - a.Y) / (b.X - a.X);
double m_ab = a.Y - k_ab * a.X;
double k_cd = (d.Y - c.Y) / (d.X - c.X);
double m_cd = c.Y - k_cd * c.X;
double p = (m_cd - m_ab) / (k_ab - k_cd);
Point P = new Point(p, k_ab * p + m_ab);
然后,我卡住了。由于我不知道点Q的精确x坐标,我必须将它用作变量。即使在纸上,我也会因为移动部件和子计算过多而导致脑部发生故障。我感觉我已经选择了一种糟糕而低效的方法解决问题,所以如果有人建议如何重新解决问题以使解决方案更加明显,我会很高兴。
答案 0 :(得分:1)
以下是如何找到Q和R的x值:
让f(x)
成为包含a
和b
的行的等式。
让g(x)
成为包含c
和d
的行的等式。
然后f(Q_x) - e_y == e_y - g(R_x)
和Q_x - e_x == e_x - R_x
让z = Q_x - e_x
要计算z,请求解f(e_x + z) - e_y = e_y - g(e_x - z)
,即
k_ab * (e.x + z - a.x) + a.y - e.y = e.y - c.y - k_cd * (e.x - z - c.x)
k_ab * (e.x + z - a.x) + k_cd * (e.x - z - c.x) = 2 * e.y - a.y - c.y
k_ab * (e.x - a.x) + k_cd * (e.x - c.x) + k_ab * z - k_cd * z = "
z * (k_ab - k_cd) = 2 * e.y - k_ab * (e.x - a.x) - k_cd * (e.x - c.x) - a.y - c.y
最后
z = (2 * e.y - k_ab * (e.x - a.x) - k_cd * (e.x - c.x) - a.y - c.y) / (k_ab - k_cd)
Q_x = e_x + z
和R_x = e_x - z
。我相信你可以从这里找出其余部分。
答案 1 :(得分:1)
我不知道以下是否属实,但是如果有三角测量的人确认了它,它可能会有所帮助。我只是想帮助我掌握基本的三角知识。
您知道P
和e
。绘制包含这两个点的直线,并与其垂直交叉。此垂线将在两个点A
和B
中穿过两条初始线。让我们使用距离(A,e)
和(e,B)
。
如果它们相等,则e
位于QPR
平分线中。 Q = A
和R = B
。
这就是我不知道的。如果(A,e)
比x
高(e,B)
倍,则角度PQR
也会比x
高PRQ
倍。在示例中,我将x
设置为3.三角形为180º,如您所知QPR
(这是问题的一部分),PQR
将是(x / x+1) * (180º - QPR)
并且PRQ = (1 / x+1) * (180º - QPR)
。
了解这个角度,您知道跨越Q
,e
和R
的线条的渐变。让它通过e
,你会知道Q
和R
这条线穿过另外两条线。