My Boundary As Much As I Experienced

p5.js로 2차원 pendulum 만들기 본문

Interactive(HTML Canvas ・three.js ・game)/CSS・Canvas ・ p5.js ・ Pixi.js

p5.js로 2차원 pendulum 만들기

Bumang 2024. 5. 26. 20:47

각도와 사인 함수의 반환값

  • 라디안 단위의 각도: 사인 함수는 입력된 각도를 라디안 단위로 받아들인다. 1 라디안은 약 57.3도이다.
  • 사인 값: 주어진 각도에 따라 사인 값은 다음과 같이 변한다:
    • sin⁡(0)=0
    • sin⁡(𝜋2)=1
    • sin⁡(𝜋)=0
    • sin⁡(3𝜋2)=−1
    • sin⁡(2𝜋)=0

 

let angle;

// angleVelocity
let angleV = 0;
// angleAcceleration
let angleA = 0.001;

let bob;
let len;

let gravity = 1;

function setup() {
  createCanvas(600, 800);
  origin = createVector(300, 0);
  angle = PI / 4; // 0.78
  console.log(angle, "angle");
  bob = createVector();
  len = 300;
}

function draw() {
  background(0);

  let force = gravity * sin(angle);
  // console.log(force, "force");
  angleA = (-1 * force) / len;
  angleV += angleA;
  angle += angleV;
  console.log(angle, "angle");

  angleV *= 0.99;

  // bob이 추이다.
  bob.x = len * sin(angle) + origin.x;
  bob.y = len * cos(angle) + origin.y;

  stroke(255);
  strokeWeight(8);
  fill(127);

  // 시작점의 x,y, bob의 x,y를 라인으로 이음
  line(origin.x, origin.y, bob.x, bob.y);
  // bob의 x, y를 중점으로 반지름 64의 원을 생성
  circle(bob.x, bob.y, 64);
}