kleines problem mit blöcken
-
Ich habe ein problem bei meinem programm.
Ich habe eine Methode der 3 float und ein Block mit float x, y und z übergeben werden
jetzt will ich das die methode true zurückgibt, wenn die koordinaten im block liegen.
jeder block ist 1x1x1 groß.
hab mich damit schon zum wahnsinn getrieben
könnt ihr mir die methode schreiben (c++) ?Thx, openglfreak
Ps: android tastatur:
-
Sind denn die X,Y und Z Koordinaten des Blockes der Anfang oder der Ende des Blockes?
Daher ein Block wird ja über jeweils zwei Koordinaten für jede Achse definiert:
von X1 bis X2 und Y1 zu Y2 etc.
Und schreibt doch mal deinen Ansatz.
MfG,
derFer
-
Die koordinaten sind die anfänge.
x+1,y+1,z+1 ist das ende.
Ich hatte einen ansatz aber der war so schlecht, das ich den gelöscht habeThx openglfreak
-
Ich würde dann erst mal ohne nachgedacht zu haben so was machen:
Punkte: X,Y,Z
Block: Bx,By,Bzbool checkPos(...){ if(X >= Bx && X <= Bx+1){ if(Y >= By && Y <= By+1){ if(Z >= Bz && Z <= Bz+1){ return true; } } } return false; }
MfG
PS: Gilt nur wenn die Blöcke gerade sind, wenn die irgendwie an einer Achse gedreht sind, gilt das natürlich nicht, dann muss man den Winkel (sinus) mit einrechen...
-
Ich werds mal ausprobieren hab im moment pc verbot bin 13 und hab... ein bisschen mist gebaut
bin mit tablet pc im forum. Ich hasse die android tastaturThx openglfreak
-
Ich habe ein problem mit nem struct von dem mehrere structs abgeleitet werden.
Davon erstelle ich mehrere instanzen und speichere sie in einem array.
wie überschreibe ich eine methode der superklasse und rufe diese NACH CAST ZU SUPERKLASSE auf?
z.b.array[0] = new Superklasse(); array[0].methode(); //gibt 0 aus array[0] = new Subklasse(); array[0].methode(); //gibt 1 aus
-
In C++ heist das Schluesselwort
virtual
dafuer.
-
knivil schrieb:
In C++ heist das Schluesselwort
virtual
dafuer.Kannst du mir ein kurzes beispiel zeigen?
Thx openglfreak
-
-
openglfreak schrieb:
hab im moment pc verbot bin 13 und hab... ein bisschen mist gebaut
ich bin so froh dass ich keine kinder habe
-
danke für die Antworten darf wieder an den PC
Thx openglfreak
-
das mit virtual funktioniert nicht
-
Der Code soll so sein:
Block blocks[1024]; // ... blocks[i] = new Holz(); // ... blocks[i].tuetwas(); //soll in jeder unterklasse anders sein
-
openglfreak schrieb:
Block blocks[1024]; // ... blocks[i] = new Holz();
das duerfte doch nichtmal kompilieren.
-
Vielleicht so:
vector<Block*> bloecke; for(){ Block *blockX = new Block(); bloecke.push_back(blockX); } bloeke[xx]->tuwas();
Nur so als Anhaltspunkt, ob es geht gerade keine Ahnung
MfG
-
Mit pointer array ging das auch nich
Bin ratlos
Thx openglfreak
-
Ich bin mir nicht sicher ob das ein Grund sein kann, aber da Block eine eigene Klasse ist, kann es sein das der []-Operator nicht definiert ist?
Also hast du denn es mal mit der von mir genannten Möglichkeit probiert also mit Vector ?
MfG
-
Wenn man Google benutzt findet man übriges auch was dazu hier das habe ich z.B. gefunden:
#include <list> Function(){ std::list<object> objects; for(...){ object *newobject; newobject = New object(); objects.push_back(*newobject); } //Zugriff objects.at(0)->foo();
-
openglfreak schrieb:
Mit pointer array ging das auch nich
Bin ratlos
Thx openglfreak
du hast in der klasse "block" die funktion nicht virtual gemacht.
-
Ich habe die methode virtual gemacht
Liegts villeicht daran, das ich die in einer .h datei gemacht und den code in eine .cpp datei geschrieben habe?
ich probier mal die anderen listen ausThx openglfreak
-
poste entsprechende teile von Block und Holz