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

1

05.02.2005, 01:23

Übungsaufgaben 2.2.8; Aufgabe 1 (Seite 101)

Hi,

mein Lösungsvorschlag:

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
#include <iostream>
#include <tribase.h>

using namespace std;

int main()
{   
    tbInit();
    tbVector3* memory=(tbVector3*)tbMemAlloc(sizeof(tbVector3)*1000);
    
    tbWriteToLog("-------------------------------------------------------\n");
    
    tbVector3 berechnen(0,0,0);

    for(int i=0;i<1000;i++)
    {
        memory[i]=tbVector3Random();
        memory[i]=memory[i]*tbFloatRandom(0,10);
        berechnen+=memory[i];
    }

    berechnen/=1000;
    tbWriteVector3ToLog(berechnen);
    tbWriteToLog("-------------------------------------------------------\n");

    TB_SAFE_MEMFREE(memory);
    tbExit();

    system("Pause");
    return 0;
}

Fragen und Anregungen sind erwünscht! :huhu:

Cya
::check your reality::

2

07.02.2005, 16:45

ich habs so ähnlich gemacht!

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
#include <iostream>
#include <tribase.h>

using namespace std;

void show(const tbVector3& v)
{
    cout<<": ("<<v.x<<", "<<v.y<<", "<<v.z<<")"<<endl;
}

int main()
{
    tbInit();

    tbVector3 vSum(0,0,0), vRandom(0,0,0);
    float fLength;

    for(int i = 0; i < 5000; i++)
    {
        //Zufallsvektor erzeugen

        vRandom = tbVector3Random();
        fLength = tbFloatRandom(0.0f, 10.0f);
        //länge randomisieren

        vRandom *= fLength;
        vSum += vRandom;
        //show(vSum);

    }
    show(vSum);
    cout<<endl;

    vSum /= 5000;
    show(vSum); 
    tbWriteVector3ToLog(vSum);

    tbExit();
    return 0;
}


es gibt noch ne func "show" die einen vector auf dem bildschirm ausgibt...

dabei ist mir aufgefallen, das, je mehr vektoren addiert werden, desto mehr neigt der summenvektor dazu negativ zu sein. -komisch-

ist das bei dir auch so?? ...oder mach ich irgendwo müll..?

3

16.02.2005, 21:16

Hi prokaion,

Habe folgende Ergebnisse:
10 Vektoren:

Zitat

3D-Vektor: x = 0.003, y = -0.010, z = 0.003, Länge = 0.011
3D-Vektor: x = -0.013, y = -0.020, z = -0.016, Länge = 0.029
3D-Vektor: x = -0.021, y = 0.003, z = 0.005, Länge = 0.022
1000 Vektoren:

Zitat

3D-Vektor: x = -0.411, y = -0.154, z = -0.303, Länge = 0.533
3D-Vektor: x = -0.385, y = -0.229, z = -0.174, Länge = 0.481
3D-Vektor: x = -0.384, y = -0.400, z = -0.104, Länge = 0.564
10000 Vektoren:

Zitat

3D-Vektor: x = -2.716, y = -2.737, z = -2.945, Länge = 4.851
3D-Vektor: x = -2.872, y = -3.034, z = -3.077, Länge = 5.189
3D-Vektor: x = -1.966, y = -2.953, z = -2.119, Länge = 4.133
Also es scheint bei mir genau so zusein wie bei dir......
PS: Sorry. dass lange am Board nicht das war, hatte Prüfungen....

Cya
::check your reality::

Brego

Frischling

Beiträge: 11

Beruf: Student

  • Private Nachricht senden

4

07.07.2005, 01:00

Hallo,

sorry wenn ich diese alte Thema wieder aufwärme, aber ich hab ne Frage zu dieser Aufgabe. Hab sie so gelöst:

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
#include <Windows.h>

#include <TriBase.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                   char* pcCommandLine, int iShowCmd )
{
    
    if(tbInit())            
    {
        tbWriteToLog("Fehler beim starten der Engine");
    }
    else
    {
        const int m = 5000;
        tbVector3 a[m];
        tbVector3 b = (0.0f,0.0f,0.0f);
        tbVector3 c = (0.0f,0.0f,0.0f);
        float f = 0;

        tbWriteVector3ToLog(b);

        for (int i=0; i<m; i++)
        {
            a[i] = tbVector3Random();
            f = tbFloatRandom(0.00f, 10.00f);
            a[i]*=f;
        }
        
        for (i=0; i<m; i++)
        {
            b+=a[i];
        }

        c = b / m;

        tbWriteVector3ToLog(c);
        

    }

    tbExit(); 


    return NULL;

}


Zitat

3D-Vektor: x = -0.264, y = -0.343, z = -0.243, Länge = 0.496


Was mich jetzt verwirrt ist die Äußerung im Buch, dass sich der Mittelwert-Vektor den Nullverktor annähern soll. Das macht der aber nicht. Bei euch scheint es ja ähnlich gewesen zu sein. Interpretiere ich das Buch falsch oder hab ich gar irgendwo einen Fehler gemacht? ???

Mastermind

unregistriert

5

07.07.2005, 13:06

Grundsätzlich scheint die These, dass sich die Summe eine genügend Großen menge von Zufallszahlen zwischen x und -x der Null nähert richtig zu sein. Inwiefern sich das jetzt auf vier gekoppelte Zufallszahlen (3d Vektor + Länge) übertragen lässt ist mir unbekannt. Es könnte auch ein Fehler im Code sein, ich hab mir denselben nicht angesehen.

scalar hat im ZFX allerdings mal eine untersuchung durchgeführt, die ergab dass bestimmte Zahlen deutlich häufiger vorkommen als andere wenn man den Modulooperator zum eingrenzen des Wertebereich hernimmt. Möglicherweise liegt es auch daran.

Brego

Frischling

Beiträge: 11

Beruf: Student

  • Private Nachricht senden

6

07.07.2005, 19:18

Hm naja wenn ich einen Fehler gemacht hab sehe ich ihn zumindest nicht. Egal ich betrachte die Aufgabe mal als erledigt und mach einfach weiter ;) aber danke für die Antwort.

Grüße

Werbeanzeige