# cm in pixel



## Dagobert (11. Jul 2008)

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 (12. Jul 2008)

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:


----------



## Gast2 (12. Jul 2008)

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 (12. Jul 2008)

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:


----------



## Maeher (12. Jul 2008)

Siassei hat gesagt.:
			
		

> > 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:


Ja, aber wenn 's genau sein muss...
Die Methode Toolkit.getScreenResolution() scheint jedenfalls nicht immer  das erwartete Ergebnis zu bringen.


----------



## Dagobert (12. Jul 2008)

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


----------



## AlArenal (12. Jul 2008)

Lass den Cm-Schmu, dann hast du auch das Problem nicht. Oder arbeite mit Vektoren


----------



## Maeher (12. Jul 2008)

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 (12. Jul 2008)

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 (12. Jul 2008)

Dagobert hat gesagt.:
			
		

> Ja ich brauche ein bezug zu realen Maßangaben... ! ! !


Ist ja OK, ich hab eigentlich versucht, es diplomatisch auszudrücken... 


			
				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 (12. Jul 2008)

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 (12. Jul 2008)

> 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 (12. Jul 2008)

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 (12. Jul 2008)

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).


----------



## Dagobert (12. Jul 2008)

Weil in dem Tabetop Heften immer nur cm oder zoll angegeben sind... oO


----------



## AlArenal (12. Jul 2008)

Drum heißen die Dinger auch *Table*top und nicht *Monitor*top.


----------



## Gast2 (12. Jul 2008)

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 (12. Jul 2008)

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 (12. Jul 2008)

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   

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 (12. Jul 2008)

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 (12. Jul 2008)

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 (12. Jul 2008)

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 (12. Jul 2008)

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 (12. Jul 2008)

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


----------



## AlArenal (12. Jul 2008)

Ä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 (12. Jul 2008)

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 (13. Jul 2008)

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 (13. Jul 2008)

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 (13. Jul 2008)

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"


----------



## 0x7F800000 (13. Jul 2008)

Ein dehnbarer und biegsamer gummibildschirm wäre aber auch ziemlich cool...  :bae:


----------



## RedNifre (14. Jul 2008)

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.


----------



## Quaxli (14. Jul 2008)

RedNifre hat gesagt.:
			
		

> ...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. ....



no comment.  :?


----------



## Dagobert (14. Jul 2008)

Danke für eure Hilfe und mehr oder weniger sinvollen Kommentare...

mfg. Dagobert


----------



## diggaa1984 (14. Jul 2008)

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 (14. Jul 2008)

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..


----------



## Illuvatar (14. Jul 2008)

AlArenal hat gesagt.:
			
		

> Gäbe es dies nicht, wäre so ein Gobus eine verdammt sperrige Angelegenheit..



Hab ich schonmal erwähnt, dass ich deine Vergleiche liebe? Manchmal zumindest


----------



## _Teddy_ (15. Jul 2008)

AlArenal hat gesagt.:
			
		

> Gäbe es dies nicht, wäre so ein Gobus eine verdammt sperrige Angelegenheit..




Das kommt in meine Zitate XD


----------



## AlArenal (15. Jul 2008)

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....


----------

