cm in pixel

Status
Nicht offen für weitere Antworten.

Dagobert

Bekanntes Mitglied
Gibt es eine Möglichkeit cm in pixel umzusetzen, gibt es dafür eine einfachere Formel?
Oder muss ich da mit Auflösung usw. arbeiten?

Ich habe z.B. viele Angaben in cm wie Größe oder ähnliches. Wie kann ich sowas am geschicktesten umrechnen?

mfg. Dagobert
 

Siassei

Bekanntes Mitglied
Hallo,

wozu benögist du jene Umrechnung? Im Grunde genommen kannst du cm nicht in Pixel umrechnen, außer du definierst selbst wie viele Pixel ein cm sind :wink:
Ein kleiner Auszug aus Wiki dürfte dir Klarheit verschaffen.
Bei einem 15-Zoll-Bildschirm mit einer Auflösung von 1024×768 misst ein Pixel etwa 0,3 Millimeter.

Wenn dir DPI vorgegeben sind, sollte eine Umrechnung kein Problem sein. Übrigends ein inch entspricht 25,4 mm :wink:
 
G

Gast2

Gast
er muss über Java nur die DPI auslesen ... und das Ganze ist abhängig wie groß die Monitore sind (22" oder nur 17") und welche Auflösung der jeweilige Benutzer verwendet (8oox6oo oder 168ox1o5o) ... bei meinem Monitoren sind es etwa 100 DPI obwohl Windows der Meinung ist es sind nur 96 DPI ... soviel dazu wie genau die DPI Anzahl ist

einfach eine Linie (oder für den gehobenen Anspruch ein Linieal) malen und dann mit einem Lineal auf dem Monitor nachmessen

hand, mogel
 

Siassei

Bekanntes Mitglied
Hallo mogel,

wer sagt denn, dass der OP dies für einen Monitor benötigt? Dies war nur ein Beispiel von mir :)
einfach eine Linie (oder für den gehobenen Anspruch ein Linieal) malen und dann mit einem Lineal auf dem Monitor nachmessen
Der is gut :toll:
 

Dagobert

Bekanntes Mitglied
Ich will ein Spiel umsetzten, wo alles in cm (oder Zoll) beschrieben wird bewegung größe usw.
z.B. ist die maximale Kartengröße 120x120 cm und das möchte ich nun gerne 1:1 auf den Monitor bringen ;)
Ich hab erstmal nur eine auflösung von 800x600 soll aber später erweitert werden ;)

soviel zu meinem Problem

mfg. Dagobert
 

Maeher

Bekanntes Mitglied
Dagobert hat gesagt.:
Ich will ein Spiel umsetzten, wo alles in cm (oder Zoll) beschrieben wird bewegung größe usw.
z.B. ist die maximale Kartengröße 120x120 cm und das möchte ich nun gerne 1:1 auf den Monitor bringen ;)
Ich hab erstmal nur eine auflösung von 800x600 soll aber später erweitert werden ;)
Wo ist das Problem?

LängeInInch * dpi = LängeInPixel
Wenn du Zentimeter willst, dann rechnest du dir einfach die dpcm aus: dpi/2,54

Ich habe aber auch Zweifel, ob es Sinn macht, auf einem Bildschirm in cm zu arbeiten, wenn du nicht unbedingt einen Bezug zur realen Umgebung brauchst (Geodreiecke als Spielfiguren auf dem Bildschirm oder so :bahnhof:).
Ansonsten fände ich persönlich wahrscheinlich eine einstellbare Skalierung praktischer.
 

Dagobert

Bekanntes Mitglied
Ja ich brauche ein bezug zu realen Maßangaben... ! ! !
Wie kann ich den die DPI in Java auslesen?
Google gibt mir nicht das was ich will^^
 

Maeher

Bekanntes Mitglied
Dagobert hat gesagt.:
Ja ich brauche ein bezug zu realen Maßangaben... ! ! !
Ist ja OK, ich hab eigentlich versucht, es diplomatisch auszudrücken... :oops:
Dagobert hat gesagt.:
Wie kann ich den die DPI in Java auslesen?
Google gibt mir nicht das was ich will^^
Aber ich habe schon einmal in die API verlinkt und ich fürchte etwas Besseres als das hier gibt es nicht: Toolkit.getScreenResolution() (siehe Beipackzettel Link oben)
 

AlArenal

Top Contributor
Dann zeig doch einfach ein Testbild in Pixeln an, das die User ausmessen müssen. Daraus kannste dir dann die DPI des Users ausrechnen.
 

Dagobert

Bekanntes Mitglied
Ist ja OK, ich hab eigentlich versucht, es diplomatisch auszudrücken... icon_redface.gif
War ja nicht böse gemeint ;)
aber wenn ich sage ich brauche cm in Pixel soll nicht jeder sagen "brachste nicht", "lass es lieber" usw. dann soll man lieber gar nix sagen alls solche unützen Kommentare die mich nicht weiter bringen, aber ich bin gerne für andere (bessere) Vorschläge bereit.

Wie würdet ihr das denn machen?
Ich sage euch Einheit a ist 3,6 cm breit, 25 cm hoch. Kann sich 14 cm bewegegen. (Nicht nur am stück sondern auch hin zurück dann mal nach links usw). Einheit b ist 2,4 cm breit, 5 cm hoch und kann sich 12 cm bewegegn, usw. Ich habe alle Angaben in cm. (manchmal auch nur mm XD). Wie gesagt die Karte kann max. 120x120 cm sein. Irgendwelche schlauen Leute haben sich schon was dabei gedacht das Einheit a nur max 14 cm auf einem 120x120 cm großen Spielfeld gehen kann. Und wenn ich das jetzt einfach frei nach Schnautze änder, dann ist das nicht mehr das gleiche.
oder sehe ich das falsch?

mfg. Dagobert
 

AlArenal

Top Contributor
Dagobert hat gesagt.:
aber wenn ich sage ich brauche cm in Pixel soll nicht jeder sagen "brachste nicht", "lass es lieber" usw. dann soll man lieber gar nix sagen alls solche unützen Kommentare die mich nicht weiter bringen, aber ich bin gerne für andere (bessere) Vorschläge bereit.

Die Forumrealität zeigt, dass vielen eher damit geholfen ist ihren Holzweg zu hinterfragen, als ihnen weitere Bretter in die Hand zu drücken.

Verrat uns mal lieber, warum es unbedingt Zentimeter sein müssen.
 

Maeher

Bekanntes Mitglied
Dagobert hat gesagt.:
Und wenn ich das jetzt einfach frei nach Schnautze änder, dann ist das nicht mehr das gleiche.
oder sehe ich das falsch?
Wer redet hier von "frei Schnauze"? Wenn du alle Koordinaten einheitlich mit dem gleichen Faktor (dpi oder ein plattformunabhängiger, aber lassen wir das :bae:) multiplizierst, verändert sich an der Anordnung und den Größenverhältnissen gar nichts. Du könntest deine Skalierung wenn du willst auch im laufenden Betrieb an die Fenstergröße anpassen.
Du müsstest dann in cm oder Spielfigurenbreiten o.ä. rechnen und für die Ausgabe umrechnen (z.B. s.o.). (Wenn 's mehr als nur Skalieren ist machen evtl. Vektoren Sinn).
 
G

Gast2

Gast
ah ja ....

prinzipell müssen nur die Verhältnisse stimmen ... was auf dem Monitor zu sehen ist kannst Du scalieren ... es ist also egal ob die Einheit sich über den Monitor 5cm bewegt oder 20cm ... in der Virtuellen Welt ist es immer exakt die gleiche Entfernung, da sich nur die Scalierung / DPI für den Monitor geändert hat

hand, mogel
 

AlArenal

Top Contributor
Japp. Dabei kannst du es auch weiterhin Zentimeter nennen, auch wenn es nachgemessen keine sind, weil das Verhältnis bei Verwendung eines konstanten Faktors dasselbe ist. Das ist doch gerade das Prinzip der Skalierung.

Ich brauche ja auch keinen kilomtergroßen Bildschirm, um mir Landschaftsfotos vom letzten Urlaub anzuschauen...
 

Siassei

Bekanntes Mitglied
Hallo lieber OP,

deine Diskusion ist wohl etwas aus den Rudern gelaufen. Ich habe mir mal die Mühe gemacht und die Java SE 6 API kurz mal durch forstet und stieß nach 3 min auf folgende Einträge :wink:

Generell bietet das AWT - Toolkit immer nützliche Operationen für bildschirmtechnische Aufgaben. Ich würde dir Raten, die Benutzereingaben und alle anderen Angaben sofort in inch umzurechnen. Java und alle andere rechnen halt im Bildschirmbereich immer mit inches. Ist halt so :wink: Die SI hat sich in diesem Bereich wohl noch nicht durchgesetzt :D

Mit der Methode getScreenSize() erhälts du die aktuelle Auflösung des Bildschirmes und mit Hilfe der Methode getScreenResolution() kannst du den Umrechnungsfaktor für die inches -> Pixel für den Monitor bestimmen.

Ich hoffe du bist jetzt glücklich :wink:
 

AlArenal

Top Contributor
Das mit den DPI ist so ein Sache, die kann man nämlich einstellen. Dabei ändern sich aber nicht die physikalischen Gegebenheiten des Azeigegeräts...
 

Siassei

Bekanntes Mitglied
AlArenal hat gesagt.:
Das mit den DPI ist so ein Sache, die kann man nämlich einstellen. Dabei ändern sich aber nicht die physikalischen Gegebenheiten des Azeigegeräts...
Schluss endlich stellt Java für platformspezifische und hardwarespezifische Einstellungen & Co. zu wenig Informationen bereit. Siehe C# und .Net :wink:

Das wäre doch mal was für eure Wunschliste :wink: Ich lese in einem C#-Forum mti. In diesem wird das einmal pro Woche als große Stärke von C# dargestellt. Sun muss hier einfach mehr bieten :!: und sich nicht immer wieder neue Ausreden ausdenken. Weiter Antworten zu diesen Thema werde ich nicht geben, da es sonst ein endlos lang wird :wink:
 

AlArenal

Top Contributor
Wozu? Wieviele superdolle Projekte kennst du, wo die Macher C# genommen haben, weil sie in Java keine Zentimeter als Ausgabeeinheit aufm Bildschirm verwenden konnten?
 

0x7F800000

Top Contributor
AlArenal hat gesagt.:
Die Forumrealität zeigt, dass vielen eher damit geholfen ist ihren Holzweg zu hinterfragen, als ihnen weitere Bretter in die Hand zu drücken.
Sieht für mich bisher schwer danach aus, dass AlArenal auch diesmal recht hat... :bahnhof:

Dagobert, wie stellst du es dir vor? Dass ich in irgendeinem Computerspiel mit einem geodreieck irgendwas am bildschirm vermesse, um einen zug zu machen? :shock:
Das würde ich aus folgenden gründen nicht riskieren:
1) Bildschirm meines Laptops ist leider nicht sonderlich kratzfest, aber deswegen nicht billiger
2) Ich habe gar keinen geodreieck
3) Ich würde den Spielemacher sowieso für vollkommen unzurechnungsfähig und gemeingefährlich halten ;)
 

Siassei

Bekanntes Mitglied
AlArenal hat gesagt.:
Wozu? Wieviele superdolle Projekte kennst du, wo die Macher C# genommen haben, weil sie in Java keine Zentimeter als Ausgabeeinheit aufm Bildschirm verwenden konnten?
Da hast du mich falsch verstanden. Ich gebe dir ein kleines Beispiel oder sowas ähnliches :wink:

Was nützt mir eine VM die mich mehr oder weniger komplett vom Betriebssystem abschottet?
Ein Mensch, der sich von der Gesellschaft (seiner Umgebung) komplett zurück zieht wird als krank bezeichnet.

Das Wine-Projekt beweist ja, dass die Brücke zwischen UNIX-artigen Systemen und Windows kein unendlich großer Spalt ist. Daher sollte es möglich sein, mehr plattformspezifische Informationen zu erhalten. Achja, ich liebe Java :D
 

AlArenal

Top Contributor
Äpfel + Birnen = Obstsalat
Du solltest lernen deine Gedanken etwas besser zu sortieren ;)


Die ganze Diskussion erübrigt sich aus diversen Gründen:

1. Das 1. Gebot lautet NICHT, "Ich bin Java, deine Programiersprache. Du sollst keine anderen Programmiersprachen haben neben mir.". Dieses Ziel hat niemand verfolgt und gefordert und die Nichterreichung eines ungewollten Ziels ist keine Niederlage.
2. Java erfreut sich bester Gesundheit und ordentlicher Verbreitung, ohne überall die erste Wahl zu sein. Ich koche auch nicht nur mit einer Bratpfanne und einem schweizer Taschenmesser.
3. Wenn jemand meint eine andere Sprache sei zur Umsetzung eines Projekts besser geeignet, steht es ihm frei und ist es richtig diese zu nutzen. Kein James Gosling wird ihn daran hindern oder sich aus Gram vor einen Zug werfen.
 

Quaxli

Top Contributor
Ich kann Andrey und AlArenal nur zustimmen: Die Bildschirmauflösung runterzubrechen ist suboptimal (oder Quatsch, um es etwas unschöner auszudrücken ;) ).
Nimm Pixel und errechne die Verhältnisse und Du hast weit weniger Streß als mit dem Umgerechne in inch, cm oder sonstiges.

Es mag ja sein, daß man mit Toolkit, etc. ganz toll rauskriegen kann, wie viele Pixel ein cm auf dem Monitor hat, aber wie o.g. Vorredner schon gesagt haben, machst Du Dir damit nur selbst das Leben schwer.
 

Dagobert

Bekanntes Mitglied
Ok dann werde ich einfach ein Maßstab nehmen und sagen: x Pixel sind 1 cm im rl.
Könnt ihr mir einen sinnvollen Maßstab sagen? Habt ihr da schon irgendwelche Erfahrungen gesammelt?

mfg. Dagobert
 

Quaxli

Top Contributor
Ich denke nicht, daß es hier einen Empfehlungswert gibt: Es kommt darauf an, wie groß die Karte ist und wie groß dazu die Einheiten im Verhältnis sind und wie detailliert Du alles darstellen willst.
Wenn es rein um Strategie und Taktik geht, kannst Du eine riesige Karte möglicherweise in ein 800 x 600 Fenster quetschen und die Einheiten wenige Pixel groß machen (überspitzt ausgedrückt). Da aber sicherlich die Optik eine Rolle spielt, hängt das auch von grafischen Details ab. Nicht zuletzt spielen die Einheiten eine Rolle. Wenn Du z. B. nur Fußsoldaten hast, hast Du andere Optionen bzgl. des Maßstabs als wenn z. B. auch größere Fahrzeuge (z. B. Truppentransporter, gepanzerte Fahrzeuge, etc.) dargestellt werden sollen.
 

AlArenal

Top Contributor
Einfach den Faktor variabel gestalten und auf das Scrollrd legen, oder über Controls zugänglich machen. Dann kann jeder sich das zurechtschieben wie er es will.

Sei mal nicht so unkreativ, du wirst doch in deinem Leben wohl schonmal ein Computerspiel gespielt haben?

P.S.:
Jaja, gängige Ideen klauen ist auch nicht eben "kreativ" ;)
 

RedNifre

Mitglied
Ist doch alles eine Frage des Marketings: Natürlich ist es blöd, wenn man als Spieler erst mal den Monitor ausmessen MUSS, damit man genau den Maßstab 1:1 hat. Man kann es aber auch als Feature verkaufen...

Ich würde es so machen:
Wenn die kleinste Einheit im Regelbuch ein Millimeter ist würde ich das als Basiseinheit nehmen und alle Koordinaten und Abmessungen als Millimeter-Angaben in Integern speichern. Das erlaubt zum Beispiel Koordinaten von 0 bis 2000 Kilometer, sollte also für ein Tabletop-Spiel reichen.

Dann misst du deinen Monitor aus und rechnest aus, wie viele Pixel ein mm sind. Dafür würde ich Float nehmen, da es vermutlich eine sehr krumme Zahl ist. Das Ergebnis nimmst du als Vorgabewert.

Dann baust du im Einstellungsmenü eine Skalierungsoption ein, die ein Lineal auf dem Bildschirm anzeigt. Dann kann der Benutzer so lange die Skalierung anpassen, bis das Bildschirm-Lineal genau so groß wie ein echtes Lineal ist.

Wenn das alles geschafft ist kannst du alle Berechnungen in Millimetern vornehmen, komplett unabhängig von irgendwelchen Pixeln.
 

diggaa1984

Top Contributor
hm also ich wär auch der meinung das ein skalierungsfaktor hier am angebrachtesten ist. Da könntest du meinetwegen feste Auflösungen oder simple Faktoren vorgeben, und der Nutzer sucht sich einfach aus wie groß er es gern hätte, hauptsache das verhältniss deine angaben bleibt gleich, was mit nem Faktor wohl recht einfach ist.

Wir haben damals in der Uni eine Lagersimulation schreiben sollen, wo Roboter zu regalen gefahren sind und dann zu Ablageplätzen etc. Dort hatten wir auch rein und raus-zoomen können (sone Lagerhalle konnte ja leicht größer sein als der darstellbare bereich im Programm => Scrollbalken) ... das hatten wir auch über einen Skalierungsfaktor geregelt. Was fest vorgegeben war, waren Boxen-Ausmasse, Roboter-Ausmasse, Regalabmessungen, Anzahl der Boxen pro Regal etc.

das Wären in deinem Falle die cm, wir haben das einfach mal Weltkoordinaten getauft ^^
Ich hab dann je nach Zoomstufe einfach den Faktor zu diesen Werten berechnet und drauf losgemalt
 

AlArenal

Top Contributor
Jedem, der in Erdkunde aufgepasst hat, dürfte das Konzept des Maßstabs geläufig sein. Gäbe es dies nicht, wäre so ein Gobus eine verdammt sperrige Angelegenheit.. ;)
 

AlArenal

Top Contributor
Illuvatar hat gesagt.:
Hab ich schonmal erwähnt, dass ich deine Vergleiche liebe? Manchmal zumindest ;)

Erwähnte ich, dass ich das in diversen Foren zu lesen bekomme? Manchmal zumindest ;)

Wenn da nur nicht immer meine vermalledeiten Vertipper wären....
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
BraunBerry Java Game Pixel "einfärben" Spiele- und Multimedia-Programmierung 6
T Probleme bei "Pixel-Fighting"-Spiel: Unausgewogene Mannschaften??? Spiele- und Multimedia-Programmierung 4
Q Mehr objekte darstellen als Pixel vorhanden Spiele- und Multimedia-Programmierung 6
Androbin Pixel-genaue Kollisionserkennung Spiele- und Multimedia-Programmierung 5
J Bestimmte Pixel transparent erscheinen lassen Spiele- und Multimedia-Programmierung 5
M pixel auslesen in JOGLE Spiele- und Multimedia-Programmierung 3
B Java Pixel Malen Spiele- und Multimedia-Programmierung 3
M Pixel eines BufferedImage bearbeiten (Performance) Spiele- und Multimedia-Programmierung 23
Kr0e OpenGL .. Pixel Buffer Objekt oder Frame Buffer Object? Spiele- und Multimedia-Programmierung 2
Steev LWJGL: org.lwjgl.LWJGLException: Pixel format not accelerated Spiele- und Multimedia-Programmierung 9
M pixel perfect collision detection bei rotierenden Bildern Spiele- und Multimedia-Programmierung 13
G Pixel setzen mit TYPE_INT_ARGB Spiele- und Multimedia-Programmierung 10
R int[] der Pixel aus PNG oder JPG ? Spiele- und Multimedia-Programmierung 2
P Bild, Pixel- / Bereichsfarbe auslesen Spiele- und Multimedia-Programmierung 12
G Pixel Häufigkeiten entsprechent einfärben Spiele- und Multimedia-Programmierung 6
K Einzelne Pixel in einem Bild lesen Spiele- und Multimedia-Programmierung 5
S BMP-Bild Pixel für Pixel bearbeiten Spiele- und Multimedia-Programmierung 1
V Tranzparente Pixel Spiele- und Multimedia-Programmierung 5
S Pixel zeichnen Spiele- und Multimedia-Programmierung 3
G 2 dim. Pixel Array in AWT? Spiele- und Multimedia-Programmierung 7

Ähnliche Java Themen

Neue Themen


Oben