---
# System prepended metadata

title: 【TEST】單元三：變數與資料－賦予可變與連續性
tags: [互動藝術程式創作入門]

---

# 【TEST】單元三：變數與資料－賦予可變與連續性

目標：學習如何產生更複雜、有規律的連續圖示。


## 為什麼要使用變數？

1. 減少重複
2. 暫存手邊資料
3. 為複雜運算解構概念
4. 留下上一刻的狀態

## 數字的操作

> 想法：
> 因為 draw function 本身就會一直循環，所以製作有序、不斷生成的圖像時，可以善用這點。

- `%` 取餘數，可以處理間隔式規律，例如：每隔三個方塊，就要有一個方塊是白色的。
- `abs` 取絕對值

## 轉換數值範圍的應用

- map/ constrain，map 是把一個數字從舊範圍對應到新範圍。
- lerp 逼近，會有種逐漸靠近的感覺
- min/max

```javascript
//讓滑鼠 x 軸位置的範圍是在 0, 255 之間
var colorR = map(mouseX, 0, width, 0, 255, true); 

//map(mouseX, 實際最小值, 實際最大值, 要對應的最小值, 要對應的最大值, [true])，true 讓最小值與最大值是乾淨的
```

## Questions

1. 使用 var 跟 let 在 p5.js 的使用有差別嗎？
3. 第二個範例的 brightness 放在 function 外面會更清楚、更好管理嗎？為何有時定義變數在 function 外，有時在裡面？

自己的想法：
`map()` 如果寫在 function 外，會被系統報錯，要求寫在 setup() 內，當改寫到 setup() 內，卻沒有畫面。如果跟老師一樣，寫在 draw 才會出現理想效果。


## 作業

1. 畫個蝸牛型，由內慢慢畫元到外，且顏色會變
2. 時鐘表面（番茄時鐘）
3. 嘗試物理模擬


<iframe src="https://editor.p5js.org/laiyenju/embed/bDppjKFI3" height="500" width="700" frameborder="0"></iframe>

###### tags: `互動藝術程式創作入門`
