2010-10-03 35 views
1

对如何做到这一点有一个脑冻结。我有一个足球场区域的图像,用户点击该区域可以指示发生什么事情。将像素转换为可点击图像的相对cm值?

我想在我的数据库中存储真实世界单位的坐标,以便以后可以更改图像。但是,我无法弄清楚这样做的公式(忽略了足球场长度可变的事实)。

所以说我的图像是400像素乘300像素代表一个真实世界的领域12000厘米x 9000厘米,点300px,100px以厘米为单位是什么?那么我如何将cm值转换回像素为800x600像素的图像?以码/英寸来做也是可以接受的。

请给我看看工作而不是单一的价值。谢谢!

回答

2

就像任何其他单位转换:300 * 12000/400, 100 * 9000/300是用户点击足球场的点。

更一般地,假设两个刻度具有相同的零(即0 source == 0 target),并且您知道刻度等于x source == y target,那么valueInTarget = valueInSource * (y/x)的点。

更一般地说,假设您知道两个刻度相等的两点,即x1 source == y1 targetx2 source == y2 target,然后valueInTarget == (valueInSource - x1) * (y2 - y1)/(x2 - x1) + y1 == (valueInSource - x2) * (y1 - y2)/(x1 - x2) + y2

2

使用比率。 400px代表12000cm,因此您的宽度比例是每像素30厘米。将这个比例应用到300像素给我们9000厘米。

在第二个示例中,您的宽度比例是每像素15厘米(12000/800)。所以第二幅图像的9000cm就是600px。

同样的高度。