2012-05-10 64 views
0

我的數學必須非常生鏽。我已經想出一種算法,將採取公知的:元素x,y,寬度,高度翻譯到不同的維度

  • X
  • ý
  • 寬度
  • 高度
文檔中的元素的

,並將其轉化到相同的在不同的硬件設備上的區域。例如,該文檔正在創建用於打印(讓我們假設8.5「x11」字母大小),然後將此文檔中的元素傳輸到專有的電子閱讀器。

此外,關於電子閱讀器的已知事實,屏幕是825x1200像素的肖像。每英寸有150個像素。

我給出了打印文檔中的源元素點數(每英寸72個Postscript點數)。

到目前爲止,我有一個算法,得到的接近,但它需要是確切的,我有一種感覺,我需要將長寬比合併到圖片中。我現在正在做的是:

x (in pixels) = (x(in points)/width(of document in points)) * width(of ereader in pixels) 

任何線索?

謝謝!

+0

一般來說,你不能完全正確,因爲你不能使用像素的分數。您可以做的最好的做法是將每個維度中的最近像素四捨五入。目前您的計算有多遠? – mbeckish

回答

0

假設您的座標是整數,公式x/width正在截斷(整數除法)。你需要的是在浮點數中執行除法/乘法運算,然後截斷。像

(int)(((double)x)/width1*width2) 

的東西應該做的伎倆(用C類轉換爲doubleint

1

您可能要恢復您的操作以減少整數截斷的效果,如下所示:

x (in pixels) = x(in points) * width(of ereader in pixels)/width(of document in points) 

我不認爲你有寬高比問題,除非你忘記提及你的電子閱讀器設備有非方形像素。在這種情況下,您將在設備的屏幕上水平和垂直每英寸具有不同數量的像素,因此您將使用xpi的水平ppi和y的垂直ppi。

相關問題