Koordinaten in Koordinatensystem zeichnen

Status
Nicht offen für weitere Antworten.

data89

Bekanntes Mitglied
Hallo,

das Forum sieht ja wirklich super aus - das Logo links oben gefällt mir am Besten :).

Also, nun zu meiner Frage ... ich habe von meinem Lehrer eine besondere Aufgabe bekommen (da ich schon alle Aufgaben der nächsten 6 Wochen erledigt habe ^^): ich soll Punkte in ein Koordinatenkreuz eintragen und das Koordinatensystem selbst mit Canvas erstellen.

Ich habe keine Ahnung, wie ich das ganze maßstabsgetreu darstellen kann. Außerdem habe ich die Koordinaten als double-Wert gegeben mit 6 Nachkommastellen. Dafür weiß ich, dass alle Werte zwischen 0 und 1 liegen. Ich habe mir überlegt, dass ich z.B. ein Koordinatensystem der Breite 1000px erstelle und dies dann verkleinere ... aber das funktioniert nicht so toll!

Außerdem habe ich bis jetzt nur immer in die paintComponent Methode etwas geschrieben, wie g.drawLine(...). Diese "Architektur" kann man doch sicherlich "eleganter" gestalten, oder?

Ich bin dankbar für Eure Kommentare,
data89
 

Marco13

Top Contributor
Jo, da reichen die Möglichkeiten von einem 50-Zeilen-Pillepallehack bis zu einer 50000-Zeilen-API zum allgemeinstmöglichen Behandeln von Koordinatensystemen....

Du hast zwar was von "Canvas" gesagt, aber auch von paintComponent, und wegen letzterem gehe ich mal davon aus, dass du das in Swing machst.

Der erste Punkt wäre, sich klarzumachen, welche Möglichkeiten das ganze bieten soll. Das fägt bei der Frage nach Mausinteraktion (zoom/pan, Verschieben der Punkte) an, und hört bei der Frage, ob die Koordinatenachsen "hübsch" sein sollen (d.h. sowohl Werte zwischen 0 und 1 als auch zwischen -100000 und 100000 "schön" und mit passenden Unterteilungsstrichen darstellen) noch lange nicht auf...

Wenn's nur darum geht, einmal irgendwelche Punkte zu malen: "BoundingBox" der Punkte berechnen, das ganze auf die Größe der Component hochskalieren, fertig...
 
S

Spacerat

Gast
@slawaweis: Angesichts diesem tollen Feature (JXGraph) kann ich mir recht gut vorstellen, warum der Lehrer von data89 das Koordinatensystem in einem "Canvas" verlangt. Der nette Herr (data89) muß doch beschäftigt werden.
@data89: Ich nehme mal an, das du dich möglicherweise schon mal (oder vllt. auch ausschliesslich) mit Swing befasst hast. Was für Swing "paintComponent()" ist, heisst beim "Canvas" (AWT) schlicht "paint()". Der "Graphics"-Context bleibt allerdings funktionell der gleiche, was bedeutet, das du z.B. "g.drawLine()" auch hier verwenden kannst.
 

data89

Bekanntes Mitglied
Vielen Dank für die Antworten!

Also, ein Paar Antworten auf Eure Fragen:

* Es geht hier um einen "Pillepallehack". Die Mausinteraktionen fallen weg und es geht nur darum, eine x-/y-Achse einzuzeichnen (vllt. mit Karo-Raster). Wie schon gesagt, sind die Einzutragenden Punkte zwischen 0 und 1 und immer positiv. Die Achseneinteilung wird im 1/4-Intervall vorgenommen.

Ergo: Ich muss ein Panel/Bereich erstellen, wo ich zwei Achsen, mit jew. 4 Einteilungen (0,25; 0,5; 0,75; 1), einzeichne und dann die gegebenen Punkte aus dem double-Array auslese und einzeichne.

Größte Schwierigkeit dabei (für mich):
* Das Ganze irgendwie maßstabsgetreu hinzubekommen.
* Das Ganze elegant zu implementieren. Nicht immer nur alles in die "paintComponent"-Klasse schreiben ...

Ich arbeite mit SWING, d.h. ich habe eine Klasse DrawPanel, die von JPanel abstammt, in der ich die "paintComponent"-Methode überschreibe. Dass soll aber nicht heißen, dass ich einer von den Oberflächen Menschen bin, die sich nur mit der GUI beschäftigen - ich steige auch mal gerne in den Code ein ;-)

Leider kann ich (und will ich) auch kein fertiges Tool benutzen.

data89
 

Marco13

Top Contributor
Ja, so viel "maßstab" gibt's dann ja nicht. Wie man die Linien zeichnet ist dir ja an sich klar. So viel gibt's da nicht zu machen, dass man das irgendwie feiner aufteilen müßte. Natürlich könnte/würde man die paintComponent tendenziell so aussehen lassen wie
Code:
public void paintComponent(Graphics g)
{
    super.paintComponent(g);
    paintAxes(g);
    paintPoints(g);
}
aber... das meintest du wohl nicht ... ?!
 

data89

Bekanntes Mitglied
Vielen Dank für die Hilfe ... :)

Aber was mache ich, wenn ich nun neue Punkte einzeichnen möchte? Irgendetwas mit repaint() - aber was?

Außerdem habe ich noch eine Frage: Angenommen ich würde drei Achsen benötigen müsste ich ja im 3-Dimensionalen Raum arbeiten. Müssen alle 3-D-Frameworks für Java nachträglich installiert werden, oder gibt es da ein "natives"? Oder könnte man ein Koordinatensystem mit Geraden und Ebenen u.U. auch mit 2-D-Grafiken zeichnen?

data89
 

0x7F800000

Top Contributor
Punkte: ja, solang's wenige sind
Gerade: geht auch grad so...
Ebenen: wird ein unglaublicher Krampf, weil man nicht mehr direkt erkennen kann, wo vorne und hinten bei der ganzen 3D-Konstruktion sein soll. (ohne z-Buffer schwierig)
Lieber gleich JOGL oder Java3D nehmen (mit jogl habe ich kurz rumgespielt, ist eigentlich ganz lustig, und recht stressfrei) Aber bei Java3D wird wohl das zeichnen vom schwebenden Text (Markierungen) einfacher sein.
 

Marco13

Top Contributor
Wenn man davon ausgeht, dass diese Component, die das zeichnet, eine Liste der Punkte enthält, die sie zeichnen soll, dann kann man einfach neue Punkte zu dieser Liste hinzufügen und dann "repaint" aufrufen.

Alles was jetzt darüber hinausgeht (und speziell: Alles, was in Richtung 3D geht) verdeutlicht die Berechtigung des ersten Satzes meiner ersten Antwort............
 
S

Spacerat

Gast
Eine 3D-Softwarelösung gibt's in den JDK-Demos (applet/WireFrame). Die bestätigt das, was Andrey bereits sagte. Ein Krampf wie er im Buche steht. Ansonsten JOGL. Und mit meiner jüngsten Veröffentlichung in diesem Forum sind 3D-Fonts (schwebender Text) auch kein Problem mehr (hier).
 

data89

Bekanntes Mitglied
Also, wenn ich 3-D zeichnen möchte, muss ich auf eine solche API zurückgreifen.
Diese APIs müssen doch noch zusätzlich auf dem PC des Anwenders installiert werden, oder??

data89
 

0x7F800000

Top Contributor
FatJar hier, Webstart da, fette fortgeschrittene jnlp-Dinger drüben... Ähm, nein, je nach dem wie man es macht, muss der Benutzer eigentlich nichts zusätzliches installieren, geh doch einfach mal auf die JOGL-Demoseite, und schau's dir an: es wird auch sofort laufen, ohne dass du irgendwas suchen und installieren musst: klick->läuft.
 
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
R Koordinaten, Breite, Höhe nach drehen berechnen? Spiele- und Multimedia-Programmierung 3
F Box: Koordinaten, Ausdehnung, Platzierung 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
Y 3D Koordinatensystem==> JOGL Spiele- und Multimedia-Programmierung 7
X JPanel dynamisch (Koordinatensystem)? Spiele- und Multimedia-Programmierung 30
N 3 Dimensionales Koordinatensystem Spiele- und Multimedia-Programmierung 9
T Koordinatensystem verschieben? Spiele- und Multimedia-Programmierung 6
A 3D Gegenstand in einem 2D Koordinatensystem darstellen. Spiele- und Multimedia-Programmierung 3
E relevanter bereich einer isometrischen karte zeichnen (AffineTransform) Spiele- und Multimedia-Programmierung 0
SaftigMelo Kreissegment zeichnen Spiele- und Multimedia-Programmierung 2
E Buttons neu zeichnen im GridLayout Spiele- und Multimedia-Programmierung 2
A Zeichnen außerhalb der paint-Methode Spiele- und Multimedia-Programmierung 6
E Isometrische Tiles mit unterschiedlicher Größe an korrekter Position zeichnen Spiele- und Multimedia-Programmierung 1
Androbin Mein Spiel will sich nicht zeichnen lassen !!! Spiele- und Multimedia-Programmierung 7
J Int Wert auf JFrame zeichnen Spiele- und Multimedia-Programmierung 3
H [ANIMATION] Hintergrundbild nur einmal zeichnen Spiele- und Multimedia-Programmierung 3
R [lwjgl] Cursor -> versetzt Zeichnen / Bild ist umgedreht Spiele- und Multimedia-Programmierung 2
M Methoden eine Map zu zeichnen Spiele- und Multimedia-Programmierung 5
aze Nicht rechteckiges Bild zeichnen Spiele- und Multimedia-Programmierung 5
F nur Ausschnitt eines Image zeichnen Spiele- und Multimedia-Programmierung 9
T 3D Graphen Zeichnen Spiele- und Multimedia-Programmierung 19
F Kurven zeichnen Spiele- und Multimedia-Programmierung 2
E Keine Werte zum Zeichnen werden Übergeben Spiele- und Multimedia-Programmierung 3
A Halbkreise zeichnen lassen? Spiele- und Multimedia-Programmierung 2
F Lineal mit Zahlen zeichnen Spiele- und Multimedia-Programmierung 7
N Linie mit Rand zeichnen Spiele- und Multimedia-Programmierung 10
A Mehrere geometrische Objekte in JPanel zeichnen Spiele- und Multimedia-Programmierung 4
A Optimiertes Zeichnen - wie? Spiele- und Multimedia-Programmierung 8
M Binärbaum ohne Überlappung zeichnen Spiele- und Multimedia-Programmierung 3
H Decke zeichnen mit Hilfe eines Polygons Spiele- und Multimedia-Programmierung 2
B 1)JButtons zeichnen 2)Kolisionsabfrage von zwei Objekten Spiele- und Multimedia-Programmierung 9
G Linie im Applet zeichnen Spiele- und Multimedia-Programmierung 5
G Schüsse zeichnen, Fehler? Spiele- und Multimedia-Programmierung 3
S Dreieck zeichnen Spiele- und Multimedia-Programmierung 9
G Überlagern von Strings beim zeichnen verhindern Spiele- und Multimedia-Programmierung 3
C Objekt bei Buttonklick zeichnen Spiele- und Multimedia-Programmierung 16
G Geschwungene Klammer zeichnen Spiele- und Multimedia-Programmierung 5
F Neu zeichnen verhindern Spiele- und Multimedia-Programmierung 25
J Zeichnen in BufferedImage und dieses in Datei speichern Spiele- und Multimedia-Programmierung 2
O Funktion zeichnen Spiele- und Multimedia-Programmierung 11
A Lissajous Figuren zeichnen Spiele- und Multimedia-Programmierung 1
G Maus springt --> Free-Hand-Zeichnen Spiele- und Multimedia-Programmierung 2
L Schüsse zeichnen Spiele- und Multimedia-Programmierung 13
M Eigene Strings zeichnen Spiele- und Multimedia-Programmierung 4
T Blitz berechnen und zeichnen Spiele- und Multimedia-Programmierung 13
M auswahlkreis zeichnen (schräg) Spiele- und Multimedia-Programmierung 4
N Logik: Grenz-/Frontlinie zeichnen Spiele- und Multimedia-Programmierung 4
M Grafikprogramm, zeichnen mit Maus Spiele- und Multimedia-Programmierung 7
G Problem beim Zeichnen von LineArrays Spiele- und Multimedia-Programmierung 9
P linie in bild zeichnen Spiele- und Multimedia-Programmierung 2
G Auf 3D Box zeichnen Spiele- und Multimedia-Programmierung 4
K mit Canvas übereinander zeichnen Spiele- und Multimedia-Programmierung 4
G 3D Raum zeichnen Spiele- und Multimedia-Programmierung 7
H Kreis zeichnen mittels Schleife & drawLine Spiele- und Multimedia-Programmierung 4
B Probleme beim zeichnen Spiele- und Multimedia-Programmierung 15
N Bild zu zeichnen (drawImage) klappt nur manchmal?? Spiele- und Multimedia-Programmierung 8
T Effizient zeichnen Spiele- und Multimedia-Programmierung 12
H mit Java2D Markierung über JTable zeichnen und diese bewegen Spiele- und Multimedia-Programmierung 2
C Graphische Benutzerschnittstelle, Problem beim Zeichnen Spiele- und Multimedia-Programmierung 4
J schnellste alternative um in java zu "zeichnen" Spiele- und Multimedia-Programmierung 17
conan2 Objekte in richtiger Z-Reihenfolge zeichnen Spiele- und Multimedia-Programmierung 2
G Punkte in Java3D zeichnen Spiele- und Multimedia-Programmierung 2
S Pixel zeichnen Spiele- und Multimedia-Programmierung 3
S Bild in Speicherbild zeichnen = Nichts? Spiele- und Multimedia-Programmierung 3
G Farbig zeichnen ohne java.awt.Color? Spiele- und Multimedia-Programmierung 5
S Wie kann ich das Zeichnen der Grafik feiner machen? Spiele- und Multimedia-Programmierung 9
M Wie kann man Kreisringe zeichnen ? Spiele- und Multimedia-Programmierung 12
C Graphics 2D Zeichnen Spiele- und Multimedia-Programmierung 4
R Kreuz lässt sich nicht zeichnen Spiele- und Multimedia-Programmierung 11
F einzelne Polygone(Graphics) schneller als and. Fig. zeichnen Spiele- und Multimedia-Programmierung 3
K Kugeln und Zylinder zeichnen Spiele- und Multimedia-Programmierung 4
L ein Rechteck zeichnen Spiele- und Multimedia-Programmierung 6

Ähnliche Java Themen


Oben