private static void SetOriginFromPerpNext(PartitionParam setterParam) { Vector3d cornerPre = new Vector3d(setterParam.OriginPost.BasePureLine.UnitTangent); SetOriginNextStart(setterParam); Vector3d cornerPost = setterParam.OriginPost.BasePureLine.UnitTangent; CornerState cornerStat = GetCCWCornerState(cornerPre, cornerPost); if (cornerStat == CornerState.Convex) { return; } int currentIndex = setterParam.OutlineLabel.Core.FindIndex (i => (i.PureLine == setterParam.OriginPost.BasePureLine)); if (currentIndex == setterParam.OutlineLabel.Core.Count - 1) { SetPreEndToOrigin(setterParam); return; } SetNextDivOrigin(setterParam); return; }
private static void SetOriginFromEndPt(PartitionParam setterParam) { int testIndex = setterParam.OutlineLabel.Core.FindIndex (i => (i.PureLine == setterParam.OriginPost.BasePureLine)); if (testIndex == setterParam.OutlineLabel.Core.Count - 1) { return; } RoomLine formerCornerLine = setterParam.OutlineLabel.Core[testIndex]; RoomLine laterCornerLine = setterParam.OutlineLabel.Core[testIndex + 1]; PartitionOrigin laterStart = new PartitionOrigin(laterCornerLine.PureLine.PointAt(0), laterCornerLine); PartitionOrigin laterEnd = new PartitionOrigin(laterCornerLine.PureLine.PointAt(1), laterCornerLine); CornerState cornerStat = GetCCWCornerState(formerCornerLine.UnitTangent, laterCornerLine.UnitTangent); if (cornerStat == CornerState.Concave) { setterParam.OriginPost = laterEnd; SetNextDivOrigin(setterParam); return; } return; }