前の記事に続く(四辺形クラスを定義する)
具体的なコードは次のとおりです。
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つのケースは真であり、他のケースは偽であると見なされますが、反対側が等しいと見なすよりも簡単だと思います。