为了账号安全,请及时绑定邮箱和手机立即绑定

Processing雁群实验(续)

标签:
Java

本案例要点:

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

效果图如下:

webp

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

代码如下:

int [][]myArray;//define angle of rotationfloat 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},
};

动态效果如图:


webp

规则图形3D旋转演示



作者:一石匠人
链接:https://www.jianshu.com/p/e95787a57446


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
231
获赞与收藏
1002

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消