我有一个只有32绝对矩形大小的枚举,我需要给定的维度,并找到我的枚举中最好的近似值。矩形近似算法
有没有更好的(比如更具可读性和可维护性)的方式比我制定出的大量嵌套if
和else
的意大利面条代码更好?
目前,我刚:
enum imgOptsScale {
//Some relative scales
w005h005 = 0x8,
w010h010 = 0x9,
w020h020 = 0xA,
w040h040 = 0xB,
w070h070 = 0xC,
w100h100 = 0xD,
w150h150 = 0xE,
w200h200 = 0xF,
w320h320 = 0x10,
w450h450 = 0x11,
w200h010 = 0x12,
w200h020 = 0x13,
w200h070 = 0x14,
w010h200 = 0x15,
w020h200 = 0x16,
w070h200 = 0x17
};
imgOptsScale getClosestSizeTo(int width, int height);
,我想我会寻求帮助之前,我有太多的进一步进入编码了。我应该强调偏离精心设计的图书馆,尽管我比容器更感兴趣算法,它应该在资源受限的系统上运行。
你是怎么定义“最好”的?这与[欧几里德距离](http:// en。wikipedia.org/wiki/Euclidian_distance)在矩形的_area_上?或双方总和的欧几里德距离?还是双方单独? 6x9矩形是否与9x6矩形相同? – sarnold 2012-02-11 00:06:38
6x9不会与9x6相同。我呈现的图像和缩放将看起来可怕颠倒。最好的,我还不知道,对于相对缩放,我大多数都是将高度从几个四分之一屏幕和一半屏幕正方形分开。 – John 2012-02-11 00:10:08
我想我需要分别枚举枚举的每个维度,并确保它们在我的枚举中都是组合的。然后我可以简单地近似每个维度。现在烫发和组合的公式在哪里? – John 2012-02-11 00:13:30