我的数学必须非常生疏。我必须想出一个已知的算法:
文档中的元素并将它们转换为不同硬件设备上的相同区域。例如,正在创建文档用于打印(假设8.5“x11”字母大小),然后本文档中的元素将被传输到专有的电子阅读器。
另外,关于电子阅读器的已知事实,屏幕是825x1200像素的肖像。每英寸有150个像素。我从打印文档中获得了点元素(每英寸72个Postscript点数)。
到目前为止,我有一个接近的算法,但它需要精确,我有一种感觉,我需要将纵横比纳入图片。我现在在做的是:
x (in pixels) = ( x(in points)/width(of document in points) ) * width(of ereader in pixels)
等
任何线索?
谢谢!
答案 0 :(得分:1)
您可能希望恢复操作的顺序以减少整数截断的影响,如下所示:
x (in pixels) = x(in points) * width(of ereader in pixels) / width(of document in points)
我认为您没有宽高比问题,除非您忘记提及您的电子阅读器设备具有非方形像素。在这种情况下,您将在设备的屏幕上水平和垂直地显示每英寸不同的像素数量,因此您将使用x的水平ppi和y的垂直ppi。
答案 1 :(得分:0)
假设您的坐标是整数,则公式x/width
是截断的(整数除法)。你需要的是在浮点数中执行除法/乘法,然后截断。像
(int)(((double)x)/width1*width2)
应该做的伎俩(使用类似C的转换为double
和int
)