没有if / then逻辑的星/半星级功能?

时间:2012-11-30 23:17:03

标签: math graphics language-agnostic quantization

问题是,是否有一种简单的机制方法可以知道在不使用条件逻辑的情况下绘制哪些星(金,1/2金,灰),例如根据简单的结果使用指向正确星的指针数学函数以五星显示生成星级。

这个问题的重点不是评级系统,而是图形显示

我的评级值为0-100,浮点数。

例如,在伪代码中:

bitmap1="http://myserver.com/goldstar.png"
bitmap2="http://myserver.com/halfstar.png"
bitmap3="http://myserver.com/greystar.png"
rating=89.003
possible=100
quantized=int(rating/possible)
imagearray=[bitmap1,bitmap2,bitmap3]

for i=0 to 4
    selector=<compute which star to draw based on available data>
    drawstars(25*i,100,imagearray[selector])
end for

希望这会让你知道我想要做什么。

2 个答案:

答案 0 :(得分:3)

将显示视为一个比例,但在整数中,所以在半星中工作。例如,如果我们有5颗星,并且可以显示半星,那么我们的实际比例是从0到10.因此,我们需要做的是将原始比例(0到100)向下划分为0到10。然后我们用2进行整数除法。它的商将给出我们要绘制的完整恒星的数量,剩下的是要绘制的半星的数量(0或1)。

你可能想先做一些四舍五入 - 否则,基本上不可能得到5星评级(例如,即使输入得分为99仍然只能给出4.5星)。

答案 1 :(得分:1)

嗯,如果我要刺它......

在for循环中,从i = 1到5。

if (rating > i*20){ draw a gold star }
else{
    if (rating > (i-1)*20 +10) {draw a half star }
    else {draw a grey star}
}

这当然会给你最低评分