IsWindingInside() public static méthode

public static IsWindingInside ( WindingRule rule, int n ) : bool
rule WindingRule
n int
Résultat bool
Exemple #1
0
        private void AddRightEdges(ActiveRegion regUp, MeshUtils.Edge eFirst, MeshUtils.Edge eLast, MeshUtils.Edge eTopLeft, bool cleanUp)
        {
            bool flag = true;

            MeshUtils.Edge edge = eFirst;
            do
            {
                AddRegionBelow(regUp, edge._Sym);
                edge = edge._Onext;
            }while (edge != eLast);
            if (eTopLeft == null)
            {
                eTopLeft = RegionBelow(regUp)._eUp._Rprev;
            }
            ActiveRegion activeRegion = regUp;

            MeshUtils.Edge edge2 = eTopLeft;
            while (true)
            {
                ActiveRegion activeRegion2 = RegionBelow(activeRegion);
                edge = activeRegion2._eUp._Sym;
                if (edge._Org != edge2._Org)
                {
                    break;
                }
                if (edge._Onext != edge2)
                {
                    _mesh.Splice(edge._Oprev, edge);
                    _mesh.Splice(edge2._Oprev, edge);
                }
                activeRegion2._windingNumber = activeRegion._windingNumber - edge._winding;
                activeRegion2._inside        = Geom.IsWindingInside(_windingRule, activeRegion2._windingNumber);
                activeRegion._dirty          = true;
                if (!flag && CheckForRightSplice(activeRegion))
                {
                    Geom.AddWinding(edge, edge2);
                    DeleteRegion(activeRegion);
                    _mesh.Delete(edge2);
                }
                flag         = false;
                activeRegion = activeRegion2;
                edge2        = edge;
            }
            activeRegion._dirty = true;
            if (cleanUp)
            {
                WalkDirtyRegions(activeRegion);
            }
        }
Exemple #2
0
 private void ComputeWinding(ActiveRegion reg)
 {
     reg._windingNumber = RegionAbove(reg)._windingNumber + reg._eUp._winding;
     reg._inside        = Geom.IsWindingInside(_windingRule, reg._windingNumber);
 }