30 动态可视化 艺术家的可视化工具Processing

Processing是一种用于创建视觉艺术作品的编程语言,适用于程序设计初学者及艺术家。本文介绍如何下载与安装Processing,并涵盖其基本功能,包括绘图函数、变量类型、控制结构及多媒体应用等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是Processing

Processing是一门用来生成图片、动画和交互软件的编程语言

非常简单,不只是程序猿,设计狮、艺术僧也在使用!

 

下载和安装

https://processing.org/download/

 

Processing基础

软件界面:工具栏、文本编辑器、控制台

 

常用函数:

  • setup()和draw()
  • size()
  • frameRate()
  • point(),line(),rect(),ellipse()
  • background(),fill(),stroke()
  • smooth()

 

变量(int、float、String)

 

运算符、判断、循环

 

一些常量:mouseX,mouseY,pmouseX,pmouseY,mousePressed,mouseButton

 

多媒体:图片、字体

 

函数、对象(class,构造函数、成员变量、成员函数)、数组

 

### Processing交互作品示例代码 #### 击球小游戏的状态管理 为了更好地理解如何构建基于状态的游戏,在击球小游戏中,`GameState`枚举用于表示不同阶段,并通过`switch`语句实现状态间的平滑过渡。每次游戏状态发生变化时,特定逻辑被触发以更新屏幕显示和其他行为[^1]。 ```java enum GameState { START, PLAYING, GAME_OVER; } void setup() { size(400, 400); state = GameState.START; } void draw() { switch(state){ case START: startScreen(); break; case PLAYING: playGame(); break; case GAME_OVER: gameOverScreen(); break; } } ``` #### 结合声音输入与流体模拟的太极动画 此部分展示了怎样集成Processing中的音频库和PixelFlow库来制作具有互动的视觉艺术装置——太极图流动效果。用户可以通过麦克风实时影响画面中液体的颜色及形态变化[^2]。 ```java import de.andreasschmidt.pixelflow.*; Fluid fluid; void settings(){ fullScreen(P2D); } void setup() { PixelFlow.init(this); fluid = new Fluid(width, height); // 初始化其他设置... } void draw() { background(0); float amplitude = audioInput.getAmplitude(); // 获取当前音量大小 fluid.setColor(fluid.COLOR_DENSITY, color(amplitude*255)); fluid.update(); beginRecord(PixelFlow.SCREEN); fluid.draw(); endRecord(); } ``` #### 超声波传感器控制视频播放方向 Arduino配合超声波模块可以检测前方障碍物的距离并将数据发送至电脑端运行的Processing脚本内,以此决定正在播放影片片段的选择路径[^4]。 ```cpp // Arduino Code snippet for sending distance data to PC via Serial port. const int trigPin = 9; const int echoPin = 10; long duration; int distanceCm; void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distanceCm = duration * 0.034 / 2; if(Serial.availableForWrite()>0){ Serial.println(distanceCm); } delay(100); } ``` ```java // Processing code receiving serial input from arduino and controlling video playback based on sensor readings. import processing.serial.*; Serial myPort; Movie[] movies = {new Movie(this,"video1.mp4"), new Movie(this,"video2.mp4")}; float thresholdDistance = 50; // cm unit void setup() { String portName = "/dev/tty.usbmodemfa141"; // Replace with your actual COM Port name myPort = new Serial(this, portName, 9600); size(800, 600); } void draw() { while(myPort.available() > 0) { String inString = myPort.readStringUntil('\n'); if(inString != null ) { println(trim(inString)); try{ float distValue = Float.parseFloat(trim(inString)); if(distValue<thresholdDistance){ movies[1].play(); movies[0].stop(); }else{ movies[0].play(); movies[1].stop(); } }catch(NumberFormatException e){} } } image(movies[currentlyPlayingIndex], 0, 0); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值