gpt4 book ai didi

Java图形化减半机制故障

转载 作者:行者123 更新时间:2023-12-01 10:52:13 26 4
gpt4 key购买 nike

g.setColor(c);
double changeFactor = (2<<count);
g.fillRect(x+1, y+1+(int)(boxHeight*(double)(1/changeFactor)), boxWidth-2, boxHeight-2-(int)(boxHeight*(double)(1/changeFactor)));
count++;
if(count == iterations)
{
count = 0;
}

上面是我一直在尝试制作的图形减半机制的代码。简而言之,它的想法是一个简单的图形练习,从填充条开始,每 250 毫秒从其当前高度减去一半高度。这样一来,高度就是呈指数下降。这是当前的输出:

gif

Link for those of you who are having trouble viewing the image

这与我想要的输出完全相反。条形图中的白色区域是我希望红色区域执行的操作的翻转图像。你们能帮我找出代码运行不正确的原因吗?

顺便说一句,很抱歉这个新手问题。

编辑:答案如下:

g.fillRect(x+1, y+1+(int)(boxHeight*(double)((changeFactor-1)/changeFactor)), boxWidth-2, boxHeight-2-(int)(boxHeight*(double)((changeFactor-1)/changeFactor)));

长话短说,这是因为我错误地计算了我想要的高度/y 坐标的分子。

最佳答案

根据fillRect definition ,第二个参数是盒子顶部的位置。 (在计算机图形学中,当您沿 Y 轴向下时,数字通常会变大,这与数学家绘制图表的方式相反。)假设您希望条形图的顶部继续向下(如与条形底部向上相反),这意味着第二个参数需要不断变大。但是,在您的代码中,参数不断变小,因为 1/count 不断变小。

如果 h 是总高度,y 是框的顶部,则您想要的此参数的连续值为:

y
y + h/2
y + h/2 + h/4
y + h/2 + h/4 + h/8 ...

或者,用另一种方式表达:

y + h - h
y + h - h/2
y + h - h/4
y + h - h/8

基于此,我认为您可以了解如何对代码进行一些小的修改并使其正常工作。

此外,请确保在迭代之间清除该框。 fillRect 不会触及您正在绘制的矩形之外的任何内容。因此,如果你想让填充的部分变小,你必须做一些事情来清除之前着色的、你不想再着色的部分。

关于Java图形化减半机制故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33795675/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com