Graphics 寻找纵横比的最佳方法

Graphics 寻找纵横比的最佳方法,graphics,haskell,Graphics,Haskell,我正在用Haskell编写一个简单的OpenGL游戏。每当用户调整窗口大小时,我都会得到它们的宽度和高度。我需要计算最大的宽度和高度,适合他们的窗口,同时保持W/H比为1.6 这是我写的。这是可行的,但我不认为这是哈斯克尔最好的方法。有人能提出一些替代方案吗: fixedRatio = 1.6 keepRatio (w,h) = head [(floor w',floor h') | w' <- [w, h*fixedRatio], h' <- [h, w/fixedRatio],

我正在用Haskell编写一个简单的OpenGL游戏。每当用户调整窗口大小时,我都会得到它们的宽度和高度。我需要计算最大的宽度和高度,适合他们的窗口,同时保持W/H比为1.6

这是我写的。这是可行的,但我不认为这是哈斯克尔最好的方法。有人能提出一些替代方案吗:

fixedRatio = 1.6

keepRatio (w,h) = head [(floor w',floor h') | w' <- [w, h*fixedRatio], h' <- [h, w/fixedRatio], w' <= w, h' <= h, w'/h' == fixedRatio ]
fixedRatio=1.6
keepRatio(w,h)=头部[(w层,h层]| w'我会用一个防护装置(条件):

我会和一个警卫一起做(条件):

试试这个:

keepRatio (w,h) = min sizeByWidth sizeByHeight
   where sizeByWidth = (w, (w * 5) `div` 8)
         sizeByHeight = ((h*8) `div` 5, h)
这假设您只需要最接近像素的纵横比。

尝试以下方法:

keepRatio (w,h) = min sizeByWidth sizeByHeight
   where sizeByWidth = (w, (w * 5) `div` 8)
         sizeByHeight = ((h*8) `div` 5, h)

这假设您只需要最接近的像素的纵横比。

在这种情况下,我们可以说
min
而不是
minBy(比较fst)
?是的!我忘记了那个实例(Ord a,Ord b)=>Ord(a,b)。进行相应编辑。在这种情况下,我们可以说
min
而不是
minBy(比较fst)
?是的!我忘记了那个实例(Ord a,Ord b)=>Ord(a,b)。相应地编辑。