用程式設計對P5中的一些“線條”效果進行擴充
用程式設計對P5中的一些“線條”效果進行擴充
一.實現對介面line的擴充套件
1.實現動態的繪製直線,同時新增線寬和顏色的隨機生成。
核心程式碼:
push();
for(var i=1;i<res;i++)
{
var t = i/res;
var xt = lerp(x0,x1,t);
var yt = lerp(y0,y1,t);
var x = xt;
var y = yt;
strokeWeight(10);//設定線寬
stroke(random(0,255),random(0,255),random(0,255));//顏色隨機生成
line(xp,yp,x,y);
xp = x;
yp = y;
}
pop();
2.實現對sin曲線的擴充套件,形成類似聲波的線條。
核心程式碼:
for(var i=1;i<res;i++)
{
var t = i/res;
var xt = lerp(x0,x1,t);
var yt = lerp(y0,y1,t);
var x = xt + i;
var y = yt + radius *i* sin(100*i);
strokeWeight(5);
stroke(random(0,255),random(0,255),random(0,255));
line(xp,yp,x,y);
xp = x;
yp = y;
}
3.繪製sin函式時,用大小隨機的圓來代替直線。
核心程式碼:
for(var i=1;i<res;i++)
{
var t = i/res;
var xt = lerp(x0,x1,t);
var yt = lerp(y0,y1,t);
var x = xt + i;
var y = yt + radius*sin(50*i);
//r=random(100,250);g=random(100,250);b=random(100,250);
r=random(200,250);g=random(100,140);b=random(150,200);
fill(r,g,b,random(50,255));
var t=random(0.1,8);
ellipse(random(x-5,x+5),random(y-5,y+5),t,t);
xp = x;
yp = y;
}
//註釋這句就會出現動態的serin曲線
//nostroke();
4.用noise噪聲來繪製山丘
核心程式碼:
var noiseScale=0.01;
var noiseScale2=0.02;
for(var k=0;k<mountainNum;k++){
for(var x=0;x<width;x++){
var noiseVal=noise((-mouseX+x)*noiseScale+k*100);
var noiseVal2=noise((-mouseX+x+100)*noiseScale2+k*100);
stroke(230-40*k);
var mountainstall=height-mountainTall+noiseVal*160-50+noiseVal2*60+50*k;
line(x, mountainstall, x, height);
}
var tem=height-mountainstall+180+50*k;
mountainShade(tem,230-40*k,shade);在這裡插入程式碼片
5.通過滑鼠控制Bezier曲線的繪製。
核心程式碼:
var r=random(10,20);
stroke(random(10,150),random(100,250),random(100,250));
strokeWeight(2);
noFill();
bezier(mouseX,mouseY,mouseX-100,
mouseY+100,mouseX+100,mouseY-100,40,3);裡插入程式碼片
二.實現2D圖形的擴充套件(主要是circle)
1.隨機繪製大小顏色不一樣的圓
核心程式碼:
stroke(random(10,250),random(10,250),random(10,250));
var d=random(10,30);
//ellipse(mouseX,mouseY,d,d);
ellipse(random(0,weight),random(0,height),d,d);
2.繪製由內向外,圓的半徑依次增大,一個週期的變化,參考網址:https://m.yisu.com/zixun/158611.html
核心程式碼:
for(var i=13;i>0;i--){
var y=22*sin(PI*frameCount/30-13*(i-1));
if(y>=10){
a=y;
}
else{
a=0;
}
fill(0,93,172,a);
ellipse(x0,y0,a+50*i);
fill(0,93,172,a);
ellipse(x0,y0,25+50*(i-1));
}
3.繪製圓運動撞牆反彈並繼續運動。
實驗核心程式碼:
function bounceOnEdge() {
//if條件判斷
if (x >= width - ballSize / 2) {
xSpeed *= -1;
x = width - ballSize / 2;
}
if (x <= ballSize / 2) {
xSpeed *= -1;
x = ballSize / 2;
}
if (y >= height - ballSize / 2) {
ySpeed *= -1;
y = height - ballSize / 2;
}
if (y <= ballSize / 2) {
ySpeed *= -1;
y = ballSize / 2;
}
}
修改小球的大小,並不覆蓋小球運動的路徑時有:
在上面的基礎上進行擴充:
4.此外參考了一些其他部落格,由於程式碼量較大,以下僅展示結果:
上訴實驗的所有原始碼:
相關文章
- 如何透過連線資料庫的方式對線下應用進行線上擴充套件資料庫套件
- 如何為可擴充套件系統進行Java Socket程式設計套件Java程式設計
- 設計師對可擴充套件設計工具的探索套件
- 進行SQL Server縱向擴充套件的必備條件KVSQLServer套件
- jQuery 進度條效果程式碼jQuery
- Java擴充-網路程式設計基礎Java程式設計
- ReactiveUI是.NET的Reactive程式設計擴充套件框架ReactUI程式設計套件框架
- CSS3滑鼠懸浮橫條從中間向兩邊擴充套件效果CSSS3套件
- 遊戲中“血條”設計的進化史遊戲
- 程式設計中的一些感悟程式設計
- MySQL中InnoDB引擎對索引的擴充套件MySql索引套件
- 在Javascript中進行面向切面程式設計JavaScript程式設計
- 當在laravel中開發擴充套件時,如何將本地擴充套件載入進其他laravel專案中進行測試?Laravel套件
- Sentinel 的一些小擴充套件套件
- Golang中使用lua進行擴充套件Golang套件
- 用SQL Server寫指令碼和程式設計實現SSIS包的擴充套件SQLServer指令碼程式設計套件
- 用Shell擴充套件實現原始碼統計程式套件原始碼
- 併發程式設計之執行緒池的使用及擴充套件和優化程式設計執行緒套件優化
- jQuery進度條效果程式碼例項jQuery
- CSS3進度條效果程式碼CSSS3
- 在 Oracle JDeveloper 中進行 Ajax 程式設計(轉)OracleDeveloper程式設計
- dart系列之:你的地盤你做主,使用Extension對類進行擴充套件Dart套件
- 使用Apache Kafka對電子商務系統進行擴充套件的思路 - BogdanApacheKafka套件
- 如何使用 SEGW 的 redefine 功能對 SAP 標準 OData 服務進行擴充套件套件
- 程式設計師需要知道的15個Chrome擴充套件程式設計師Chrome套件
- 15個程式設計師需要知道的Chrome擴充套件程式設計師Chrome套件
- 前端程式設計師必知的30個Chrome擴充套件前端程式設計師Chrome套件
- 怎樣用 Bash 程式設計:邏輯操作符和 shell 擴充套件程式設計套件
- 關於一些nginx的高階擴充套件應用Nginx套件
- 進行Windows Azure SQL Database的水平擴充套件GVWindowsSQLDatabase套件
- SQL_Postgresql-一些擴充套件和應用SQL套件
- tf.tile()進行張量擴充套件套件
- css進行中打點效果程式碼例項CSS
- 對新手程式設計師的一些嘮叨程式設計師
- 架構設計的立方體擴充套件架構套件
- 用Delphi進行OpenGL程式設計學習心得 (轉)程式設計
- ASP.NET MVC 5 Web程式設計3 -- Controller的應用及擴充套件ASP.NETMVCWeb程式設計Controller套件
- 程式設計中的一些感悟(收藏) (轉)程式設計