パラレルグラムクラスを定義し、四辺形クラスを継承し、それがパラレルグラムであるかどうかを判断する関数を追加します

前の記事に続く(四辺形クラスを定義する)

具体的なコードは次のとおりです。

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;                                          
        }
    }

パラレルグラムかどうかを判断するとき、私はちょうど2つの反対側が等しいと思いました、そしてコードは次のとおりです:

//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;

ただし、これには入力頂点の順序が必要です。たとえば、私のコードでは、ユーザーが入力した最初の頂点と4番目の頂点は間接的に対角線である必要があるため、ユーザーが4つの頂点を入力すると、四辺形を形成できます。 、ただし、入力順序が異なるため、判断が異なる場合があります。
後で検討されました。反対側が平行である(つまり、側の勾配が等しい)2組の四辺形は平行四辺形です。平行四辺形では、対角線は辺と等しくなりますが、傾きは絶対に等しくありません。3つのケースは真であり、他のケースは偽であると見なされますが、反対側が等しいと見なすよりも簡単だと思います。

おすすめ

転載: blog.csdn.net/weixin_43362905/article/details/109559364