source: 2017/30/MikkoH/Sq/Sq/Sq/Sq.cs @ 9284

Revision 9284, 2.0 KB checked in by mianhayr, 2 years ago (diff)

square squeezaa mut menee rikki

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4
5public class Sq : PhysicsGame
6{
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;
9
10    public override void Begin()
11    {
12        Window.Width = 1200; Window.Height = 800;
13        Mouse.IsCursorVisible = true;
14        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));
20
21        for (int i = 0; i <= 150; i++)
22            crc.Add(new Vector(Math.Sin(i) * rad, Math.Cos(i) * rad));
23    }
24
25    protected override void Paint(Canvas c)
26    {
27        c.BrushColor = Color.Red;
28
29        for (int i = 0; i < ps.Count; i++)
30        {
31            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);
33            if (ps[i].Magnitude < 1 || ps[i].Magnitude > 200) mag = -mag;
34        }           
35
36        c.BrushColor = Color.Blue;
37           
38        for (int i = 0; i < crc.Count; i++)
39        {
40            c.DrawLine(crc[i % crc.Count], crc[(i + 2) % crc.Count]);
41            crc[i] = new Vector(Math.Sin(i) * rad, Math.Cos(i) * rad);
42            if (rad < 1 || rad > 100) radc = -radc;
43            rad -= radc;
44        }
45
46        Rotate(ps); Rotate(crc, true);
47
48        base.Paint(c);
49    }
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    }
59}
Note: See TracBrowser for help on using the repository browser.