1. 程式人生 > >Processing 練習(7)- 抽象空間_欣賞_000

Processing 練習(7)- 抽象空間_欣賞_000

從openProcessing.org上面拷來的一個抽象平面圖

程式碼:

/* Based on CREATIVE CODING course,  MONASH UNIVERSITY
 
 MOVE CIRCLES IN A STRIGHT LINE AND CONSTRAIN TO SURFACE.
 IF TWO CIRCLES INTERSECT DRAW A LINE CONNECTING THEIR CENTERS,
 CLOURING THE LINE BASED ON THE CIRCLE BEING ODD OR EVEN
 
 ARROW UP = INCREASE RADIUS OF CIRCLE
 ARROW DOWN = DECREASE RADIUS OF CIRCLE */
 
 
int n = 50; // NUMBER OF CIRCLES
float[] x = new float[n];
float[] y = new float[n];
float[] d = new float[n]; // RADIUS OF THE CIRCLES
float[] moveX = new float[n];
float[] moveY = new float[n];
 
void setup() {
  size(800, 500);
  background(255);
  stroke(0, 10);
  noFill();
  smooth();
  for (int i = 0; i<n; i++) { //ASSIGN VALUES TO VARIABLES
    x[i]=random(width);
    y[i]=random(height);
    d[i]=random(20, 80);
    // CALL FUNCTIONS
    moveX[i]=random(-1, 1);
    moveY[i]=random(-1, 1);
  }
  println(d); //SHOW RADIUS
}
 
void draw() {
  for (int i = 0; i<n; i++) {
    moveCircle(i);
    connectCircle(i);
  }
}
 
//#######  FUNTIONS  ###############
 
// MOVE CIRCLES IN A STRIGHT LINE AND CONSTRAIN TO SURFACE
void moveCircle(int i) {
  x[i]=x[i]+moveX[i];
  y[i]=y[i]+moveY[i];
  //  ellipse(x[i], y[i], d[i], d[i]);
 
  if (x[i]>width || x[i]<0) {
    moveX[i]= moveX[i]>0 ? -random(-1, 1) : random(-1, 1);
  }
  if (y[i]>height || y[i]<0) {
    moveY[i] = moveY[i]>0 ? -random(-1, 1) : random(-1, 1);
  }
}
 
// IF TWO CIRCLES INTERSECT THEN DRAW A LINE CONNECTING THEIR CENTERS,
//CLOURING THE LINE BASED ON THE CIRCLE BEING ODD OR EVEN
void connectCircle(int i) {
  for (int j = 0; j<n; j++) {
    if (j!=i) {
      if (dist(x[i], y[i], x[j], y[j])<(d[i]+d[j])) {
        if (i%2==0) {
          stroke(255, 10);
        } else {
          stroke(0, 10);
        }
        line(x[i], y[i], x[j], y[j]);
      }
    }
  }
}
 
// MODIFY RADIUS OF CIRCLES, SAVE AND REFRESH
void keyPressed() {
  if (keyCode == UP) {
    for (int i = 0; i <n; i++) {
      d[i]++;
    }
    println(d);
  }
  if (keyCode == DOWN) {
    for (int i = 0; i <n; i++) {
      d[i]--;
    }
    println(d);
  }
 
  if (key == 'r') {
    background(255);
  }
 
  if (key == 's') {
    saveFrame("######.png");
  }
}


相關推薦

Processing 練習7- 抽象空間_欣賞_000

從openProcessing.org上面拷來的一個抽象平面圖 程式碼: /* Based on CREATIVE CODING course, MONASH UNIVERSITY MOVE CIRCLES IN A STRIGHT LINE AND CONST

第十六週OJ 練習7——抽象基類。

/* 02.*煙臺大學計算機學院學生 03.*All right reserved. 04.*檔名稱*煙臺大學計算機學院學生 05.*All right reserved. 06.*檔名稱:抽象基類 07.*作者:王洪海 08.*完成日期:2013年6月12日 09.*版本號:v1.0 10.*對任

野生前端的資料結構基礎練習7——二叉樹

網上的相關教程非常多,基礎知識自行搜尋即可。 習題主要選自Orelly出版的《資料結構與演算法javascript描述》一書。 參考程式碼可見:https://github.com/dashnowords/blogs/tree/master/Structure/btree 一.二叉樹的

SSM_CRUD新手練習7Spring單元測試分頁請求

          好久沒寫這個系列部落格了是因為本人去公司實習去了,公司用的是Spring+SpingMvc+Hibernate現在有時間了不管怎麼樣繼續把這個專案寫完。   因為機器的原因,我的環境變成了IDEA+oracle+1.8+tomc

Processing 練習10

float x = 0; void setup() { size(400, 400); background(255); stroke(255); } void draw() {

設計模式練習3——抽象工廠模式

抽象工廠模式 一、題目: 某軟體公司要推出一款新的手機遊戲軟體,該軟體支援IOS、Android和Windows Phone等多個智慧手機作業系統平臺,針對不同的手機作業系統,該遊戲軟體提供了不同的遊戲操作控制類(OperationController)和

二、Java面向對象7_封裝思想——package語句

使用 ron ... 小寫 命名 同時 一行 目錄 基礎 2018-04-30 package語句 一、package關鍵字   為了更好地組織類,Java 提供了包機制,用於區別類名的命名空間。   包的作用:      1.把功能相似或相關的類或接口組織在同一個

二、Java面向對象7_封裝思想——static import(靜態導入)

http bsp oid eclipse out 封裝 靜態 font ips 2018-04-30 static import(靜態導入) import static 是靜態導入,是jdk1.5的新特征,可以不同過調用包名,直接使用包裏的靜態方法。 語法: 1

二、Java面向對象7_封裝思想——訪問修飾符

繼承性 mil img inf 情況下 隱藏 -- 解釋 分布 2018-04-30 訪問修飾符 <訪問權限範圍越小,安全性越高> public:表示全局的,可以在當前項目中任何地方訪問       如果幾個相互訪問的public類分布在不用的包中

數碼相框_電子書之程式碼閱讀及編寫7

數碼相框_電子書之程式碼閱讀及編寫(7)   在LCD顯示任意編碼的文字檔案,類似電子書 怎樣在LCD上顯示檔案: 需要哪幾個檔案? 1、頂部檔案 通過main.c分析命令列的操作,然後初始化各個管理檔案下的結構體,比如DisplayInit(); 然後進

C#程式設計練習02:大地座標系LBH空間直角座標系XYZ的轉換及其逆轉換

需求說明:以WGS-84軟體為例,實現大地座標系(LBH)向空間直角座標系(XYZ)的轉換及其逆轉換 原理說明: 程式原始碼: using System; using System.Collections.Generic; using System.Linq; using S

java基礎知識整理7——繼承與抽象

一、繼承 1、概述          多個類中存在相同屬性和行為時,將這些相同的內容抽取到單獨一個類中,那麼多個類無需再定義這些屬性和行為,只要繼那個類即可。多個類可以稱為子類,單獨這個類稱為父類或者超類。子類可

Processing摸索前行7

上一篇,我們經過摸索已經掌握了示波器的靜態圖形繪製的方法,這裡我們繼續前行,將其動態波形的功能實現。 從現實情況來看,動態波形一定是數字一邊產生一邊繪製到螢幕上,而不是一開始就有一堆的資料等著我們用。 這裡估計就要用到類似執行緒之類的概念來操作了《Processing摸索前行(6)-

Python入門筆記7_ 列表的生成及表格的生成

列表的生成 range(x,y,z)函式我們已經在前面的學習中接觸過了,它最明顯的特點就是生成的序列的範圍是從 x 到 y-1 的,如果有 z,表示每隔 z 個值取一個。 我們現在來看看它更高階的用法

讓兩臺伺服器的MySQL5.7資料同步_主主同步互為主從關係

網上找的大部分定義master-host的其實在新的MySQL中已經停用了,於是乎很悲劇的自己探索寫出了這麼一個東西 RedHat版本7.0 MySQL版本 5.7 伺服器名稱為假的!!!伺服器名稱為假的!!!伺服器名稱為假的!!! 重要事情說三遍~ 另外需要注意的是,你同

【杭電100題】C語言程式設計練習2014 青年歌手大獎賽_評委會打分

http://acm.hdu.edu.cn/showproblem.php?pid=2014Problem Description青年歌手大獎賽中,評委會給參賽選手打分。選手得分規則為去掉一個最高分和一個最低分,然後計算平均得分,請程式設計輸出某選手的得分。Input輸入資料

nodejs7練習 http 和 express 創建簡單的服務器

客戶端 div 簡單的 tex require expr 字符串 創建 nbsp http const http = require(‘http‘) // 創建服務器 const server = http.createServer() // 綁定事件,監聽客戶端的

二、Linear Regression 練習轉載

hold off int 必須 html 移動 根據 which win from 轉載鏈接:http://www.cnblogs.com/tornadomeet/archive/2013/03/15/2961660.html 前言   本文是多元線性回歸的練習,這裏練習的

六、regularized logisitic regssion練習轉載

method open lose hold on update import 等高線 algo 2個 轉載鏈接:http://www.cnblogs.com/tornadomeet/archive/2013/03/17/2964858.html 在上一講Deep learn

樹莓派3學習筆記77分辨率800 480顯示器配置

樹莓派、顯示器配置樹莓派3學習筆記(7):7寸(分辨率800 480)顯示器配置 樹莓派搭載分辨率為800X480的顯示器在顯示的時候可能會遇到無法全屏顯示的問題, 顯示器只有部分能夠顯示,有一部分是黑邊,對於這一種情況,我們只需進入系統的boot目錄,找到config.txt文件,或者直接在命