Changeset 9285 for 2017/30


Ignore:
Timestamp:
2017-07-31 18:53:44 (2 years ago)
Author:
mianhayr
Message:
 
Location:
2017/30/MikkoH/Sq
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • 2017/30/MikkoH/Sq/Sq/Sq/Sq.cs

    r9284 r9285  
    55public class Sq : PhysicsGame 
    66{ 
    7     List<Vector> ps = new List<Vector>(), crc = new List<Vector>(); 
    8     double x, y, z, a, fac = Math.Pow(2, -15), rad = 50, radc = 0.01, mag = 4; 
     7    List<Vector> ps, crc; 
     8    double rad = 50, radc = 0.01, mag = 2; 
    99 
    1010    public override void Begin() 
     
    1313        Mouse.IsCursorVisible = true; 
    1414        Level.Background.Color = Color.Black; 
    15          
    16         for (int i = -300; i <= 300; i += 10) ps.Add(new Vector(-300, i)); 
    17         for (int i = -300; i <= 300; i += 10) ps.Add(new Vector(i, 300)); 
    18         for (int i = 300; i >= -300; i -= 10) ps.Add(new Vector(300, i)); 
    19         for (int i = 300; i >= -300; i -= 10) ps.Add(new Vector(i, -300)); 
    2015 
    21         for (int i = 0; i <= 150; i++) 
    22             crc.Add(new Vector(Math.Sin(i) * rad, Math.Cos(i) * rad)); 
     16        ps = CreateSquare(100, 10); 
     17        crc = CreateCircle(50, 150);       
    2318    } 
    2419 
     20    // s = length of side, d = distance between pts 
     21    List<Vector> CreateSquare(int s, int d) 
     22    { 
     23        List<Vector> sq = new List<Vector>(); 
     24        for (int i = -s; i <= s; i += d) sq.Add(new Vector(-s, i)); 
     25        for (int i = -s; i <= s; i += d) sq.Add(new Vector(i, s)); 
     26        for (int i = s; i >= -s; i -= d) sq.Add(new Vector(s, i)); 
     27        for (int i = s; i >= -s; i -= d) sq.Add(new Vector(i, -s)); 
     28        return sq; 
     29    } 
     30 
     31    // rad = starting radius, n = number of pts 
     32    List<Vector> CreateCircle(int rad, int n) 
     33    { 
     34        List<Vector> crc = new List<Vector>(); 
     35        for (int i = 0; i <= n; i++) 
     36            crc.Add(new Vector(Math.Sin(i) * rad, Math.Cos(i) * rad)); 
     37        return crc; 
     38    } 
     39 
     40    // rotates any shape clockwise or anti if reversed 
     41    void Rotate(List<Vector> vs, bool reverse = false) 
     42    { 
     43        double d = Time.SinceLastUpdate.TotalSeconds; 
     44        if (reverse) d = -d; 
     45        for (int i = 0; i < vs.Count; i++) 
     46            vs[i] = new Vector(vs[i].X * Math.Cos(-d) - vs[i].Y * Math.Sin(-d), 
     47                               vs[i].X * Math.Sin(-d) + vs[i].Y * Math.Cos(-d)); 
     48    } 
     49 
     50    // does everything 
    2551    protected override void Paint(Canvas c) 
    2652    { 
    2753        c.BrushColor = Color.Red; 
    2854 
     55        // draws the square and squeezes it 
    2956        for (int i = 0; i < ps.Count; i++) 
    3057        { 
    3158            c.DrawLine(ps[i % ps.Count], ps[(i + ps.Count / 4) % ps.Count]); 
    32             ps[i] = Vector.FromLengthAndAngle(ps[i].Magnitude + mag, ps[i].Angle); 
     59            //ps[i] = Vector.FromLengthAndAngle(ps[i].Magnitude + mag, ps[i].Angle); 
    3360            if (ps[i].Magnitude < 1 || ps[i].Magnitude > 200) mag = -mag; 
    34         }             
     61            ps[i] += new Vector(5, 5); 
     62        } 
    3563 
    3664        c.BrushColor = Color.Blue; 
    37             
     65 
     66        // draws the circle and squeezes it 
    3867        for (int i = 0; i < crc.Count; i++) 
    3968        { 
     
    4877        base.Paint(c); 
    4978    } 
    50  
    51     void Rotate(List<Vector> vs, bool reverse = false) 
    52     { 
    53         double d = Time.SinceLastUpdate.TotalSeconds; 
    54         if (reverse) d = -d; 
    55         for (int i = 0; i < vs.Count; i++) 
    56             vs[i] = new Vector(vs[i].X * Math.Cos(-d) - vs[i].Y * Math.Sin(-d), 
    57                                vs[i].X * Math.Sin(-d) + vs[i].Y * Math.Cos(-d)); 
    58     } 
    5979} 
Note: See TracChangeset for help on using the changeset viewer.