三角形已知一点和 其对边中点,求等腰三角形的其他两个点,分为三步:
1、先用直线y=ax+b算出斜率a和偏移量b
2、利用直线获得二次方程的系数
3、带入公式分别算出点的坐标,返回三个点的坐标
function getSanjiaoxingOtherPoint(dot, bottomLineMiddleDot) {
var [x1, y1] = dot, //顶点坐标
[x2, y2] = bottomLineMiddleDot; //底边中点坐标
var bottomLineLength = 8; //底边长度
var lineA = -(x1 - x2) / (y1 - y2); //底边线的斜率
var lineB = (lineA * x2 - y2) * -1; //底边线的偏移量
var a = 1 + Math.pow(lineA, 2),
b = 2 * (lineA * lineB - x2 - lineA * y2),
c = Math.pow(x2, 2) + Math.pow(y2, 2) + Math.pow(lineB, 2) - 2 * lineB * y2 - Math.pow((
bottomLineLength / 2), 2);
var xa = (-1 * b + Math.sqrt(Math.pow(b, 2) - 4 * a * c)) / 2 * a,
xb = (-1 * b - Math.sqrt(Math.pow(b, 2) - 4 * a * c)) / 2 * a;
var ya = lineA * xa + lineB,
yb = lineA * xb + lineB;
return [dot, [xa, ya],
[xb, yb]
];
}