示例#1
0
        private void timerAnim_Tick(object sender, EventArgs e)
        {
            if (animDir != 0)
            {
                keyDownCount++;
                if (keyDownCount == 25)
                {
                    timerAnim.Interval = 50;
                }
                else if (keyDownCount == 50)
                {
                    timerAnim.Interval = 25;
                }
                else if (keyDownCount == 100)
                {
                    timerAnim.Interval = 10;
                }

                step += animDir;
                if (step < 0)
                {
                    step += maxStep + 1;
                }
                if (step > maxStep)
                {
                    step -= maxStep + 1;
                }
                selected = null;
                UpdateModel();
            }
        }
示例#2
0
 public MeshAnim(string name, TriMesh.Vertex vertex, List <TriMesh.Triangle> mesh, List <TriMesh.Triangle> reds, List <TriMesh.Triangle> greens, TriMesh.Halfedge edge)
 {
     Name = name;
     if (vertex != null)
     {
         NewVertex              = new SimpleCAD.Circle(vertex.ToPointF(), featureSize);
         NewVertex.FillStyle    = SimpleCAD.FillStyle.Yellow;
         NewVertex.OutlineStyle = SimpleCAD.OutlineStyle.Black;
     }
     if (mesh != null)
     {
         Mesh = new List <SimpleCAD.Drawable>();
         foreach (TriMesh.Triangle t in mesh)
         {
             if (t.IsSuperTriangle)
             {
                 Mesh.AddRange(DrawTri(t, SimpleCAD.OutlineStyle.Black, SimpleCAD.FillStyle.LightGray));
             }
             else
             {
                 Mesh.AddRange(DrawTri(t, SimpleCAD.OutlineStyle.Black, SimpleCAD.FillStyle.LightGoldenrodYellow));
             }
         }
     }
     if (reds != null)
     {
         RedTri = new List <SimpleCAD.Drawable>();
         foreach (TriMesh.Triangle t in reds)
         {
             RedTri.AddRange(DrawTri(t, SimpleCAD.OutlineStyle.Black, SimpleCAD.FillStyle.LightCoral));
         }
     }
     if (greens != null)
     {
         GreenTri = new List <SimpleCAD.Drawable>();
         foreach (TriMesh.Triangle t in greens)
         {
             GreenTri.AddRange(DrawTri(t, SimpleCAD.OutlineStyle.Black, SimpleCAD.FillStyle.LightGreen));
         }
     }
     if (edge != null)
     {
         Edge = new SimpleCAD.Line(edge.V1.ToPointF(), edge.V2.ToPointF());
         Edge.OutlineStyle = new SimpleCAD.OutlineStyle(Color.Blue, 3);
     }
 }
示例#3
0
 private void meshView_ItemClick(object sender, SimpleCAD.ItemClickEventArgs e)
 {
     if ((e.Button & MouseButtons.Left) != MouseButtons.None)
     {
         selected = null;
         PointF pt = meshView.View.ScreenToWorld(e.Location);
         foreach (SimpleCAD.Drawable d in anim[step].Mesh)
         {
             SimpleCAD.Triangle t = d as SimpleCAD.Triangle;
             if (t != null && t.Contains(pt))
             {
                 selected = t;
                 break;
             }
         }
         UpdateModel();
     }
 }