【发布时间】:2016-05-25 15:39:41
【问题描述】:
好的,所以我一直在尝试为 APCS 类编写游戏,并且我一直在使用 Processing.org/PApplet 来制作图形。我的主要图像是由具有不同颜色的各个弧组成的椭圆。但是,我想旋转整个圆(里面有圆弧)。这是我的代码:
public void setup() {
size(WIDTH, HEIGHT); background(22, 105, 250);
}
public void draw() {
drawLevel(level,18);
}
private void drawLevel(int level, int numSectors)
{
translate(50, -50);
rotate((float)PI*level/numSectors);
fill(255,0,0);
arc(500, 375, 500, 500, 0, (TWO_PI)/18);
rotate((float)PI*level/numSectors);
translate(50, -50);
fill(255,127,0);
arc(500, 375, 500, 500, (TWO_PI)/18, (TWO_PI*2)/18);
//rotate((float)PI*level/numSectors);
//translate(50, -50);
fill(255,255,0);
arc(500, 375, 500, 500, (TWO_PI*2)/18, (TWO_PI*3)/18);
//rotate((float)PI*level/numSectors);
//translate(50, -50);
fill(0,255,0);
arc(500, 375, 500, 500, (TWO_PI*3)/18, (TWO_PI*4)/18);
//rotate((float)PI*level/numSectors);
//translate(50, -50);
fill(0,0,255);
arc(500, 375, 500, 500, (TWO_PI*4)/18, (TWO_PI*5)/18);
//rotate((float)PI*level/numSectors);
//translate(50, -50);
fill(75,0,130);
arc(500, 375, 500, 500, (TWO_PI*5)/18, (TWO_PI*6)/18);
//rotate((float)PI*level/numSectors);
//translate(50, -50);
fill(139,0,255);
arc(500, 375, 500, 500, (TWO_PI*6)/18, (TWO_PI*7)/18);
//rotate((float)PI*level/numSectors);
//translate(50, -50);
fill(255,0,0);
arc(500, 375, 500, 500, (TWO_PI*7)/18, (TWO_PI*8)/18);
//rotate((float)PI*level/numSectors);
//translate(50, -50);
fill(255,127,0);
arc(500, 375, 500, 500, (TWO_PI*8)/18, (TWO_PI*9)/18);
//rotate((float)PI*level/numSectors);
//translate(50, -50);
fill(255,255,0);
arc(500, 375, 500, 500, (TWO_PI*9)/18, (TWO_PI*10)/18);
//rotate((float)PI*level/numSectors);
//translate(50, -50);
fill(0,255,0);
arc(500, 375, 500, 500, (TWO_PI*10)/18, (TWO_PI*11)/18);
//rotate((float)PI*level/numSectors);
//translate(50, -50);
fill(0,0,255);
arc(500, 375, 500, 500, (TWO_PI*11)/18, (TWO_PI*12)/18);
//rotate((float)PI*level/numSectors);
//translate(50, -50);
fill(75,0,130);
arc(500, 375, 500, 500, (TWO_PI*12)/18, (TWO_PI*13)/18);
//rotate((float)PI*level/numSectors);
//translate(50, -50);
fill(139,0,255);
arc(500, 375, 500, 500, (TWO_PI*13)/18, (TWO_PI*14)/18);
//rotate((float)PI*level/numSectors);
//translate(50, -50);
fill(255,0,0);
arc(500, 375, 500, 500, (TWO_PI*14)/18, (TWO_PI*15)/18);
//rotate((float)PI*level/numSectors);
//translate(50, -50);
fill(255,127,0);
arc(500, 375, 500, 500, (TWO_PI*15)/18, (TWO_PI*16)/18);
//rotate((float)PI*level/numSectors);
//translate(50, -50);
fill(255,255,0);
arc(500, 375, 500, 500, (TWO_PI*16)/18, (TWO_PI*17)/18);
//rotate((float)PI*level/numSectors);
//translate(50, -50);
fill(0,255,0);
arc(500, 375, 500, 500, (TWO_PI*17)/18, (TWO_PI*18)/18);
}
我将平移和旋转作为 cmets,但我不确定如何旋转整个事物。当我运行translate() 和rotate() 方法时,它只运行一次(应该会发生),但是当我尝试将它用于第二个弧时,它与第一个弧重叠并且它以非常奇怪的方式居中。有人可以帮助“动画”它并循环它所需的循环以及如何更改rotate() 和translate() 方法吗?请,谢谢!
【问题讨论】:
-
第一个 translate 和 rotate 方法完美运行,所以我的问题是如何保持圆旋转以及如何使 translate 和 rotate 方法的其他实例适用于其他弧。
-
你能提供一个minimal reproducible example吗?换句话说,你能发布你的
setup()和draw()函数吗? -
是的,这是我的 setup() 方法: public void setup() { size(WIDTH, HEIGHT);背景(22、105、250); }
-
这是我的 draw() 方法: public void draw() { drawLevel(level,18); }
-
另外,对不起我的格式,这是我第一次来这里。
标签: eclipse processing