定义平行四边形类,继承四边形类,增加判断是否为平行四边形的函数

   日期:2020-11-17     浏览:93    评论:0    
核心提示:接上一篇(定义四边形类)具体代码如下:class PXSBX : SBX //平行四边形类,继承四边形类 { public bool IsPXSBX() //判断是否为平行四边形 { if (((Py2 - Py1) * (Px4 - Px3) == (Py4 - Py

接上一篇(定义四边形类)

具体代码如下:

class PXSBX : SBX                                       //平行四边形类,继承四边形类 
    { 
        public bool IsPXSBX()                               //判断是否为平行四边形
        { 
            if (((Py2 - Py1) * (Px4 - Px3) == (Py4 - Py3) * (Px2 - Px1)) && ((Py4 - Py1) * (Px2 - Px3) == (Py2 - Py3) * (Px4 - Px1)))
                return true;
            else if (((Py3 - Py1) * (Px4 - Px2) == (Py4 - Py2) * (Px3 - Px1)) && ((Py4 - Py1) * (Px2 - Px3) == (Py2 - Py3) * (Px4 - Px1)))
                return true;
            else if (((Py2 - Py1) * (Px4 - Px3) == (Py4 - Py3) * (Px2 - Px1)) && ((Py3 - Py1) * (Px2 - Px4) == (Py2 - Py4) * (Px3 - Px1)))
                return true;                                //两组对边分别平行(即边的斜率相等)的四边形则为平行四边形
            else
                return false;                                          
        }
    }

判断是否为平行四边形时,我刚开始想的是两组对边相等,写的代码如下:

//double I1, I2, I3, I4; //四条边的长度
            //I1 = Math.Sqrt(Math.Abs((Px1 - Px2) * (Px1 - Px2) + (Py1 - Py2) * (Py1 - Py2)));
            //I2 = Math.Sqrt(Math.Abs((Px1 - Px3) * (Px1 - Px3) + (Py1 - Py3) * (Py1 - Py3)));
            //I3 = Math.Sqrt(Math.Abs((Px4 - Px2) * (Px4 - Px2) + (Py4 - Py2) * (Py4 - Py2)));
            //I4 = Math.Sqrt(Math.Abs((Px4 - Px3) * (Px4 - Px3) + (Py4 - Py3) * (Py4 - Py3)));
            //if ((I1 == I4) && (I2 == I3))
            // return true; //对边均相等,则为平行四边形
            //else 
            // return false;

但是这样对输入的顶点顺序就有要求了,比如我的代码里就间接性要求用户输入的第一个顶点和第四个顶点是对角的,所以当用户输入了可以形成四边形的四个顶点,但是可能会因为输入顺序不同而判断不同。
后来就考虑了:两组对边分别平行(即边的斜率相等)的四边形则为平行四边形。在平行四边形里对角线也是可以与边相等的,但是斜率是肯定不会相等,虽然考虑了三种情况下是true,其他是false,但我觉得比考虑对边相等容易。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服