美文网首页
p5.js绘制七巧板图案2020-09-02

p5.js绘制七巧板图案2020-09-02

作者: 少儿创客 | 来源:发表于2020-09-02 09:40 被阅读0次
七巧板

七巧板大家都熟悉的,有一段时间因缘巧合,了解到七巧板在幼儿数学中应用比较普遍。有道幼儿数学思维课的教具中也有七巧板。上图是一个五年级的小朋友,自己用p5.js画的七巧板,钻研了很久,我表示很开心。下面是他的代码:

function setup() {
    createCanvas(300,300);
    strokeWeight(2)
}

function draw() {
    background(255 ,165 ,0)
    noStroke()
    fill(0, 255, 255)
    triangle(0,0,width,0,width/2,height/2)
    fill(192 ,255 ,62)
    triangle(0,0,0,height,width/2,height/2)
    fill(255, 215 ,0    )
    triangle(width,height,width/2,height,width,height/2)
    fill(205, 92, 92    )
    triangle(0,height,width/2,height,width/2/2,height/4*3)
    fill(255, 255, 0)
    triangle(width/2,height/2,width/2,height,width/2/2,height/4*3)
    triangle(width/2,height/2,width/2,height,width/4*3,height/4*3)
    fill(191, 62 ,255   )
    triangle(width/2,height/2,width/4*3,height/4*3,width/4*3,height/4)
}

他绘制的过程中,因为涉及到平行四边形,所以问我平行四边形怎么绘制,我回答说用vertext不过想来是没想通,其实他的画法是正方形用了2个三角形拼出来的,橙色的平行四边形其实没有绘制,是底下漏出来的背景色,如果把background(255 ,165 ,0)改成background(255 ,0,0)就可以发现了:

红色背景色

不过解决了问题还是挺好的,能够用width和height表示宽度和高度的变量,表示三角形各个顶点,也是很不错的。这里平行四边形用vertex是可以的,因为实际上坐标他已经知道了(如下图),看起来是vertex用的不熟悉。包括正方形也是可以画的,当然正方形也可以话个正方形,然后用poppush旋转45°。

image.png
beginShape()
vertext(x1, y1)
vertext(x2, y2)
vertext(x3, y3)
vertext(x4, y4)
endShape(CLOSE)

从这里说开去,有没有其他的画法呢?有的,可以绘制小一点,然后放大,然后画一个三角形然后利用平移得到其他三角形,方法还是挺多的。本身坐标不是很复杂,可以直接画出来,计算出每个点的坐标,也可以在原点复制,然后考虑平移变换,涉及到的知识点有所差别。
先用坐标计算的方法绘制

function setup() {
    createCanvas(300, 300);
  }
  
  
  function draw() {
    background(0);
    fill('red')
    triangle(0,0,0,height,width/2,height/2)
    fill('blue')
    triangle(0,0,width,0,width/2,height/2)
    fill('green')
    triangle(0,height,width/4,height*3/4,width/2,height)
    fill('orange')
    triangle(width*3/4, height/4, width/2, height/2,width*3/4,height*3/4)    
    fill('purple')
    triangle(width,height/2,width/2,height,width,height)
    // 长方形


    // 平行四边形
  }

这样就剩下平行四边形和正方形了,黑色的背景露出来了


黑色背景露出
function setup() {
    createCanvas(300, 300);
  }
  
  
  function draw() {
    background(0);
    // 不需要边框
    noStroke()
    fill('red')
    triangle(0,0,0,height,width/2,height/2)
    fill('blue')
    triangle(0,0,width,0,width/2,height/2)
    fill('green')
    triangle(0,height,width/4,height*3/4,width/2,height)
    fill('orange')
    triangle(width*3/4, height/4, width/2, height/2,width*3/4,height*3/4)    
    fill('purple')
    triangle(width,height/2,width/2,height,width,height)
    // 长方形
    fill('pink')
    beginShape()
    vertex(width/2,height/2)
    vertex(width/4,height*3/4)
    vertex(width/2,height)
    vertex(width*3/4,height*3/4)
    endShape(CLOSE)

    // 平行四边形
    fill('yellow')
    beginShape()
    vertex(width,0)
    vertex(width, height/2)
    vertex(3*width/4,3*height/4)
    vertex(width*3/4,height/4)
    endShape(CLOSE)
  }
绘制结束

当然了,除了vertex还有就是,四边形函数了,实际上最佳单:

四边形函数,实际上简单
function setup() {
    createCanvas(300, 300);
  }
  
  
  function draw() {
    background(0);
    // 不需要边框
    noStroke()
    fill('red')
    triangle(0,0,0,height,width/2,height/2)
    fill('blue')
    triangle(0,0,width,0,width/2,height/2)
    fill('green')
    triangle(0,height,width/4,height*3/4,width/2,height)
    fill('orange')
    triangle(width*3/4, height/4, width/2, height/2,width*3/4,height*3/4)    
    fill('purple')
    triangle(width,height/2,width/2,height,width,height)
    // 长方形
    fill('pink')
    quad(width/2,height/2,width/4,height*3/4,width/2,height,width*3/4,height*3/4)

    // 平行四边形
    fill('yellow')
    quad(width,0,width, height/2,3*width/4,3*height/4,width*3/4,height/4)
  }

当然对于几何图形理解的点不同,理解图形有多少个顶点,顶点连线形成图形;或者在理解图形的概念,掌握图形含义的基础上直接操作图形。

function setup() {
    createCanvas(300, 300);
    angleMode(DEGREES)
  }
  
  
  function draw() {
    background(0);
    // 不需要边框
    noStroke()
    fill('red') 
    push()
    triangle(0, 0,width/2,height/2,0,height)
    pop()

    fill('blue')
    push()
    translate(width,0)
    rotate(90)
    triangle(0, 0,width/2,height/2,0,height)
    pop()
    
    fill('green')
    push()
    translate(width*3/4,height*3/4)
    scale(1/2)
    rotate(180)
    triangle(0, 0,width/2,height/2,0,height)
    pop()
    
    fill('orange')
    push()
    translate(width*3/4,height*3/4)
    scale(1/2)
    rotate(180)
    triangle(0, 0,width/2,height/2,0,height)
    pop()
    
    fill('purple')
    
    // 长方形
    fill('pink')
    quad(width/2,height/2,width/4,height*3/4,width/2,height,width*3/4,height*3/4)

    // 平行四边形
    fill('yellow')
    quad(width,0,width, height/2,3*width/4,3*height/4,width*3/4,height/4)
  }
image.png

相关文章

  • p5.js绘制七巧板图案2020-09-02

    七巧板大家都熟悉的,有一段时间因缘巧合,了解到七巧板在幼儿数学中应用比较普遍。有道幼儿数学思维课的教具中也有七巧板...

  • 使用 p5.js 绘制图形

    使用 p5.js 绘制图形 原文链接:http://blog.ccyg.studio/article/9a1514...

  • 一副七巧板和多副七巧板的玩法有什么区别呢?

    玩七巧板的人都知道,用一副七巧板可以拼接出很多种图案。大家也习惯性的只用一副七巧板来拼接图案,很少有人会用多副七巧...

  • 有趣的七巧板

    昨天社团课上数学老师教给我们用七巧板拼图案,七巧板可神奇了,能拼出各种图案,有小兔,小猫,宝剑,花朵,大树,小房子...

  • canvas

    绘制常规图案

  • 手工课七巧板

    礼拜五,老师让我们用七巧板拼图案。 同学们都拿出自己的七巧板,五颜六色的真好看。我先拿出七巧板拼了一...

  • Quartz2D --> 二维绘图引擎(三-图案与阴影)

    一、Patterns(图案) 图案(Pattern)是反复绘制的单元,这些绘制单元重复地绘制到一个图形上下文中。我...

  • 2020-08-30绘制小汽车

    代码 p5.js介绍 p5.js is a JavaScript library for creative cod...

  • 社团课

    星期五的下午是社团课,这次社团课练习七巧板。 老师在电脑上搜出已经拼好的七巧板图案,让我们按照图片上...

  • canvas 入门

    绘制倒计时时钟 1 绘制一条线 然后利用刚学的线条绘制个七巧板 2 绘制弧线 canvas 中的方法 圆的起始状态...

网友评论

      本文标题:p5.js绘制七巧板图案2020-09-02

      本文链接:https://www.haomeiwen.com/subject/fqjisktx.html