Esempio n. 1
0
                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;
                }
Esempio n. 2
0
                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;
                }