Example #1
0
        public static DependentPyramid dPyramid(AbstractPolygon basePoly, AbstractPoint apex)
        {
            DependentPyramid pyramid = DependentPyramid.Constructor();

            pyramid.basePolygon = basePoly;
            pyramid.apex        = apex;

            List <AbstractPolygon> sideList = new List <AbstractPolygon>();

            foreach (AbstractLineSegment baseLine in basePoly.lineList)
            {
                if (baseLine.GetComponent <InteractableLineSegment>() != null)
                {
                    List <AbstractPoint>       vertexList = new List <AbstractPoint>();
                    List <AbstractLineSegment> lineList   = new List <AbstractLineSegment>();

                    vertexList.Add(apex);
                    vertexList.Add(baseLine.GetComponent <InteractableLineSegment>().point1);
                    vertexList.Add(baseLine.GetComponent <InteractableLineSegment>().point2);

                    lineList.Add(baseLine);
                    lineList.Add(iLineSegment(apex, baseLine.GetComponent <InteractableLineSegment>().point1));
                    lineList.Add(iLineSegment(apex, baseLine.GetComponent <InteractableLineSegment>().point2));

                    sideList.Add(dPolygon(lineList, vertexList));
                }
                else
                {
                    List <AbstractPoint>       vertexList = new List <AbstractPoint>();
                    List <AbstractLineSegment> lineList   = new List <AbstractLineSegment>();

                    vertexList.Add(apex);
                    vertexList.Add(baseLine.GetComponent <DependentLineSegment>().point1);
                    vertexList.Add(baseLine.GetComponent <DependentLineSegment>().point2);

                    lineList.Add(baseLine);
                    lineList.Add(iLineSegment(apex, baseLine.GetComponent <DependentLineSegment>().point1));
                    lineList.Add(iLineSegment(apex, baseLine.GetComponent <DependentLineSegment>().point2));

                    sideList.Add(dPolygon(lineList, vertexList));
                }
            }

            pyramid.sides = sideList;

            HW_GeoSolver.ins.AddDependence(pyramid, basePoly);//This dependency must be first on the list for XMLManager Loading to operate correctly

            foreach (AbstractPolygon poly in sideList)
            {
                HW_GeoSolver.ins.AddDependence(pyramid, poly);
            }

            return(pyramid);
        }