当前位置: 技术问答>java相关
急!!!请帮帮忙
来源: 互联网 发布时间:2017-04-09
本文导语: 请问 怎样完成下列程序: 输入4个点坐标,判断是否是平行四边型,如果是画出图形,是矩形,画出矩形 如果不是,输出“不存在”。 | int x1,y1,x2,y2,x3,y3,x4,y4;//四个点(顺时针) int x,y;//提示的位置 p...
请问 怎样完成下列程序:
输入4个点坐标,判断是否是平行四边型,如果是画出图形,是矩形,画出矩形
如果不是,输出“不存在”。
输入4个点坐标,判断是否是平行四边型,如果是画出图形,是矩形,画出矩形
如果不是,输出“不存在”。
|
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);
}
}
矩形属于平行四边型不需例外处理
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);
}
}
矩形属于平行四边型不需例外处理
|
我觉奇怪,不知你们讨论什么吗
比如你用四个点画线,难道没顺序吗? 所以顺序肯定有的。何必如此大费干戈呢,岂不浪费。
比如我要画p1,p2,p3,p4,一般肯定有个顺序的,要不我改叫p2,p1,p4,p3算了。
更何况作参数,自己处理,就可定顺序,不是参数,那也得顺序啊!
不知各位是否考虑得太多了。^_^
比如你用四个点画线,难道没顺序吗? 所以顺序肯定有的。何必如此大费干戈呢,岂不浪费。
比如我要画p1,p2,p3,p4,一般肯定有个顺序的,要不我改叫p2,p1,p4,p3算了。
更何况作参数,自己处理,就可定顺序,不是参数,那也得顺序啊!
不知各位是否考虑得太多了。^_^
|
对了,看来是我误导了大家(我估计)。
我的代码意思是两边分别平行的四边形就是平行四边形。 我的点让一定顺序排所以才能分别是对应边的关系。
算距离也一样,同样要有约束。你用AB=BC去判断平行,显然也不通的。
还有其他的平行四边形条件你也一样的可用。 我本没打算写。
以为你提这个问题估计是不太懂Java(其实我也不太懂),
所以给个示意。
也有可能我没懂得你的意思。 ^_^
其实平行和距离便不是重要的,只是一种方法和思路,你也可用其他特性写啊!
我的代码意思是两边分别平行的四边形就是平行四边形。 我的点让一定顺序排所以才能分别是对应边的关系。
算距离也一样,同样要有约束。你用AB=BC去判断平行,显然也不通的。
还有其他的平行四边形条件你也一样的可用。 我本没打算写。
以为你提这个问题估计是不太懂Java(其实我也不太懂),
所以给个示意。
也有可能我没懂得你的意思。 ^_^
其实平行和距离便不是重要的,只是一种方法和思路,你也可用其他特性写啊!
|
我要求必是整数,必须顺时针。(最好x1,y1是左上点,这样如果要填充矩形的话容易) 不是你转换好了。况且绘图也是以象素为单位的。
这个要求整数和顺时针就好像一个自己的约束一样,这样代码才会有效,否则不论如何都会有漏洞和纰漏的。 让照一定的约束才是很多大型软件必备的要求。VC、VB、JBuilder、Office....没有例外,不可能万能的。
这个要求整数和顺时针就好像一个自己的约束一样,这样代码才会有效,否则不论如何都会有漏洞和纰漏的。 让照一定的约束才是很多大型软件必备的要求。VC、VB、JBuilder、Office....没有例外,不可能万能的。
|
对楼主啊,不是时,你自己转换一下,很容易的。 每个部分都会是有限的功能,有限组合才能接近无限的。
不好意思说多了废话。 自己转换很容易的。
不好意思说多了废话。 自己转换很容易的。
|
首先计算出每两点之间的距离
如A(a1,a2)B(b1,b2)C(c1,c2)D(d1,d2)
任意分成两组,比如AB=CD and AC=BD and AD =BC ====>是矩形
如A(a1,a2)B(b1,b2)C(c1,c2)D(d1,d2)
任意分成两组,比如AB=CD and AC=BD and AD =BC ====>是矩形
|
楼上的问题提的好,我也向导了这一点,可以这样处理,最原始的方法,用二元一次方程组,建立两条直线方程
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
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
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!