コード例 #1
0
ファイル: Polygon.cs プロジェクト: SkzzDev/CS_Labo_Phase1
        public Polygon Extend(double extentionSize)
        {
            if (IsValid())
            {
                List <Coordonnees> newCoordCollection = new List <Coordonnees>();
                for (int i = 0; i < NbPoints; i++)
                {
                    ZZCoordinate previousPoint = (ZZCoordinate)Coordonnees[ZZFunctions.nmod(i - 1, NbPoints)], anglePoint = (ZZCoordinate)Coordonnees[i], nextPoint = (ZZCoordinate)Coordonnees[(i + 1) % NbPoints];
                    double       alpha = ZZMath.AngleFrom3Points(previousPoint, anglePoint, nextPoint), beta = (180 - alpha) / 2.0;
                    double       slopeAngle    = ZZMath.SlopeAngle(previousPoint, anglePoint) + beta;
                    double       distanceToAdd = extentionSize / Math.Cos(ZZMath.ToRadians(beta));

                    double newX = anglePoint.X + distanceToAdd * Math.Cos(ZZMath.ToRadians(slopeAngle));
                    double newY = anglePoint.Y + distanceToAdd * Math.Sin(ZZMath.ToRadians(slopeAngle));
                    newCoordCollection.Add(new Coordonnees(newX, newY));
                }
                return(new Polygon(newCoordCollection, BackgroundColor, BorderColor, Oppacity));
            }
            return(this);
        }