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

04.10.2005, 23:12

Laufender Sinus

Hi,

ich habe mir einen Sinus aus vielen kleinen Punkten gemacht. Jetzt dachte ich mir es wäre doch recht schön, wenn das Ding auch noch laufen würde...

Dazu habe ich mir überlegt ich müsste das Arry doch immer nur rotieren lassen und jetzt sehe ich gar nichts mehr! Dazu hier der Source:

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
//Ablauffunktionen

        private void move()
        {
            ttime = Tools.PerformanceCounter.Time;

            System.Threading.Thread.Sleep(50);
            // Alle Positionen um einen nach rechts rücken lassen

           
            temp[0] = sinus[counter-1];
            for (int i = 0; i < counter-1; i++)
            {
                sinus[i+1] = sinus[i];
            }
            sinus[0] = temp[0];

        }
        private void render()
        {
            m_Device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, System.Drawing.Color.Blue, 1.0f, 0);
            m_Device.BeginScene();
            {
                m_Device.VertexFormat = CustomVertex.PositionColored.Format;
                m_Device.DrawUserPrimitives(PrimitiveType.PointList, counter, sinus);

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


Kann dort jemand den Fehler sehen. Würde mich sehr interessieren.

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

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

05.10.2005, 02:30

Wenn Du den Wert eines Index i dem jeweils nächsthöherem Index i+1 zuweist, musst Du den Zähler (Index) "von oben nach unten" durchlaufen. Oder Du überschreibst halt den Wert des nächsthöheren Index mit dem Wert des aktuellen Index.
Also in Deinem Fall:

C-/C++-Quelltext

1
2
3
4
5
6
temp = sinus[0];
for (int i = 0; i < counter - 1; i++)
{
    sinus[i] = sinus[i + 1];
}
sinus[counter - 1] = temp;
[/cpp]

Der Dude

Treue Seele

  • »Der Dude« ist der Autor dieses Themas

Beiträge: 73

Wohnort: Elleringhausen-City

Beruf: ITA

  • Private Nachricht senden

3

05.10.2005, 13:26

Ohh, ja.
Das ist mir jetzt sehr peinlich.
*bekomme_einen_roten_kopf*

Vielen Dank

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

Der Dude

Treue Seele

  • »Der Dude« ist der Autor dieses Themas

Beiträge: 73

Wohnort: Elleringhausen-City

Beruf: ITA

  • Private Nachricht senden

4

05.10.2005, 15:46

Mmmmh, habs grade geändert, aber der Sinus bewegt sich immer noch nicht. Hast du dafür auch eine erklärung?

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

Werbeanzeige