Box: Koordinaten, Ausdehnung, Platzierung

Status
Nicht offen für weitere Antworten.

Florianer

Mitglied
Hi,

also, das mag jetzt vielleicht richtig komisch klingen, aber ich hab grad ein riesen Verständnisproblem, was wohl die einfachste der Grundprimitiven angeht.

Bei all den Annahmen und Aussagen, berichtigt mich bitte sofort, wenn eine (und sei sie noch so unscheinbar) net stimmt:
Weltkoordinatensystem: Rechtshändig, also x läuft nach rechts weg, y nach oben und z kommt auf mich zu.
Lokales Koordinatensystem einer Box: Rechtshändig, Ursprung liegt in der Mitte der Box, d.h. genau im Zentrum, was eine halbe Kantenlänge für jede der 3 Achsen bedeutet.
Ausmaße der Box:
Code:
Box box = new Box( weight, height, depth, Box.GENERATE_NORMALS, null);
Box

public Box(float xdim,
float ydim,
float zdim,
Appearance ap)

Constructs a box of a given dimension and appearance. Normals are generated by default, texture coordinates are not.

Parameters:
xdim - X-dimension size.
ydim - Y-dimension size.
zdim - Z-dimension size.
ap - Appearance

Die Box bekommt die doppelte Breite, da sich der Wert der Breite einmal auf die positive und einmal auf die negative Achse auswirkt.


So, da kann doch irgendwas net so ganz stimmen. Ich habe mir eine Box erstellt, die 8, 3.5f, 8 Einheiten groß ist. Zumindest bilde ich mir ein, dass sie so groß sein soll. Tatsächlich macht es aber den Anschein, dass diese Box nun von ihrem lokalen Ursprung einmach 8 Einheiten nach +x und dann nochmal 8 Einheiten nach -x gewachsen ist. y/z analog. Muss ich jetzt meine Werte erst mal halbieren, um eine Box gegebener Größe richtig erstellen zu können?!

Außerdem: Macht es Sinn, dass der Ursprung im Zentrum liegt? Macht das jeder so? Meine Vorstellung wäre eigentlich gewesen, aber ich könnte sie auch anpassen, wenn mir jeder sagt, dass ich hiermit falsch liege, dass einer der 8 Punkte der Box auf 0|0|0 liegt. Von diesem Startpunkt aus, wächst die Box sozusagen um 8, 3.5f, 8. Somit sollte also der (z läuft auf mich ja zu) hintere, untere, linke Punkt P0 auf (0|0|0) liegen, der vordere, untere, linke Punkt P1 auf (0|0|8), der vordere, untere, rechte Punkt P2 auf (8|0|8) und der hintere, untere, rechte Punkt P3 auf (8|0|0) liegen. Der hintere, obere, linke Punkt P4 auf (0|3.5|0) und die weiteren Punkte entsprechend ihrer unteren Partner auf den gleichen x/z Koordinaten, einfach um y verschoben liegen.

So hat man doch auch in der Schule einen gegebenen Würfel in den R³ gelegt, oder etwa nicht? Bei ner Sphere würde ich sogar so weit gehen und behaupten, ich erzeuge mir eine BoundingBox mit den Ausmaßen von r der Kugel und platziere die Kugel dann so mittig in die BoundingBox, die BB wiederum hat auch wieder den P0 auf (0|0|0). Ich habe die bisher 25 Seiten Java 3D Topics alle angeschaut und bei wohl mindestens 20 auch rein geschaut... aber das hat noch keiner gebracht. Hab ich nun was grundlegendes falsch gemacht, ist das noch niemandem aufgefallen oder weiß jeder, dass das halt im Zentrum liegt und weiß, dass das so richtig oder gegeben ist und fertig?

Ich hab versucht, einen Fehler in meinem Code zu finden, aber denke, dass der noch relativ einfach ist und da hab ich auch keinen Fallstrick erkennen können. Ich hab mir dann, um sicher zu gehn, ein Raster erzeugt, dass 3D durch meine Szene läuft. Und da ist es genauso... da immer 2 der 3 Achsen fast 0 sind, schneiden die Linien da, wo ich vermuten würde. Die letzte Achse jedoch dimensioniert die Länge der Gitterlinie... gebe ich eine Länge von 10 an, bekomm ich aber 20...

Ich mach jetzt einen Memory-Reset meines Hirns und nehm die gegebenen Antworten als richtig auf ???:L
OK, ganz so net... aber mich würden hierzu brennend andere Meinungen interessieren und wie ihr die Welt seht!
 

Marco13

Top Contributor
Hm - was daran nun so niederschmetternd ist!? (Ich weiß nicht, ob die angegebenen lägen immer in BEIDE richtungen genommen werden, aber) was ist den so schlimm am bschriebenen Verhalten? Dass z.B. eine Einheitsbox nicht mit
new Box(1,1,1)
erzeugt wird, sondern indem man eine
new Box(0.5, 0.5f, 0.5)
um (0.5, 0.5f, 0.5) verschiebt ist doch nur ein Detail !?...
 

Florianer

Mitglied
naja, so schlimm daran ist, dass wenn ich kein Gitter rein gelegt hätte, ich immer noch denken würde, dass ich für ne einfache Addition zu doof wäre, da ich irgendwie so verschoben hatte, dass auf einmal die Objekte in einander und nicht neben einander waren. Außerdem ist es übel, wenn man ein Objekt erzeugt und davon ausgeht, dass die übergebenen Kantenlängen Kantenlängen (z. B.) in Meter sind und man sich irgendwann wunder muss, dass Zeichnung/Plan und Modellierung nicht übereinstimmen...

Klar, ich hab jetzt Größe beim Erstellen und Translation angepasst... nur, dass es nötig ist, versteh ich nicht! Die Umsetzung der API, was (bis jetzt erst einmal) die Box angeht, widerstrebt so gar meinen bisherigen Vorstellungen - mehr wohl nicht. Meine Erwartungshaltung war halt eine andere und ich wollte wissen, ob ich mit meiner Beobachtung recht habe oder irgendwo nen blöden Fehler gemacht hab, dass z. B. die Kantenlänge verdoppelt wird...

aber keine Angst, ich hab noch ne Menge anderer Fragen - die werden vllt mit fortschreitender Zeit auch schwieriger, wenn ich mehr Ahnung von Java 3D habe ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Wie kann ich bei g.rotate() auch die Koordinaten anpassen? Spiele- und Multimedia-Programmierung 3
shockyflocky Minecraft Koordinaten mit Intellij Spiele- und Multimedia-Programmierung 14
F Textbasiertes Rollenspiel mit Koordinaten Spiele- und Multimedia-Programmierung 6
A Spielfelder erstellen mit Jogl Java durch ein Koordinaten Array Spiele- und Multimedia-Programmierung 1
S LWJGL Kamera Koordinaten invertiert. Spiele- und Multimedia-Programmierung 2
Black_ixx Hintergrund & Koordinaten Probleme Spiele- und Multimedia-Programmierung 2
B j3d Koordinaten bestimmen Spiele- und Multimedia-Programmierung 16
jemandzehage JOGL 3D-Koordinaten des Klicks bestimmen Spiele- und Multimedia-Programmierung 2
Developer_X PolarKoordinaten zu Normal Koordinaten - Formel Spiele- und Multimedia-Programmierung 3
D Koordinaten eines 2D Sprites Spiele- und Multimedia-Programmierung 2
A Minesweeper: Koordinaten auslesen Spiele- und Multimedia-Programmierung 3
data89 Koordinaten in Koordinatensystem zeichnen Spiele- und Multimedia-Programmierung 11
R Koordinaten, Breite, Höhe nach drehen berechnen? Spiele- und Multimedia-Programmierung 3
S Koordinaten bestimmen und setzen Spiele- und Multimedia-Programmierung 2
S Texture Koordinaten Spiele- und Multimedia-Programmierung 2
V Koordinaten von Objekten? Spiele- und Multimedia-Programmierung 8
N Textur - Koordinaten Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen


Oben