我有一個只有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