Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Der Dude

Treue Seele

  • »Der Dude« ist der Autor dieses Themas

Beiträge: 73

Wohnort: Elleringhausen-City

Beruf: ITA

  • Private Nachricht senden

1

21.08.2005, 23:29

Dreieck dreht sich sehr langsam

Hallo,

leider dreht sich mein Dreieck sehr langsam. Irgendwie habe ich gedacht es würde wie in dem Buch 90° pro Sekunde machen. Ist aber leider nicht so ;(

Wäre schön, wenn jemand sich mal eben den Source angucken könnten:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
private void move()
        {
            ttime = (tstop - tstart) + ttime ;
        }

        private void render()
        {
            m_Device.Clear(ClearFlags.Target|ClearFlags.ZBuffer, System.Drawing.Color.Blue, 1.0f, 0);
            m_Device.BeginScene();
            {
                this.m_mWorld = Matrix.RotationY((float)((Math.PI / 4 * ttime) ));  
                m_Device.SetTransform(TransformType.World, this.m_mWorld);

                c1.DrawCube(m_Device);
            }
            m_Device.EndScene();
            m_Device.Present();
        }
    
        


        // Tom Miller

        public void MainLoop()
        {
            // Hook the application's idle event

             
                System.Windows.Forms.Application.Idle += new EventHandler(OnApplicationIdle);
                try
                {
                    System.Windows.Forms.Application.Run(this);
                }
                catch (DeviceLostException dle)
                {
                    MessageBox.Show("Fehler bei System.Windows.Froms.Application.Run(this);  " + dle.ErrorString);
                }
        }
        private void OnApplicationIdle(object sender, EventArgs e)
        {
          //  tstart = Tools.PerformanceCounter.Time;


            int result;
            while (AppStillIdle)
            {
                tstart = Tools.PerformanceCounter.Time;
              
                if(!m_Device.CheckCooperativeLevel(out result))
                {
                    if(result == (int)ResultCode.DeviceLost) 
                    {
                        // nichts zu machen, warte ein bisschen

                        System.Threading.Thread.Sleep(50);
                        continue; // nächste schleife

                    } 
                    else 
                    if(result == (int)ResultCode.DeviceNotReset) 
                    {
                        m_Device.Reset(m_PresentParameters);
                    }
                }
  
                move();
                try
                {
                    render();
                }
                catch (DeviceLostException dle)
                {
                    MessageBox.Show("Fehler bei render;  " + dle.ErrorString);
                }

                tstop = Tools.PerformanceCounter.Time;
            } 
        }


Bin über jeden Tipp dankbar.

MFG
TIM ;)
"Wenn ich morgens doppelt so schnell über den Flur laufe, kann ich 2 Minuten länger schlaften!" - leider war es ein Irrtum.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

21.08.2005, 23:37

C-/C++-Quelltext

1
Matrix.RotationY((float)((Math.PI / 4 * ttime) ));


45°/s wenn mich nicht alles täuscht...

richtig wär PI/2 !?

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

3

21.08.2005, 23:38

Re: Dreieck dreht sich sehr langsam

versuchs mal mit einer Klammersetzung! Anbei ein paar Schönheitsfehler korrigiert ;)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void move()
        {
            ttime += (tstop - tstart);
        }

        private void render()
        {
            m_Device.Clear(ClearFlags.Target|ClearFlags.ZBuffer, System.Drawing.Color.Blue, 1.0f, 0);
            m_Device.BeginScene();
            
            this.m_mWorld = Matrix.RotationY((float)((Math.PI / 4) * ttime));  
            m_Device.SetTransform(TransformType.World, this.m_mWorld);

            c1.DrawCube(m_Device);

            m_Device.EndScene();
            m_Device.Present();
        }

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

4

21.08.2005, 23:45

ist pi nicht 360° im Bogenmaß? meine schon oder?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

21.08.2005, 23:57

2 pi = 360°...

u = d * pi
d = 2 beim einheitskreis

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

6

22.08.2005, 00:03

Ok mein Fehler.. Dann würde ich es mal mit Klammersetzung und Pi/2 versuchen :D

Anonymous

unregistriert

7

22.08.2005, 01:13

Wozu Klammern setzen, die Reihenfolge passt doch

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

8

22.08.2005, 01:35

Wie gesagt nur ein Versuch, ich bin mir nicht sicher ob * und / den gleichen Stellenwert haben und ob der Compiler von rechts nach links kompiliert.. Ich mach immer Klammern.. macht das ganze auch übersichtlicher.

9

22.08.2005, 09:25

Ich mach auch immer Klammern bei jeder Gelegenheit, auch wenn sie nicht sein müssten :) hat sich glaub ich bwährt (habe nie Rechenfehler aufgrund von falscher Klammersetzung ;) )

mfg Markus-Lanner

Der Dude

Treue Seele

  • »Der Dude« ist der Autor dieses Themas

Beiträge: 73

Wohnort: Elleringhausen-City

Beruf: ITA

  • Private Nachricht senden

10

22.08.2005, 11:41

Wow,

vielen Dank für euer Bemühen. Kann es wirklich nur an den Klammern liegen?
Das mit dem PI war mein Fehler! *bekomme_einen_roten_Kopf*
Werde ich eben ändern. Aber die Geschwindigkeit dürfte dann nicht so langsam sein. Es dreht sich ca. alle 3 Sekunden um einen Pixel ;(

MFG
TIM
"Wenn ich morgens doppelt so schnell über den Flur laufe, kann ich 2 Minuten länger schlaften!" - leider war es ein Irrtum.

Werbeanzeige