BPS #4: Vektoren - Auswertung
Übersicht

![]() |
XeresModeratorBetreff: BPS #4: Vektoren - Auswertung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Damit ist die Zeit 'rum.
Das war die Aufgabe Postet hier eure Ergebnisse, Codes, Gedanken. Lernt von den anderen, seht euch deren Quelltext an und versucht euren eigenen zu verbessern. Diskussion Postet zu euren Codes stets eine kurze Erklärung mit euren Gedanken in denen ihr simpel gesagt die Frage "Wieso habe ich XY auf diese Art gelöst?" beantwortet. Beiträge, die nur den Code enthalten werden wir aus dem Thread entfernen. Nächste Aufgabe In drei Tagen, am 20. März wird die Musterlösung nach editiert und die nächste Aufgabe eingestellt. Viel Spaß & viel Erfolg! Musterlösung: BlitzBasic: [AUSKLAPPEN] ; BPS: Holzchopf - Vektoren |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
- Zuletzt bearbeitet von Xeres am So, März 20, 2011 21:02, insgesamt einmal bearbeitet
![]() |
darth |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
ich habe den Tipp mit dem "Wähle Arrays (in BlitzMax) resp. BlitzArrays (in BlitzBasic) zum speichern der Vektoren" nicht wirklich verstanden. Statt eines Arrays benutze ich einen Type zum Sammeln der Koordinaten. (Sollte der Array natürlich so gemeint sein, dass ich meine Vektor-Instanzen in einem Array halte, dann ist es wieder klar :> ). BlitzBasic: [AUSKLAPPEN] Type TVector3D Ich habe das Problem in 3 Dimensionen implementiert. Der Grund ist ziemlich einfach, runterskalieren kann man immer, hochskalieren braucht Arbeit. Simpel gesagt: Wer von 3D auf 2D will, lässt einfach die letzte Dimension weg ![]() So kann man auch die Normale zu einem Vektor ziemlich einfach ausrechnen, indem man das Kreuzprodukt zwischen dem Vektor und der "Bildschirmnormale" (also der Vektor der senkrecht zur Bildschirmebene steht) berechnet. Natürlich kommt dabei immer nur ein 2D Vektor heraus, der die gleiche Länge hat wie der Alte. Im Programm habe ich den BildschirmUrpsrung (Origin) auf die Mitte gesetzt. Leider hat dies keinen Einfluss auf die MausX() / MausY() Befehle, darum muss ich diesen Ursprung von meinem Maus-Vektor noch abziehen, danach kann man ganz normal weiterrechnen. Es sind noch ein paar andere Funktionen dabei, die nicht zur Aufgabenstellung gehören, kann man getrost ignorieren. Sie sollten von den Namen her eigentlich ziemlich selbsterklärend sein, weshalb ich es hier (weil es ja nicht zur Aufgabe gehört) einfach so stehen lasse. Das wärs von meiner Seite, MfG, Darth |
||
Diese Signatur ist leer. |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sehr schön. Der Ansatz mit der Skalierbarkeit gefällt mir. Ist ein sehr interessanter Gedanke. Types sind natürlich immer chic und eigentlich auch den Arrays vorzuziehen, da ihre Felder klar definiert sind und oft auch deutlich besser zu lesen sind und somit auch beim programmieren einfacher zu handhaben sind (meine Meinung). Allerdings (wieder meine Meinung) sind Arrays am Anfang (einer Programmiererkarriere) einfacher zu verstehen, daher der Tipp. Und "im mathematischen Sinne" sind ja Vektoren auch Arrays, wenn man sich mal an Taschenrechnern und Mathe-Programmen orientiert, daher ist es in diesem Fall gar nicht sooo verkehrt, auf Arrays zurückzugreifen.
Auf jeden Fall danke für deine saubere Lösung. mfG Holzchopf |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sehr schön gemacht, aber wenn mich nicht alles Täuscht erstellst du jeden Schleifendurchgang einen Vektor und Löschst ihn hinterher nicht mehr.. Villeicht wäre das noch ne kleine Verbesserung.
mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
darth |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
jup ToeB, du hast recht. Hab ich vergessen zu erwähnen. Ich haushalte meine Vektoren nicht \o/ Wenn man das Programm zu lange laufen lässt, wird es abstürzen, weil irgendwann der Speicher überquillt. Das ist (meine Meinung..) eine ziemlich nervige Eigenart der BB-Types. Aber so ist es einfacher, Listen seiner Objekte zu machen, ist halt ein abwägen. Mit den Arrays hast du schon recht Holzchopf, ich (denke ich) verstehe nun wie der Tipp gemeint war. Man könnte es eigentlich auch verbinden und einen Blitz-Array statt x/y/z nehmen. Ich bin mir nicht ganz sicher, wie es mit den Zugriffszeiten wäre, aber (meine Meinung) ich halte es für einfacher lesbar wenn ich einfach v\x schreiben kann, statt v\entry[0] (oder nur vektor[0]). Ansichtssache ![]() Allerdings, da gebe ich dir recht, ist es für Einsteiger einfacher mit Arrays, v.a aufgrund des Punktes, den ToeB angesprochen hat. Sorgfalt ist nicht jedermanns Sache (und schon gar nicht meine, hihi). Btw hab ich auch eine Implementation mit Matrizen, sollte irgendwo in meinem Worklog sein. (Schamlose Eigenwerbung, jup!) MfG, Darth |
||
Diese Signatur ist leer. |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Besten Dank an darth... Schade das sich nicht mehr Beteiligt haben, aber vielleicht kommt mit der Zeit ja noch was dazu; Fragen & Anregungen sind und bleiben erwünscht.
Die Musterlösung findet sich im Eingangspost. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Nova |
![]() Antworten mit Zitat ![]() |
---|---|---|
Xeres hat Folgendes geschrieben: Schade das sich nicht mehr Beteiligt haben, aber vielleicht kommt mit der Zeit ja noch was dazu; Fragen & Anregungen sind und bleiben erwünscht.
Tja, über ein Jahr zu spät, aber jetzt kommt meine Lösung. ![]() Zu Anfang hatte ich ein Problem damit, überhaupt mal mitzukriegen, dass ich die Mitte des Fensters als Koordinate (0|0) definieren muss. Vorher hat sich mein orthogonaler Vektor immer irgendwo lang bewegt, nur nicht da, wo er hin sollte. ^^ Nachdem das aber behoben wurde war es recht einfach. BlitzBasic: [AUSKLAPPEN] ; Definiere ein paar Konstanten |
||
AMD Athlon II 4x3,1GHz, 8GB Ram DDR3, ATI Radeon HD 6870, Win 7 64bit |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group