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

13.08.2006, 18:46

Seite 98 Übungsaufgabe 1 zum Thema Vektoren

hi,

bin grad bei der übung auf seite 98 (3. auflage) zum thema vektoren.

Dort sollen 5000 zufallsvektoren erzeugt werden, mit einer zufallslänge zwischen 0 und 10. diese sollen aufaddiert werden, und die summe aller vektoren durch 5000 dividiert werden, damit man den mittelwert errechnet.

das ergebniss soll dann ungefähr dem Nullvektor entsprechen.

dabei sollen tbVector3Random und tbFloatRandom verwenden werden.

Allerdings drehe ich mich hier etwas im Kreis. ich kann tbVector3Random gar keine zufallslänge mitgeben, die Methode benutzt intern zwar tbFloatRandom, allerdings ist der float bereich dort hard codiert so das ich ihn nicht ändern kann.
Wie kann ich jetzt über tbVector3Random einen Vector mit einer variablen länge zwischen 0 und 10 erzeugen?

Ich stehe da ehrlich gesagt etwas auf dem Schlauch. Danke für nen Tipp...

CW_Kovok

Alter Hase

Beiträge: 836

Wohnort: nähe Bonn

Beruf: Schüler

  • Private Nachricht senden

2

13.08.2006, 18:54

ähm strecken?
Was es alles gibt, das ich nich brauche - Aristoteles

3

13.08.2006, 19:30

Zitat von »"CW_Kovok"«

ähm strecken?


hm? was soll mir das jetzt sagen?

CW_Kovok

Alter Hase

Beiträge: 836

Wohnort: nähe Bonn

Beruf: Schüler

  • Private Nachricht senden

4

13.08.2006, 20:13

was tut man mit dingen die zwischen 0 und 1 sind und zwischen 0 und 10 sein sollten?
Was es alles gibt, das ich nich brauche - Aristoteles

5

13.08.2006, 20:52

Zitat von »"CW_Kovok"«

was tut man mit dingen die zwischen 0 und 1 sind und zwischen 0 und 10 sein sollten?


also tbVector3Random() ist wie folgt deklariert:

C-/C++-Quelltext

1
2
3
4
inline tbVector3 tbVector3Random()
{
return tbVector3NormalizeEx(tbVector3(tbFloatRandom(-1.0f, 1.0f), tbFloatRandom(-1.0f, 1.0f), tbFloatRandom(-1.0f, 1.0f)));
}


wenn ich mir damit einen vector erstelle, muss ich einfach die achsen mit 10 multiplizieren? scheint mir nicht richtig zu sein?!

Steh immernoch aufm Schlauch :(

Sheddex

unregistriert

6

13.08.2006, 21:00

Also, ich muss sagen dass ich Davids Random Funktionen auch etwas merkwürdig finde... aber du kannst dir doch einfach innerhalb von einer Minute eine eigene schreiben oder nicht?

C-/C++-Quelltext

1
2
3
4
tbVector3 OwnVector3Random(float Min, float Max)
{
return tbVector3NormalizeEx(tbVector3(tbFloatRandom(Min, Max), tbFloatRandom(Min, Max), tbFloatRandom(Min, Max)));
}


Wo ist das Problem? ;)

7

13.08.2006, 21:08

Zitat von »"DarkHunter"«


Wo ist das Problem? ;)


die idee mit der Doit-yourself methode das problem zu lösen ist mir auch schon gekommen. Aber mich interessiert die Lösung die der Author vorgesehen hat, sprich die vorhandenen Funktionen zu nutzen.

Kennt die keiner?

Sheddex

unregistriert

8

13.08.2006, 21:16

Von uns wird die keiner kennen, das muss dir schon David selbst sagen... schreib' ihn per PM an damit er auf diesen Thread aufmerksam wird ;)

Sluggy

Frischling

Beiträge: 30

Wohnort: Spardorf

Beruf: Schüler

  • Private Nachricht senden

9

13.08.2006, 21:20

Wenn du einen Vektor mit Werten zwischen 0 und 1 bekommst kannst du ihn doch einfach mit 10 multiplizieren, so dass ein vektor zwischen 0 und 10 dabei herauskommt, oder?

sozusagen:

C-/C++-Quelltext

1
Vektor = tbVector3Random() * 10;
LIFE SUCKS!!!

CW_Kovok

Alter Hase

Beiträge: 836

Wohnort: nähe Bonn

Beruf: Schüler

  • Private Nachricht senden

10

13.08.2006, 22:17

jeah sluggy nur nicht ganz korrekt,

richtig wäre: sei ein Vektor(a,b,c) mit länge l:

l = sqrt(a^2+b^2+c^2)
l^2 = a^2 + b^2 + c^2
100*l^2 = 100 ( a^2 + b^2 + c^2)
100 = 100/l^2 *(a^2 + b^2 + c^2)
10 = 10/l * sqrt(a^2 + b^2 + c^2)

das heißt man muss den Vektor mit dem Faktor 10/l multiplizieren
Was es alles gibt, das ich nich brauche - Aristoteles

Werbeanzeige