2016-10-28 145 views
-1

這是一個常見的問題/請求,但我試圖創建一個由組成邊界的較小圓圈組成的大圓圈。大圓的x和y將是鼠標。創建一個由小圓圈組成的擴展圓圈

事情是這些圈子會逐一繪製,當θ達到2 * PI時會發生一些事情。圓圈將清晰,斜邊會隨着圓圈大小(比例)增大,然後再次從0開始繪製圓圈。此視頻的前幾秒演示過程https://www.youtube.com/watch?v=hAVH-2ven94&feature=youtu.be

對於代碼這是我到目前爲止有:

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; 

    } 

} 

我遇到的一個問題是,當我設置的θ至0.3圓開始快速旋轉自動遞增。同樣,如果我走另一條路(theta = 0; ellipse(); theta = 0.3; ellipse();),這些圓一次繪製所有,我不能創建一個if語句來使theta恢復爲0並擦除,當它達到2 * PI時增長該圓,因爲theta實際上並沒有增加(它只停留在2.6)。如果我能得到任何建議或意見,我會非常感激。

回答

0

你幾乎擁有它。有幾件事情在我身上跳出來:

你希望圓圈留在屏幕上,所以你不想每次都清除舊的幀。取消第一個電話background()來實現這一點。

如果你想減慢圓圈,只需將thetaIncrease減少到0.15之類的東西。把它看作是你的車從30 MPH減速到15 MPH。

最後,你只能分別增加你的斜邊和半徑0.50.2。請記住,這是以像素爲單位的,並且您不會真正注意到這種增加的一小部分。使用像52這樣的東西來實際看到增加。

+0

啊,謝謝!這就說得通了。 – xKorix