p5.js 입문
13056 단어 processingp5.js
소개
이 기사는 후쿠오카 아키타코 클럽 Advent Calendar 2019의 첫 번째 기사입니다.
할 일
사실은 processing을 사용하여 mac에서 실행되는 그래픽 앱을 만들고 싶었습니다.
processing이 잘 작동하지 않았기 때문에 익숙한 의미도 담고 p5.js를 만져 보았습니다.
우선 만들어 본 것이 이쪽입니다.
사실은 processing을 사용하여 mac에서 실행되는 그래픽 앱을 만들고 싶었습니다.
processing이 잘 작동하지 않았기 때문에 익숙한 의미도 담고 p5.js를 만져 보았습니다.
우선 만들어 본 것이 이쪽입니다.
환경
준비
index.html
및 sketch.js
파일 만들기 index.html
의 내용은 다음과 같습니다.index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>p5.js test</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.9.0/p5.min.js"></script>
<script src="./sketch.js"></script>
</head>
<body>
</body>
</html>
만들기
여기에서 sketch.js
에 설명 된 내용
준비
먼저 setup
및 draw
라는 함수를 준비합니다.
setup
: 열 때 첫 번째 실행 draw
: setup 후에 여러 번 반복 실행되는 처리// 最初に1回だけ実行される処理
function setup() {
}
// setup後に繰り返し実行される処理(フレーム単位)
function draw() {
}
캔버스 만들기
setup
내에 캔버스를 만드는 프로세스를 작성합니다. 이 캔버스의 영역이 도형 등을 그리는 영역이 됩니다.const canvasX = 1000;
const canvasY = 1000;
const canvasColor = 'skyblue';
function setup() {
// キャンバスの作成
createCanvas(canvasX, canvasY);
// 背景色の設定
background(canvasColor);
}
index.html
를 브라우저에서 열면 1000px × 1000px의 밝은 파란색 캔버스가 그려집니다.도형 그리기
시험에 몇 가지 도형을 그려 보겠습니다.
기능
내용
circle(x, y, d)
x, y 좌표를 중심으로 직경 dpx의 원을 그립니다.
aquare(x, y, s)
x, y 좌표를 정사각형의 좌상점의 기준으로서 1변 spx의 정사각형을 렌더링 한다(그 외에 인수 있음)
function setup() {
// キャンバスの作成
createCanvas(canvasX, canvasY);
// 背景色の設定
background(canvasColor);
// 円の描画
circle(100, 100, 100);
// 正方形の描画
square(250, 100, 200);
}
그러면 이렇게 됩니다.
또한 채우기나 선은 아래와 같이 설정할 수 있습니다.
function setup() {
// キャンバスの作成
createCanvas(canvasX, canvasY);
// 背景色の設定
background(canvasColor);
// 図形をピンクで塗りつぶす
fill('pink');
// 線の色を赤にする
stroke('red');
// 円の描画
circle(100, 100, 100);
// 塗りつぶさない(透明になる)
noFill();
// 正方形の描画
square(250, 100, 200);
}
fill
나 stroke
등은, 그 이후에 묘화되는 도형에 적응되므로, 각각 별도의 설정을 하고 싶은 경우, 확실히 설정할 필요가 있습니다.(이 경우
stroke('red')
가 정사각형에도 적용됩니다.)자세한 내용은 공식 참조에 나와 있으므로 그곳을 참조하십시오.
그리기에서 도형 그리기
draw
펑션에서는 애니메이션을 붙이는 것과 같은 드로잉을 작성할 수 있습니다.시험에 원이 비스듬하게 움직이는 구현을 해보겠습니다.
let circleX = 100;
let circleY = 100;
function setup() {
// キャンバスの作成
createCanvas(canvasX, canvasY);
}
function draw() {
background(canvasColor);
fill('pink');
noStroke();
circle(circleX, circleY, 100);
circleX++;
circleY++;
}
※gif 이미지이므로 바삭바삭하고 있습니다만, 실제로는 부드럽게 이동하고 있습니다.
circleX, circleY를 단순히 +1하고 있을 뿐이므로 화면 밖으로 나가 사라집니다.
이벤트 처리
p5.js
에는 마우스 조작과 같은 이벤트에 대한 콜백이 있습니다.function setup() {
// 省略
}
function draw() {
// 省略
// mouseIsPressedはクリックされている間trueを返す
if (mouseIsPressed) {
console.log("クリックされ続けている");
}
}
// クリックされた際に実行される
function mousePressed() {
console.log("クリックされた!");
// mouseButtonでクリックの種類がわかる
// draw内などでも使用可能
console.log(mouseButton);
if (mouseButton === LEFT) {
console.log('左クリック');
}
if (mouseButton === RIGHT) {
console.log('右クリック');
}
// マウスの座標を取得
console.log(mouseX);
console.log(mouseY);
}
// ダブルクリックされた際に実行される
function doubleClicked() {
console.log('ダブルクリック');
}
마지막으로
이번은 간단하게 p5.js
에 접할 뿐의 내용이 됩니다.
다음 번은 원을 클릭했을 때의 색의 변경이나, 더블 클릭해 원을 추가하는 처리 등, 최초의 화상이 될 때까지의 구현을 실시합니다.
Reference
이 문제에 관하여(p5.js 입문), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/shoboo/items/1caff92eea709e3c8bdd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(p5.js 입문), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shoboo/items/1caff92eea709e3c8bdd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)