如图所示,三条直线之间的关系,并确定最终拖动的点的坐标的取值范围,几个点的坐标位置都可以确定,不过当我拖动其中的一个点的时候,这个点的坐标就会实时发生改变,我需要知道这个点坐标的取值范围来划定这个点,是用纯JS来写的代码,所以如果可以,请尽量用js来讲述,感谢!
maxX=1000;//最右边
maxY=1000;//最下边
// 判断点4是否 直线 右边
function isRight(x4,y4,lx,ly,rx,ry){
m = (ry-ly)/(rx-lx);
y = m * x4 + (ly - m * lx );
if (y4>=y){
return false;
}
return ture;
}
//点 4 (x4,y4)是否在范围内
function isInArea(x4,y4,x1,y1,x2,y2,x3,y3){
if(x4>maxX) return false;
if(y4>maxY) return false;
// 同时在3条直线右边,就在范围内
return isRight(x4,y4,x1,y1,x2,y2) && isRight(x4,y4,x3,y3,x1,y1) && isRight(x4,y4,x3,y3,x2,y2)
}
这个很好判断吧 p4在三条直线的上面?不好判断?
会的就写上答案吧,就不用说容易还是难了,你觉得容易,OK,证明你牛,不用说一些有的没的。
假设阴影区域与X轴交于A(m1,n1)点,与边界交于B(m2,n2)点,分3段,
当P4,x取值为m1-x3时,y取值为n1-y3
当P4,x取值为x3-x2时,y取值为y3-y2
当P4,x取值为x2--m2时,y取值为y2-n2,这样限定P4,
关于求A点坐标,A点的纵坐标为0,A在直线P1P3,该直线斜率k为(y1-y3)/(x1-x3),与y轴交点坐标b为y3-(y1x3)/x1,可知A点横左标
B点的算法类似,