专栏首页儿童编程Processing雁群实验(续)

Processing雁群实验(续)

本文在前一篇《Processing雁群实验》进行延伸扩展,进行“实验性”探索。

本案例要点:

(1)旋转复杂不规则图形; (2)运用二维数组定义图形; (3)鼠标左右移动控制物体沿 Y 轴旋转; (4)点击鼠标线条变色。

效果图如下:

复杂图形3D旋转演示.gif

代码如下:

int [][]myArray;
//define angle of rotation
float angle_1; 
void setup() {
  size(500, 500, P3D);
  smooth();
  //Define two dimensional array 
  myArray=new int[200][3];
  for (int i=0; i<100; i++) {
    for (int j=0; j<3; j++) {
      myArray[i][j]=int(random(-100, 100));
    }
  }
}
void draw() {
  background(200);
  translate(width/2, height/2, 0);
  rotateY(radians(angle_1));
  noFill();
  //draw the shape to rotate
  box(200);
  beginShape();
  for (int i=0; i<myArray.length; i++)
  {
    vertex(myArray[i][0], myArray[i][1], myArray[i][2]);
  }
  endShape();
}

void mousePressed() {
  stroke(random(255),random(255),random(255));
}
void mouseMoved() {
  angle_1=map(mouseX, -width/2, width/2, 0, 360);
}

注意:

因为要是一个固定的图形进行旋转,不同于上一篇《Processing雁群实验》中的变动图形,这要求3D位点坐标要在setup()函数中提前赋值。如果在draw()中赋值则每次循环都重新随机画图,不符合本例要求。

拓展1:用坐标点画规则图形

规则图形可以在3D坐标中定义坐标点,如上例中的坐标点由随机变为规则,变化的代码如下:

int [][]myArray={
{0,0,0},
{200,0,0},
{200,0,200},
{0,0,200},
{0,0,0},
{0,100,0},
{100,200,0},
{200,200,0},
{200,0,0},
{200,0,200},
{200,200,200},
{200,0,200},
{200,0,0},
{200,200,0},
{100,200,0},//
{0,200,100},
{0,100,0},
{0,200,100},
{0,200,200},
{0,0,200},
{0,200,200},
{200,200,200},
{200,200,0},
};

动态效果如图:

规则图形3D旋转演示

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • “心中有剑,落叶飞花,皆是兵器”-Python动画原理揭示及案例

    “心中有剑,落叶飞花,皆是兵器”是武侠世界中武功的超高境界。这句话用来形容Python动画也是非常合适的。从最原始的手工动画到现在的好莱坞动画大片,动画原理都一...

    一石匠人
  • Scratch案例——无人驾驶汽车

    (本文为前一篇文章《理解编程语言只需四个词-编程知识体系介绍(带python及scratch案例)》的说明案例之一)

    一石匠人
  • Processing雁群实验

    本文利用Processing完成一个3D随机渲染案例。由于最终动画效果像大雁群徘徊飞舞,我为其取名“雁群实验”。 为了简化说明,我们先用一个正方体旋转做说明,...

    一石匠人
  • 开启和关闭HBase的thrift进程 转

    $HBASE_HOME/bin/hbase-daemon.sh start thrift

    双面人
  • 会员注册、找回密码、登陆(邮箱与手机验证码)

    最近很多人问 开源项目中的截图如何使用,我怎么看不到这个效果。 今天就来聊聊这个话题

    Javen
  • 大牧絮叨设计模式:建造者模式

    建造模式(Builder)[GOF95]是一种对象的创造模式。主要责任是在程序中创建较为复杂的对象,企业项目中在运行环境初始化时经常使用的一种创建模式。

    大牧莫邪
  • Eclipse-Eclipse的Process出现“Remote System Explorer Operation”

    Eclipse的使用过程中Process出现“Remote System Explorer Operation”进程,很卡,解决办法如下:

    悠扬前奏
  • 箱子排序(测试代码Qt5.1 for mac)

    青木
  • Python模块之subprocess用法实例详解

    subprocess最早在2.4版本引入。用来生成子进程,并可以通过管道连接他们的输入/输出/错误,以及获得他们的返回值。

    菲宇
  • Fireball恶意程序已袭击全球将近2.5亿台PC,背后推手是一家中国电子营销机构

    Check Point研究人员最近发现了一款传播范围极广的恶意软件,感染的计算机数量高达2.5亿,包括Windows和macOS。这款恶意软件被命名为Fireb...

    FB客服

扫码关注云+社区

领取腾讯云代金券