哪位大佬指點一下,如何讓星星隨機放置的時候,不出現畫布邊緣外面。
我自己的思路是
???? 判斷 x 和 y 的數值,可以判斷出,會不會出大于或小于畫布的寬高,之后星星的其他點都設置好了,如果直接改出畫布的點的數值,會出現問題。
????我打算在在畫星星for循環里進行判斷,如果出現了 超出邊界的星星,就提跳出方法,畫下一個,這個就不畫了,不過這樣不好,減少了星星的繪制數量。想知道不減少星星數量繪制出有星星,并且不超出邊界
我自己的思路是
???? 判斷 x 和 y 的數值,可以判斷出,會不會出大于或小于畫布的寬高,之后星星的其他點都設置好了,如果直接改出畫布的點的數值,會出現問題。
????我打算在在畫星星for循環里進行判斷,如果出現了 超出邊界的星星,就提跳出方法,畫下一個,這個就不畫了,不過這樣不好,減少了星星的繪制數量。想知道不減少星星數量繪制出有星星,并且不超出邊界
2018-08-26
舉報
2018-09-12
有必要這么復雜么,直接控制x,y的值在正常顯示范圍內不就好了,可以根據大圓大R來計算x,y具體的范圍值,比如x的范圍值是? 0+R 到 canvas.width-R,y值的范圍也根據這個算出來就可以了,具體部分代碼是:
for(var?i?=?0?;?i<110;?i++){ ????var?r?=?Math.random()*10?+?10; ???? ????var?x?=?Math.max(Math.random()?*?canvas.width,r); ????x?=?Math.min(x,canvas.width?-?r); ????var?y?=?Math.max(Math.random()?*?canvas.height,r); ????y?=?Math.min(y,canvas.height-r); ????var?a?=?Math.random()?*?360; ????wjx(content,x,y,r,r/2.0,"#ff7036","red",0,a); }?
2018-08-27
//我是通過求出原點,判斷最頂端和最低端是否超過邊緣,若超出,則i--?重新循環這次星星的繪制; for?(var?j?=?0;?j?<?200;?j++)?{ ????let?R=Math.random()*15+5; ????let?x=Math.random()?*?canvas.width;//偏移量 ????let?y=Math.random()?*?canvas.height;//偏移量 ???????????? ????var?x_=Math.cos(90?/?180?*?Math.PI)?*?R?+?x;//求出原點坐標 ????var?y_=-Math.sin(90?/?180?*?Math.PI)?*?R?+?y?+?R;//求出原點坐標 ????if(x_-R<0||x_+R>canvas.width){ ????????j--;? ????}else?if?(y_-R<0||y_+?R>canvas.height){ ????????j--;? ????}else{ ????????drawStart(c?,?R?,?R/2.0?,?x?,?y); ????} }