经检测,如下公式能做出左右方向的梯形图形。
function getPointBySq(startX,startY,startW,endX,endY,endW){
var ED=sqr(distance(startX,startY,endX,endY))-sqr(endW-startW);
var a=4*(sqr(startY-endY)+sqr(startX-endX));
var b=4*(
(
sqr
(
endX-startX
)+sqr
(
startW
)-(
sqr(
endW
)+ED
)-sqr(
endY
)+sqr(
startY
)
)*(endY-startY)-2*sqr(endX-startX)*startY
);
var c=sqr(sqr(endX-startX)+sqr(startW)-sqr(endW)-ED-sqr(endY)+sqr(startY))-4*sqr(endX-startX)*(sqr(startW)-sqr(startY));
var y1=(-b- Math.sqrt(sqr(b)-4*a*c))/(2*a);
var y2=(-b+ Math.sqrt(sqr(b)-4*a*c))/(2*a);
var x1=Math.sqrt(sqr(startW)-sqr(y1-startY))+startX;
var x2=Math.sqrt(sqr(startW)-sqr(y2-startY))+startX;
var twoPoint=[[x1,y1],[x2,y2]];
return twoPoint;
}