int x1,y1,x2,y2,x3,y3,x4,y4;//四个点(顺时针)
int x,y;//提示的位置public void paint(Graphics g) {
if((y2-y1)*(x3-x4)==(y3-y4)*(x2-x1)
&&(y3-y2)*(x4-x1)==(y4-y1)*(x3-x2)) {
g.drawLine(x1,y1,x2,y2);
g.drawLine(x2,y2,x3,y3);
g.drawLine(x3,y3,x4,y4);
g.drawLine(x4,y4,x1,y1);
} else {
g.drawString("不存在", x,y); 
}
}
矩形属于平行四边型不需例外处理

解决方案 »

  1.   

    我要求必是整数,必须顺时针。(最好x1,y1是左上点,这样如果要填充矩形的话容易)  不是你转换好了。况且绘图也是以象素为单位的。
    这个要求整数和顺时针就好像一个自己的约束一样,这样代码才会有效,否则不论如何都会有漏洞和纰漏的。  让照一定的约束才是很多大型软件必备的要求。VC、VB、JBuilder、Office....没有例外,不可能万能的。
      

  2.   

    首先计算出每两点之间的距离
    如A(a1,a2)B(b1,b2)C(c1,c2)D(d1,d2)
    任意分成两组,比如AB=CD and AC=BD and AD =BC ====>是矩形
      

  3.   

    对了,看来是我误导了大家(我估计)。我的代码意思是两边分别平行的四边形就是平行四边形。 我的点让一定顺序排所以才能分别是对应边的关系。算距离也一样,同样要有约束。你用AB=BC去判断平行,显然也不通的。还有其他的平行四边形条件你也一样的可用。  我本没打算写。
    以为你提这个问题估计是不太懂Java(其实我也不太懂),
    所以给个示意。也有可能我没懂得你的意思。  ^_^其实平行和距离便不是重要的,只是一种方法和思路,你也可用其他特性写啊!
      

  4.   

    楼上的问题提的好,我也向导了这一点,可以这样处理,最原始的方法,用二元一次方程组,建立两条直线方程
    AB   CD解方程如果没有解则平行,AB CD可以连线,否则有解判断是否在AB或者AB的延长线上,方法仍然是数学方法。如果在延长线AB CD可以连线,否则AB CD为对角线,连线AC BD AD BC然后再AC   BD解方程同上至于如何判断在延长线还是线段上的方法用数学方法非常简单啊
    取一个数字A 1-A 如果A*a1+(1-A)*b1=焦点横坐标h方程有解A>0&&A<1则在线段上
      

  5.   

    我觉奇怪,不知你们讨论什么吗比如你用四个点画线,难道没顺序吗?  所以顺序肯定有的。何必如此大费干戈呢,岂不浪费。
    比如我要画p1,p2,p3,p4,一般肯定有个顺序的,要不我改叫p2,p1,p4,p3算了。更何况作参数,自己处理,就可定顺序,不是参数,那也得顺序啊!不知各位是否考虑得太多了。^_^