Kon*_*ten 5 algorithm geometry
我有一组五点:a,b,c,d,e.我想计算下面三角形的角Q,R.棘手的部分是Qe和Re之间的距离必须相等.
我正在使用直线L(x)= kx + m的公式,就像这个可爱的网页显示.第一交叉点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);
Run Code Online (Sandbox Code Playgroud)
然后,我卡住了.由于我不知道点Q的确切x坐标,我必须将它用作变量.即使在纸面上,我也会因为移动部件和子计算过多而导致大脑发生故障.我觉得我选择了一种糟糕而低效的方法解决问题,所以如果有人建议如何重新解决问题以使解决方案更加明显,我会很高兴.
以下是求 Q 和 R 的 x 值的方法:
让是包含和f(x)的直线方程。ab
让是包含和g(x)的直线方程。cd
然后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
Run Code Online (Sandbox Code Playgroud)
所以最后
z = (2 * e.y - k_ab * (e.x - a.x) - k_cd * (e.x - c.x) - a.y - c.y) / (k_ab - k_cd)
Run Code Online (Sandbox Code Playgroud)
和Q_x = e_x + z和R_x = e_x - z。我相信你可以从这里弄清楚剩下的事情。