Beispiel #1
0
    public DiscontinuityCurtain(PTwo xzStartCoord, Range1D continuityRangeAtZMinusOne, Range1D airRange)
    {
        bounds = Quad.UnitQuadWithPoint(xzStartCoord);

        ZCurtain inital_zc = new ZCurtain(xzStartCoord.t);

        inital_zc.setDiscontinuityStartWithSurfaceRange(continuityRangeAtZMinusOne, airRange);

        z_curtains.Add(inital_zc);
    }
Beispiel #2
0
    private bool checkAdjacencyAt(int xcoToCheckAgainst, int zco)
    {
        if (!bounds.sRange().contains(xcoToCheckAgainst))
        {
            return(false);
        }

        ZCurtain zcurtain = z_curtains[bounds.origin.s - xcoToCheckAgainst];

        foreach (SimpleRange curtainUnitRange in zcurtain.zCurtainsRanges())
        {
            if (curtainUnitRange.contains(zco))
            {
                return(true);
            }
        }
        return(false);
    }
Beispiel #3
0
    //TODO: need extra parameters for the air and surface at z plus 1!
    private void extendWithXZCoord(PTwo xzco, Range1D continuityRangeAtZPlusOrMinusOne, Range1D airRange, bool setTerminatingDisConStatus)
    {
        Range1D x_domain = bounds.sRange();

        if (x_domain.contains(xzco.s))
        {
            PTwo     relCo = xzco - bounds.origin;
            ZCurtain zcur  = z_curtains[relCo.s];
            if (setTerminatingDisConStatus)
            {
                zcur.extendCurtainToIncludeWocoZ(xzco.t, continuityRangeAtZPlusOrMinusOne, airRange);
            }
            else
            {
                zcur.extendCurtainToIncludeNonTerminationWocoZ(xzco.t);
            }

            z_curtains[relCo.s] = zcur;

            bounds = bounds.expandedToContainPoint(xzco);
        }
    }
Beispiel #4
0
    private bool doAddNewZCurtainSectionAt(PTwo xzco, Range1D continuityRangeAtZPlusOrMinusOne, Range1D airRange)
    {
        if (!thereIsAdjacencyOnOneSideOrTheOther(xzco))
        {
            return(false);
        }

        Range1D x_domain = bounds.sRange();

        if (x_domain.contains(xzco.s))
        {
            PTwo     relCo = bounds.origin - xzco;
            ZCurtain zcur  = z_curtains[relCo.s];

            zcur.addNewCurtainUnitWithZNegStartAt(xzco.t);
            zcur.setDiscontinuityStartWithSurfaceRange(continuityRangeAtZPlusOrMinusOne, airRange);
            z_curtains[relCo.s] = zcur;

            return(true);
        }

        if (x_domain.start - 1 == xzco.s)
        {
            ZCurtain zc = new ZCurtain(xzco.t);
            zc.setDiscontinuityStartWithSurfaceRange(continuityRangeAtZPlusOrMinusOne, airRange);
            z_curtains.Insert(0, zc);
            return(true);
        }
        else if (x_domain.extent() == xzco.s)
        {
            ZCurtain zc = new ZCurtain(xzco.t);
            zc.setDiscontinuityStartWithSurfaceRange(continuityRangeAtZPlusOrMinusOne, airRange);
            z_curtains.Add(zc);
            return(true);
        }

        return(false);
    }