Example #1
0
        private void timer1_Tick(object sender, EventArgs e)
        {
            Vector v = new Vector( .000001, 0 );
             Vector f = new Vector( .000001, 0 );
             //ApplyForce( v,f );
             r.Integrate();

             pictureBox1.Invalidate();
        }
Example #2
0
        private void spring(SolidRigid r , Vector local, Vector world)
        {
            Vector vv = r.LocalToWorld( local );

             double distance = (world - vv).Distance();

             Vector direction = (world - vv) / distance;

             r.ApplyForce(vv, direction * (.000001 * distance));
        }
Example #3
0
        public void Integrate()
        {
            pos += vel;
             vel += acc;

             angle += w;
             w += alpha;

             MatRot.Rotation(angle);
        }
Example #4
0
        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            Vector s = new Vector(100, 80);
             Vector v = new Vector( 20, 0 );

             spring(r, v, s);

             Vector vv = r.LocalToWorld(v);
             DrawVector(e, Pens.Black, vv, s);
             //DrawVector(e, Pens.Red, vv, vv + dir * 10);

             e.Graphics.DrawLine(Pens.Beige, 100, 100,  (float)vv.X,  (float)vv.Y);

             r.Draw(e);
        }
Example #5
0
 private void DrawVector(PaintEventArgs e, Pen p, Vector a, Vector b)
 {
     e.Graphics.DrawLine(p, (float)a.X, (float)a.Y, (float)b.X, (float)b.Y);
 }
Example #6
0
 public Vector LocalToWorld(Vector localpos)
 {
     return RotMatrix()*localpos+pos;
 }
Example #7
0
 public void ApplyForce(Vector p, Vector force)
 {
     alpha = (p - pos) ^ force;
 }