コード例 #1
0
 public LRVertexResolver(CTTriangleMesh ctTriangleMesh, LRTriangleMesh lrTriangleMesh, bool[] vMarked, bool[] tMarked)
 {
     this.ctTriangleMesh = ctTriangleMesh;
     this.lrTriangleMesh = lrTriangleMesh;
     this.vMarked        = vMarked;
     this.tMarked        = tMarked;
 }
コード例 #2
0
        public LRTriangleResolver(CTTriangleMesh ctTriangleMesh, LRTriangleMesh lrTriangleMesh, bool[] vMarked, bool[] tMarked)
        {
            this.ctTriangleMesh = ctTriangleMesh;
            this.lrTriangleMesh = lrTriangleMesh;
            this.vMarked        = vMarked;
            this.tMarked        = tMarked;

            lrTriangleMesh.LR = new int[2 * lrTriangleMesh.MR];
            tProcessed        = new bool[ctTriangleMesh.Triangles.Length];
        }
コード例 #3
0
        public LRCornerResolver(ref LRTriangleMesh lrTriangleMesh, ref CTTriangleMesh ctTriangleMesh, ref bool[] tMarked, ref int[] vertexMapping)
        {
            this.lrTriangleMesh = lrTriangleMesh;
            this.ctTriangleMesh = ctTriangleMesh;
            this.tMarked        = tMarked;
            this.vertexMapping  = vertexMapping;

            O  = new List <int>();
            OS = new List <int>();
            IsolatedCorners = new List <int>();
        }
コード例 #4
0
ファイル: LRBuilder.cs プロジェクト: reneweb/Laced-Ring-Tool
        public LRTriangleMesh Build()
        {
            int[] vertexMapping;
            lrTriangleMesh = new LRTriangleMesh();

            //Run ring expander
            RingExpander();

            //Resolve vertices
            LRVertexResolver lrVertexResolver = new LRVertexResolver(ctTriangleMesh, lrTriangleMesh, vMarked, tMarked);
            lrTriangleMesh = lrVertexResolver.ResolveVertices(out vertexMapping);

            //Resolve triangles
            LRTriangleResolver lrTriangleResolver = new LRTriangleResolver(ctTriangleMesh, lrTriangleMesh, vMarked, tMarked);
            lrTriangleMesh = lrTriangleResolver.ResolveTriangles(vertexMapping);

            return lrTriangleMesh;
        }
コード例 #5
0
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            IFLTriangleMesh             iflTriangleMesh = MeshLoader.LoadMesh <IFLTriangleMesh>(inputPath);
            IConverter <LRTriangleMesh> converter       = Converter.GetSpecificConverter <IFLTriangleMesh, LRTriangleMesh>(iflTriangleMesh);

            lrTriangleMesh = converter.Convert();

            base.Initialize();

            BasicEffect e = new BasicEffect(GraphicsDevice);

            e.VertexColorEnabled = true;

            e.View = Matrix.CreateLookAt(new Vector3(0, 0, 5), new Vector3(0, 0, 0), Vector3.Up);

            float aspect = GraphicsDevice.Viewport.AspectRatio;

            e.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(60f), aspect, 1, 100);
            effect       = e;

            this.IsMouseVisible = true;
            mouseStatePrevious  = Mouse.GetState();
            keyStateCurrent     = Keyboard.GetState();

            this.Window.AllowUserResizing = true;

            RasterizerState s = new RasterizerState();

            s.CullMode = CullMode.None;
            GraphicsDevice.RasterizerState = s;

            int vertex = 0;

            currentCorner = lrTriangleMesh.VC(vertex);

            Vector3 cubePos = new Vector3((float)lrTriangleMesh.V[vertex].X, (float)lrTriangleMesh.V[vertex].Y, (float)lrTriangleMesh.V[vertex].Z);

            currentCube = new Cube(new Vector3(0.01f, 0.01f, 0.01f), cubePos);
        }
コード例 #6
0
        public LRTriangleMesh Execute(string fn)
        {
            LRTriangleMesh lrTriangleMesh = new LRTriangleMesh();

            List <Point3D>  v  = new List <Point3D>();
            int             mr = -1;
            List <int>      lr = new List <int>();
            List <int>      c  = new List <int>();
            List <Triangle> t  = new List <Triangle>();
            List <int>      o  = new List <int>();
            List <int>      ts = new List <int>();
            List <int>      os = new List <int>();

            bool isRingVertex = true;

            using (StreamReader sr = new StreamReader(fn))
            {
                String line = "";

                while (!sr.EndOfStream)
                {
                    line = sr.ReadLine();
                    if (line.StartsWith("V"))
                    {
                        if (isRingVertex)
                        {
                            ParseRingVertex(line, v, lr, ts, os);
                        }
                        else
                        {
                            ParseIsolatedVertex(line, v, c);
                        }
                    }

                    if (line.StartsWith("-"))
                    {
                        mr           = v.Count;
                        isRingVertex = false;
                    }

                    if (line.StartsWith("T"))
                    {
                        ParseTriangle(line, t);
                    }

                    if (line.StartsWith("O"))
                    {
                        ParseOpposites(line, o);
                    }
                }
            }

            lrTriangleMesh.V  = v.ToArray();
            lrTriangleMesh.MR = mr == -1 ? v.Count : mr;
            lrTriangleMesh.LR = lr.ToArray();
            lrTriangleMesh.C  = c.ToArray();
            lrTriangleMesh.T  = t.ToArray();
            lrTriangleMesh.O  = o.ToArray();
            lrTriangleMesh.TS = ts.ToArray();
            lrTriangleMesh.OS = os.ToArray();

            return(lrTriangleMesh);
        }
コード例 #7
0
 public LRWriter(LRTriangleMesh mesh)
 {
     this.mesh = mesh;
 }
コード例 #8
0
 public void UpdateLrMesh(LRTriangleMesh lrTriangleMesh)
 {
     this.lrTriangleMesh = lrTriangleMesh;
 }