0
저는 중심 타원 주위에 중력을 가하는 세 타원의 색을 바꾸는 방법을 알아 내려고하고 있습니다. 지금은 모두 빨간색이지만, 나는 하나가 녹색, 하나는 빨간색, 하나는 노란색으로하고 싶습니다. 누구든지 그렇게 할 수있는 방법을 생각할 수 있습니까?Processing에서 배열의 각 타원 색을 변경하는 방법은 무엇입니까?
이 내 처리 코드 :
class OrbitalBody {
float ox, oy, x, y, m, a;
OrbitalBody(float originX, float originY, float startX, float startY, float mass, float speed) {
ox = originX;
oy = originY;
x = startX;
y = startY;
m = mass;
a = speed/200;
}
void update() {
// creates the orbit;
float nx = (x-ox) * cos(a) - (y-oy) * sin(a),
ny = (x-ox) * sin(a) + (y-oy) * cos(a);
x = nx+ox;
y = ny+oy;
}
void draw() {
// defines the color of the ellipses, now:red;
fill(255,0,0);
ellipse(x,y,m,m);
}
}
ArrayList<OrbitalBody> bodies = new ArrayList<OrbitalBody>();
int mx, my;
void setup() {
size(420, 420);
mx = width/2;
my = height/2;
// distances([3]bodies-(mx,my) is equal. Meaning all three bodies rotate on the same orbit, value now: mx-100;
fill(0,255,0);
bodies.add(new OrbitalBody(mx, my, mx-100, my, 10, 10));
fill(0);
bodies.add(new OrbitalBody(mx, my, mx-100, my, 20, 3));
bodies.add(new OrbitalBody(mx, my, mx-100, my, 5, 13));
ellipseMode(CENTER);
}
void draw() {
// defines background color, now:white;
background(255);
noStroke();
// defines center cercle color value, now:pink;
// second value:alpha channel;
fill(#ec5b94,80);
// mx and my are the coordinates of the center pink cercle;
ellipse(mx,my,50,50);
for(OrbitalBody b: bodies) {
b.update();
b.draw();
}
}
감사합니다,하지만 불행히도이 문제가 해결되지 않는 색상 매개 변수를 각 OrbitalBody를 인스턴스화 : 세 개의 타원이 여전히 동일한 색상을 공유를 .. –
예,이 솔루션으로 문제가 해결되었습니다. 하지만 당신은 다른 색상으로 이러한 궤도를 만들 필요가 ... 아니면 당신이 뭔가를 놓친 그래서 전체 업데이트 된 코드를 보시려면 여기를 클릭하십시오 (http://pastebin.com/G94hrj2A) – Majlik
맞습니다! 이것은 많은 의미가 있습니다. 코드를 살펴볼 시간을내어 주셔서 대단히 감사드립니다. –