🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.java
Article #141872

Re: odwzorowanie milimetrów na pixele

#141872
From: SasQ
Date: Wed, 22 Oct 2008 09:05
71 lines
4279 bytes
Dnia 22-10-2008 o 08:44:41 kaszpiro napisał(a):

> W mojej aplikacji chciałbym uzyskać taki efekt:
> tworząc moj obiekt Ramka jako parametry podaje wysokosc i szerokosc
> w mm. metoda rysujaca tego obieku rysuje prostokąt którego parametrami
> są oczywiście pixele i tutaj napotykam na problem właściwego
> przeliczenia mm na px, aby zachować właściwą skalę.

No to musisz wiedzieć, ile mm mierzy jeden pixel.
Nie będzie to stała zależność, bo przelicznik można wybrać dowolnie i
będzie on zależał np. od rozdzielczości monitora i jego wymiarów.

Wzór jednak wyprowadzić jest dość łatwo:
Zauważ, że jeśli np. masz tryb graficzny 1024x768, a monitor ma wymiary
320x240 mm, to wiesz, że w poziomie w tych 320 mm musi się zmieścić te
1024 pixele, czyli dzielisz jedno przez drugie i wyjdzie Ci, ile mm
przypada na szerokość każdego pixela: 320/1024 = 0.3125 mm. Pionowy
rozmiar pixela liczysz podobnie: 240/768 = 0.3125 mm.
Luzik, pixel jest kwadratowy ;)
Można też policzyć odwrotnie: ile pixeli mieści się w każdym milimetrze.
W tym celu wystarczy odwrócić ułamki:
1024/320 = 3.2 px.
I teraz gdy ktoś poda, że Ramka ma mieć 100x100 mm [10x10 cm], to
po prostu mnożysz je przez ilość pixeli w każdym milimetrze:
10x3.2=32 pixele.
Ogólnie przy przeliczaniu z jednej skali do innej [z jednego układu
współrzędnych do innego], stosuje się zwykła transformację liniową:

                             jednostka_układu_B
  współrzędna__układzie_A * -------------------- = współrzędna_w_układzie_B
                             jednostka_układu_A

To jest tylko zamiana skali. Gdy układy są dodatkowo przesunięte i  
obrócone,
trzeba dodać parę czynników. Ale to Cię już chyba nie dotyczy ;)

> Wiem, że wielkość piksela zależy od wielkości i rozdzielczości ekranu  
> (DPI)

Czy ja wiem... Punkty na cal to chyba nie to samo, co pixele na milimetr.
Chyba że uznamy, że punkty i pixele to to samo i dodatkowo przeliczymi cale
na milimetry.

> widziałem kilka wzorów na przełożenie mm to px, ale wydaje mi się, że
> nie są one dobre.

To trza było je wyprowadzić samemu, "na logikę", a później sprawdzić ;)
Spróbuj te moje. Powinny działać. Gdyby coś nie działało, spróbuj jeszcze
odwrócić ten ułamek z jednostkami, bo czasami mylą mi się układy. Ale
reszta powinna być OK.

> Możliwe, że przekłamanie występuje przy generowaniu napisów na tym
> prostokącie, bo tutaj z kolei trzeba przeliczyć pt (wielkość czcionki)
> na mm.

Punkty czcionki to nie to samo, co pixele. Wielkość punktu typograficznego
może być różna na różnych systemach i zależnie od ustawień systemowych.
Np. na Windows jest to 1/72 cala.

> Zależy mi na tym aby rzeczywisty rozmiar generowanej grafiki był po
> zapisaniu do pliku w skali 1:1 a w progamie dla wygody będę go po
> prostu skalował.

Obrazy w plikach są zapisywane jako tablica pixeli. To, w jakim
rzeczywistym rozmiarze są później wyświetlane, zależy już od rozmiaru
pixela, czyli de facto rozdzielczości monitora. Możesz zapisać w pliku
graficznym, w jakiej rozdzielczości obraz powinien być wyświetlany, by
być w skali 1:1. Niektóre formaty graficzne to umożliwiają.

-- 
SasQ
Technical Details
Message-ID: <op.uje4uvz2tgehyw@szczur>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!news.intelink.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!not-for-mail
References: <81fd805d-f4ec-4298-8eb1-9002df4bee4d@v53g2000hsa.googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!news.intelink.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!not-for-mail
From: SasQ <sasq1@go2.pl>
Newsgroups: pl.comp.lang.java
Subject: Re: odwzorowanie milimetrów na pixele
Date: Wed, 22 Oct 2008 11:05:09 +0200
Organization: Ganz Automyjnia (i przeróbki ;)
Lines: 71
Message-ID: <op.uje4uvz2tgehyw@szczur>
References: <81fd805d-f4ec-4298-8eb1-9002df4bee4d@v53g2000hsa.googlegroups.com>
Reply-To: sasq1@go2.pl
NNTP-Posting-Host: awl185.neoplus.adsl.tpnet.pl
Mime-Version: 1.0
X-Trace: atlantis.news.neostrada.pl 1224667018 2467 83.27.71.185 (22 Oct 2008 09:16:58 GMT)
X-Complaints-To: usenet@news.neostrada.pl
NNTP-Posting-Date: Wed, 22 Oct 2008 09:16:58 +0000 (UTC)
User-Agent: Opera Mail/9.52 (Linux)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit