Bitte Hilfe! Koordinatensystem Android, Eclipse

P

Psychotronic

Neues Mitglied
Threadstarter
Hallo an alle!
Ich bin gerade neu hier und bitte um Nachsicht, falls mein Thread im falschen Topic oder ähnliches ist. ^^

Ich programmiere seit einiger Zeit simpelste Apps und möchte mich so langsam steigern.
Mein Ziel ist es Punkte auf einem Koordinatensystem zu erstellen, und diese zu einer Linie verbinden zu lassen, durch immer kleinere Koordinatenskalierungen bzw Zellen und Objekterstellungen pro Sekunde.

Nun ist meine Frage, die für die meisten von euch wahrscheinlich ziemlich banal ist, wie ich überhaupt ein normales kartesisches Koordinatensystem bei Android mit Eclipse implementiere.. Ich hatte an ein [n][n] Array gedacht, allerdings muss es doch schon passende Layouts geben, auf dessen Koordinaten ich dann Objekte erstellen kann, und diese sich dann bewegen lassen kann, oder?



Vielen Dank für eure Hilfe!


Psychotronics:thumbup:
 
Zuletzt bearbeitet:
ui_3k1

ui_3k1

Gesperrt

Hallo und Willkommen :)

Da gibt es verschiedenste Lösungen.
Die Ansätze unterscheiden sich besonders in der Wahl der Bibliotheken.
Grundsätzlich kannst du mit einfachsten Mitteln (z.B. mit einem Stern -> "*" und einem " " <- Whitespace) durch einen Algorithmus Linien darstellen und "zeichnen". Stichwort ist hier der Bresenham-Algorithmus.
Aus diesem lassen sich dann wieder andere Figuren basteln.
Das ist dann so ziemlich die Implementierung, die am wenigsten Bibliotheken und zusätzliche Funktionen braucht. Habe vor ein paar Wochen selbst so ein Programm in C++ geschrieben.
Ergebnis sieht dann so aus:
https://dl.dropboxusercontent.com/u/28089422/Screenshot 2014-05-02 07.44.44.png

Moderne Programmiersprachen nehmen in der Regel einem diese Programmierarbeit ab und bieten wie bereits gesagt Lösungen dafür an.
In für Android findest du die drawLine Funktion in der "Canvas" Klasse.
Canvas | Android Developers

Durch Benutzen der drawLine-Funktion hat man zwar nich verstanden, wie ein Computer das macht, aber es werden Linien dargestellt. :)

Eine gute Erklärung zum Bresenham findest du hier:
https://www.youtube.com/watch?v=vlZFSzCIwoc (super interessant!)
:thumbsup:
 
P

Psychotronic

Neues Mitglied
Threadstarter
Hi ui_3k1! Danke für deine schnelle Antwort. :biggrin:
Das klingt wirklich super. Wieder mal was dazugelernt. Das könnte ich später wirklich gut gebrauchen. Mh Allerdings löst dies leider noch nicht komplett mein Problem.. Ich dachte vorhin schon an ein GridLayout, Allerdings weiß ich nicht ob ich die Zellen dort "unendlich" klein machen kann und diese einer Skalierung bzw. Koordinaten unterliegen...

Ich möchte wirklich üben einem Objekt Punkt zu sagen :"Erzeuge dich an der Stelle (x,y) , danach an der Stelle (x,y-1) ...(x,y-2) etc.. Ist bei einem Androidphone schon automatisch eine Art Koordinatensystem als "unsichtbarer Hintergrund" hinterlegt? oder kann ich dies irgendwie erzeugen? So sage ich doch zum Beispiel einer Spielfigur :"laufe so und so viel auf der x Achse und wenn du springst, dann gehe so und so viel hoch auf der y-Achse... Für kugelkoordinatensysteme habe ich schon beispiele gefunden, aber einfache kartesische Koordinatensysteme leider nicht..
Wenn ich die Skalierung nämlich klein genug wähle und dann die Objekterzeugung der Punkte auf über 24 Bilder pro Sekunde Setze, müsste doch eine Bewegung fürs menschliche Auge entstehen..

Die Links und den Algorithmus schaue ich mir natürlich trotzdem an. Klingt wirklich interessant, so Figuren zu basteln. :)
Wie gesagt vielen Dank für deine Ansätze, aber ich versuch trotzdem erstmal eine Art x - und y-Achse zu basteln...
Die Drawline Funktion habe ich auch schon gefunden, aber ich möchte solche Dinge lieber gleich von Anfang an selbst ergründen, statt auf Tools zurückzugreifen^^ Erst ein Punkt, dann abstraktere Datentypen, die sich bewegen usw.. :)


Beste Grüße

Andre
 
Zuletzt bearbeitet:
StefMa

StefMa

Gewerbliches Mitglied
Hi,

du verwechselst hier grade was. Möchtest du ein "einfaches" koordinatensystem zeichen, so dass man dort ein Graph anzeigen kann? Möchtest du ein Korodinatensystem um dort Buttons oder Textfelder anzuzeigen? (Also eine art "Tabelle"?) Oder möchtest du einen Punkt zum anderen Bewegen?

Bei jedem der Sachen musst du nämlich komplett verschieden vorgehen.

Gruß
 
ui_3k1

ui_3k1

Gesperrt

@Psychotronic:
Ich glaube, wenn du dich in die Canvas Klasse ein bissen einliest, wirst du mit den Funktionen dieser Klasse dein Vorhaben darstellen können. :)
Als Rasterung nimmst du den Bildschirm mit seinen Pixeln.
 
P

Psychotronic

Neues Mitglied
Threadstarter
Naja, also ich habe es mir folgendermaßen vorgestellt :

Zwei Objekte vom Typ "Punkt" werden am oberen Bildschirmrand erzeugt.
Also y_koord = 0;
und x_koord = 2; und 5; oder sowas.

Diese Punkte wandern dann nur auf der Y-Achse nach unten. Duplizieren sich also. aber das in einer gewissen geschwindigkeit und einer extrem kleinen größe sodass eine lückenlose linie entsteht.
kommen die linien am unten Bildrand an sollen sie sich stauchen und strecken um eine Art frequenzmuster zu bilden. Also wandern sie ab da pro erzeugung ebenfalls ein Stück auf der x-Achse. Tippe ich dann mit dem Finger auf eine der Linien, sollen sie ihre Richtung ändern und am entsprechenden anderen Bildschirmrand das Phänomen fortsetzen...
 
P

Psychotronic

Neues Mitglied
Threadstarter
aaah perfekt. ich glaube so etwas hab ich gesucht :D
Danke! - Dann les ich mich erstmal in die Canvas- Klasse ein :)
 
Oben Unten