角平分线的求解思路,如图,求∠ABC的角平分线:
(1)在BC(或BC的延长线)上取一点D,使|AB|=|BD|。
(2)求线段AD的中点E,则直线BE即为∠ABC的角平分线。
点D的坐标可以根据三角形相似来求解,如x满足|BD|/|BC|=(D.x-B.x)/(C.x-B.x)。
/* 角平分线,输入:角ABC<180度 */
Line AngleBisector(Point A, Point B, Point C)
{
double ba = DistanceOfPoints(A, B);
double bc = DistanceOfPoints(B, C);
// 利用三角形相似,求点D
double k = ba / bc;
Point D;
D.x = (C.x - B.x) * k + B.x;
D.y = (C.y - B.y) * k + B.y;
// 线段AD的中点E
Point E;
E.x = (A.x + D.x)/2;
E.y = (A.y + D.y)/2;
return LineMake(B, E);
}