2014-07-17 7 views
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(); 
} 
} 

답변

1

이 아마도 당신이 컬러 매개 변수를 사용하여 각 OrbitalBody를 인스턴스화 할 수 다음 OrbitalBody의 그리기 방법이 매개 변수를 사용합니다.

기본적으로 클래스는 같은 보일 것이다 : 답장을

class OrbitalBody { 

    float ox, oy, x, y, m, a; 
    color c; 

    OrbitalBody(float originX, float originY, float startX, float startY, float mass, float speed, color bodyColor) { 
     // Do stuff 
     c = bodyColor; 
    } 

    void draw() { 
     fill(c); 
     ellipse(x,y,m,m); 
    } 
} 
+0

감사합니다,하지만 불행히도이 문제가 해결되지 않는 색상 매개 변수를 각 OrbitalBody를 인스턴스화 : 세 개의 타원이 여전히 동일한 색상을 공유를 .. –

+0

예,이 솔루션으로 문제가 해결되었습니다. 하지만 당신은 다른 색상으로 이러한 궤도를 만들 필요가 ... 아니면 당신이 뭔가를 놓친 그래서 전체 업데이트 된 코드를 보시려면 여기를 클릭하십시오 (http://pastebin.com/G94hrj2A) – Majlik

+0

맞습니다! 이것은 많은 의미가 있습니다. 코드를 살펴볼 시간을내어 주셔서 대단히 감사드립니다. –