前言
根据老师的要求,创作一幅介绍自己的作品,可以是具象化地描绘形象,也可以是任何形式表现自己的兴趣、追求、特色、经历等。
由于最近比较喜欢一款FPS游戏,就做了里面的一把枪的模型。另外实现了一些动态效果和交互效果。
原图
编程语言
p5.js,编程环境:p5.js在线编程
实现逻辑
将整个模型分为四个模块:消音器、枪管、连接座、弹夹。
就是简单的图形堆叠,仔细观察原图,使用ellipse(),rect(),triangle()等函数实现功能。具体的看我下面的
- 消音器
//绘制消音管的函数
function silenceTube(x,y){
fill(30)
rect(x+60,y+30,180,30)
ellipse(x+240,y+45,10,30)
ellipse(x+160,y+45,5,32)
ellipse(x+80,y+45,5,32)
rect(x+50,y+35,10,20)
}
- 枪管
//绘制枪管的函数
function barrel(x,y){
fill(80)
rect(x+220,y+25,20,10,2)
rect(x+245,y+40,5,10)
rect(x+65,y+33,180,28)
triangle(x+65,y+28,x+60,y+61,x+65,y+61)
rect(x+65,y+31,20,2)
triangle(x+65,y+28,x+65,y+31,x+70,y+31)
triangle(x+64,y+41,x+62,y+48,x+56,y+42)
arc(x+60,y+42,8,8,PI,0)
fill(200)
rect(x+140,y+33,30,20)
}
- 连接座
//绘制连接座的函数
function connection(x,y){
fill(80)
rect(x+105,y+66,139,12)
triangle(x+118,y+91,x+114,y+104,x+133,y+104)
rect(x+128,y+100,30,4)
triangle(x+164,y+79,x+158,y+104,x+164,y+104)
triangle(x+164,y+79,x+164,y+104,x+170,y+79)
fill(0)
rect(x+60,y+61,185,5)
rect(x+60,y+66,45,12)
triangle(x+60,y+61,x+56,y+78,x+60,y+78)<