void TestInplaneSameVertex()
 {
     TopoModel    model = new TopoModel();
     TopoVertex   v1    = model.addVertex(new RHVector3(0, 0, 0));
     TopoVertex   v2    = model.addVertex(new RHVector3(10, 0, 0));
     TopoVertex   v3    = model.addVertex(new RHVector3(10, 10, 0));
     TopoVertex   v4    = model.addVertex(new RHVector3(10, -1, 0));
     TopoVertex   v5    = model.addVertex(new RHVector3(7, 1, 0));
     TopoVertex   v6    = model.addVertex(new RHVector3(1, -7, 0));
     TopoTriangle t1    = model.AddTriangle(new TopoTriangle(model, v1, v2, v3));
     TopoTriangle t2    = model.AddTriangle(new TopoTriangle(model, v1, v4, v6));
 }
 void TestInplaneInsideSameEdgeIntersects()
 {
     TopoModel    model = new TopoModel();
     TopoVertex   v1    = model.addVertex(new RHVector3(0, 0, 0));
     TopoVertex   v2    = model.addVertex(new RHVector3(10, 0, 0));
     TopoVertex   v3    = model.addVertex(new RHVector3(10, 10, 0));
     TopoVertex   v4    = model.addVertex(new RHVector3(1, 1, 0));
     TopoVertex   v5    = model.addVertex(new RHVector3(7, 1, 0));
     TopoVertex   v6    = model.addVertex(new RHVector3(5, 3, 0));
     TopoTriangle t1    = model.AddTriangle(new TopoTriangle(model, v1, v2, v3));
     TopoTriangle t2    = model.AddTriangle(new TopoTriangle(model, v1, v2, v6));
 }
 void TestRightAngle()
 {
     TopoModel    model = new TopoModel();
     TopoVertex   v1    = model.addVertex(new RHVector3(0, 0, 0));
     TopoVertex   v2    = model.addVertex(new RHVector3(10, 0, 0));
     TopoVertex   v3    = model.addVertex(new RHVector3(5, 5, 0));
     TopoVertex   v4    = model.addVertex(new RHVector3(0, 0, -5));
     TopoVertex   v5    = model.addVertex(new RHVector3(10, 0, -5));
     TopoVertex   v6    = model.addVertex(new RHVector3(5, 0, 5));
     TopoTriangle t1    = model.AddTriangle(new TopoTriangle(model, v1, v2, v3));
     TopoTriangle t2    = model.AddTriangle(new TopoTriangle(model, v4, v5, v6));
 }
 void TestInplaneOutside()
 {
     TopoModel    model = new TopoModel();
     TopoVertex   v1    = model.addVertex(new RHVector3(0, 0, 0));
     TopoVertex   v2    = model.addVertex(new RHVector3(10, 0, 0));
     TopoVertex   v3    = model.addVertex(new RHVector3(10, 10, 0));
     TopoVertex   v4    = model.addVertex(new RHVector3(11, 1, 0));
     TopoVertex   v5    = model.addVertex(new RHVector3(17, 1, 0));
     TopoVertex   v6    = model.addVertex(new RHVector3(11, 7, 0));
     TopoTriangle t1    = model.AddTriangle(new TopoTriangle(model, v1, v2, v3));
     TopoTriangle t2    = model.AddTriangle(new TopoTriangle(model, v4, v5, v6));
 }
 void TestInplane3D_1()
 {
     TopoModel    model = new TopoModel();
     TopoVertex   v1    = model.addVertex(new RHVector3(3.67848944664001, -2.6547646522522, 1.38814495312454E-14));
     TopoVertex   v2    = model.addVertex(new RHVector3(1.62981510162354, -1.05116808414459, 1.83297828141877E-14));
     TopoVertex   v3    = model.addVertex(new RHVector3(2.29873323440552, -0.79055267572403, 2.11497486191092E-14));
     TopoVertex   v4    = model.addVertex(new RHVector3(1.63205575942993, -1.05116808414459, 2.78849697113037));
     TopoVertex   v5    = model.addVertex(new RHVector3(0.916237592697144, -1.1297744512558, 1.83297828141877E-14));
     TopoVertex   v6    = model.addVertex(new RHVector3(1.38571500778198, -1.07829427719116, 2.67316389083862));
     TopoTriangle t1    = model.AddTriangle(new TopoTriangle(model, v1, v2, v3));
     TopoTriangle t2    = model.AddTriangle(new TopoTriangle(model, v4, v5, v6));
 }
示例#6
0
        public bool SmoothAspectRatio(TopoModel model, double maxRatio)
        {
            double maxLen, minLen;
            int    maxIdx, minIdx;

            LongestShortestEdgeLength(out maxIdx, out maxLen, out minIdx, out minLen);
            if (minLen == 0)
            {
                return(false);
            }
            if (maxLen > 1 && maxLen / minLen > maxRatio)
            {
                RHVector3 center = edges[maxIdx].v1.pos.Add(edges[maxIdx].v2.pos);
                center.Scale(0.5);
                TopoVertex newVertex = new TopoVertex(0, center);
                model.addVertex(newVertex);
                edges[maxIdx].InsertVertex(model, newVertex);
                return(true);
            }
            return(false);
        }
示例#7
0
        void TestInplaneOutside()
        {
            TopoModel    model = new TopoModel();
            TopoVertex   v1    = model.addVertex(new RHVector3(0, 0, 0));
            TopoVertex   v2    = model.addVertex(new RHVector3(10, 0, 0));
            TopoVertex   v3    = model.addVertex(new RHVector3(10, 10, 0));
            TopoVertex   v4    = model.addVertex(new RHVector3(11, 1, 0));
            TopoVertex   v5    = model.addVertex(new RHVector3(17, 1, 0));
            TopoVertex   v6    = model.addVertex(new RHVector3(11, 7, 0));
            TopoTriangle t1    = model.AddTriangle(new TopoTriangle(model, v1, v2, v3));
            TopoTriangle t2    = model.AddTriangle(new TopoTriangle(model, v4, v5, v6));

            if (t1.Intersects(t2))
            {
                faildTests++;
                Console.WriteLine("Failed test:TestInplaneOutside");
            }
        }
示例#8
0
        void TestSharedPointIntersect()
        {
            TopoModel    model = new TopoModel();
            TopoVertex   v1    = model.addVertex(new RHVector3(0, 0, 0));
            TopoVertex   v2    = model.addVertex(new RHVector3(10, 0, 0));
            TopoVertex   v3    = model.addVertex(new RHVector3(5, 5, 0));
            TopoVertex   v4    = model.addVertex(new RHVector3(0, 0, -5));
            TopoVertex   v5    = model.addVertex(new RHVector3(10, 0, -5));
            TopoVertex   v6    = model.addVertex(new RHVector3(5, 0, 5));
            TopoTriangle t1    = model.AddTriangle(new TopoTriangle(model, v1, v2, v3));
            TopoTriangle t2    = model.AddTriangle(new TopoTriangle(model, v1, v5, v6));

            if (!t1.Intersects(t2))
            {
                faildTests++;
                Console.WriteLine("Failed test:TestSharedPointIntersect");
            }
        }
示例#9
0
        void TestInplaneInsideSameEdgeIntersects()
        {
            TopoModel    model = new TopoModel();
            TopoVertex   v1    = model.addVertex(new RHVector3(0, 0, 0));
            TopoVertex   v2    = model.addVertex(new RHVector3(10, 0, 0));
            TopoVertex   v3    = model.addVertex(new RHVector3(10, 10, 0));
            TopoVertex   v4    = model.addVertex(new RHVector3(1, 1, 0));
            TopoVertex   v5    = model.addVertex(new RHVector3(7, 1, 0));
            TopoVertex   v6    = model.addVertex(new RHVector3(5, 3, 0));
            TopoTriangle t1    = model.AddTriangle(new TopoTriangle(model, v1, v2, v3));
            TopoTriangle t2    = model.AddTriangle(new TopoTriangle(model, v1, v2, v6));

            if (!t1.Intersects(t2))
            {
                faildTests++;
                Console.WriteLine("Failed test:TestInplaneInsideSameEdgeIntersects");
            }
        }