2016-10-28 4 views
-1

이것은 일반적인 질문/요청이지만 경계선을 구성하는 작은 원으로 구성된 큰 원을 만들려고합니다. 큰 원의 x와 y가 마우스가됩니다.작은 원으로 구성된 확장 원 만들기

이 서클들은 하나씩 그려지며 세타가 2 * PI에 도달하면 몇 가지 일이 발생합니다. 서클이 삭제되고 빗변이 증가하고 서클 크기가 비례하여 증가하며 0에서 시작하여 서클을 다시 그리기 시작합니다. https://www.youtube.com/watch?v=hAVH-2ven94&feature=youtu.be

내가 자동으로 동그라미가 빠르게 회전하기 시작 0.3 씩 증가하는 세타를 설정할 때

float theta = 0; 
float hypotenuse = 30; 
float radius = 10; 
float thetaIncrease = 0.3; 
float hypotenuseIncrease = 0.5; 
float radiusIncrease = 0.2; 

void draw(){ 

    background(0); 

    float x = cos(theta)*hypotenus; 

    float y = sin(theta)*hypotenus; 

    ellipse(mouseX+x, mouseY+y, radius, radius); 

    theta += thetaIncrease; 

    if(theta >= PI*2) { 

     background(0); 

     hypotenuse += hypotenuseIncrease; 

     radius += radiusIncrease; 

     theta = 0; 

    } 

} 

나는 데 문제로는 다음과 같습니다 코드 이것은 내가 지금까지 가지고있는 것입니다. 또한 다른 방법으로 이동하면 (theta = 0; ellipse(); theta = 0.3; ellipse();) 원을 한 번에 모두 그릴 및 theta 되돌릴 수 있도록 if 문을 만들 수 없습니다 및 지우기 및 theta가 실제로 증가하지 않기 때문에 PI가 2 * PI에 도달하면 원을 성장시킵니다 (단지 2.6에 머문). 조언이나 관찰을 얻을 수 있다면 정말 고마워 할 것입니다.

답변

0

거의 다 가지고 있습니다. 몇 가지가 나에게 뛰어옵니다.

서클을 화면에 유지하고 싶을 때마다 이전 프레임을 지우고 싶지는 않습니다. 이를 달성하기 위해 background()에 대한 첫 번째 호출을 제거하십시오.

원을 늦추려면 을 0.15 또는 무언가로 줄이십시오. 30 MPH에서 15 MPH로 차를 감속시키는 것으로 생각하십시오.

마지막으로, 빗변과 반지름을 각각 0.50.2만큼만 늘립니다. 이 값은 픽셀 단위이며, 증가량이 작다는 것을 실제로 알 수는 없습니다. 실제로 증가를 보려면 52과 같은 것을 사용하십시오.

+0

감사합니다. 그건 의미가 있습니다. – xKorix

관련 문제