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); }
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); }
//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); } }
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); }