source: 2017/27/SimoR/juttuja/Jypeli3D/Jypeli3D/Jypeli3D/Helix.cs @ 8949

Revision 8949, 2.0 KB checked in by sieerinn, 2 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8using Vector3 = Microsoft.Xna.Framework.Vector3;
9
10
11public partial class Jypeli3D : Game
12{
13    void LuoKentta2()
14    {
15        ClearAll();
16        pallot.Clear();
17        LisaaOhjaimet();
18
19        piirtoEtaisyys = 10;
20        ihmeJuttu = 1.0;
21        kameranPaikka = new Vector3(0, 6, -4);
22        kulma = Vector3.Zero;
23        ruudut = null;
24
25        Level.Background.Color = Color.Black;
26
27        // Helixin luonti.
28        for (int i = 0; i < 60; i++)
29        {
30            float angle = i * 0.2f;
31            float height = i * 0.2f;
32
33            // Poikkiviiva 10 pallon välein.
34            if (i % 10 == 0)
35            {
36                for (int j = -3; j <= 3; j++)
37                {
38                    LuoPallo(new Vector3((float)Math.Sin(angle) * (j / 4f), height, (float)Math.Cos(angle) * (j / 4f)), Color.Red, 300);
39                }
40            }
41
42            // Kierteen luonti.
43            LuoPallo(new Vector3((float)Math.Sin(angle), height, (float)Math.Cos(angle)), Color.Red, 300);
44
45            // Vastapuolen kierre.
46            angle += (float)Math.PI;
47            LuoPallo(new Vector3((float)Math.Sin(angle), height, (float)Math.Cos(angle)), Color.Red, 300);
48        }
49
50        // Ajastin joka pyörittää palloja.
51        Timer ajastin = new Timer();
52        ajastin.Interval = 0.02;
53        ajastin.Timeout += delegate
54        {
55            foreach (var pallo in pallot)
56            {
57                double distance = Math.Sqrt(pallo.Sijainti.X * pallo.Sijainti.X + pallo.Sijainti.Z * pallo.Sijainti.Z);
58                double angle = Math.Atan2(pallo.Sijainti.Z, pallo.Sijainti.X);
59                angle += 0.005;
60                pallo.Sijainti = new Vector3((float)(Math.Cos(angle) * distance), pallo.Sijainti.Y, (float)(Math.Sin(angle) * distance));
61            }
62        };
63        ajastin.Start();
64    }
65}
Note: See TracBrowser for help on using the repository browser.