Exemple #1
0
        /// <summary>
        /// Round the polygon's corners.
        /// </summary>
        internal void RoundCorner()
        {
            if (_roundingRate > 0.0)
            {
                if (!_rounded)
                {
                    // ne doit être exécutée en principe qu'une fois
                    // pour permettre la binding et
                    // pour éviter les arrondis d'arrondis...
                    // inconvénient : si de nouveaux points sont ajoutés à PointList, on ne peut pas les arrondir
                    // la méthode publique InitializeNotRoundedPointList() est donc fournie pour forcer la réinitialisation
                    InitializeNotRoundedPointList();
                }

                Point3DCollection points = new Point3DCollection();
                for (int i = 0; i <= _notRoundedPoints.Count - 1; i++)
                {
                    Point3D pA = new Point3D();
                    Point3D pB = new Point3D();
                    Point3D pC = new Point3D();

                    pB = _notRoundedPoints[i];
                    if (i >= 1)
                    {
                        pA = _notRoundedPoints[i - 1];
                    }
                    else if (i == 0)
                    {
                        pA = _notRoundedPoints[_notRoundedPoints.Count - 1];
                    }
                    if (i < _notRoundedPoints.Count - 1)
                    {
                        pC = _notRoundedPoints[i + 1];
                    }
                    else if (i == _notRoundedPoints.Count - 1)
                    {
                        pC = _notRoundedPoints[0];
                    }

                    Point3DCollection pl = Helper3D.RoundCorner(pA, pB, pC, _roundingRate);
                    Helper3D.CopyPoints(pl, points);
                }
                Helper3D.ClonePoints(points, Points);
                _rounded = true;
            }
        }
Exemple #2
0
 /// <summary>
 /// Reinitialize not rounded points list, if necessary
 /// (i.e. after a Points initialization).
 /// </summary>
 /// <seealso cref="RoundCorner"/>
 public void InitializeNotRoundedPointList()
 {
     Helper3D.ClonePoints(Points, _notRoundedPoints);
 }