[Nature of Code] processing 2. 벡터

2023. 1. 30. 01:13
반응형

Nature of Code 책에서 나오는 벡터는 유클리드 벡터를 의미한다.

유클리드 벡터란, 크기와 방향을 가지는 객체이다.

 

벡터를 사용하면 아래와 같이 코드를 조금 더 간략하게 변경할 수 있다.

 

//before
float x;
float y;
float xspeed;
float yspeed;


//after
Vector location;
Vector speed;

 

벡터는 다양한 곳에 사용되는데, 가장 간단한 예시는 한 지점에서 다른 지점으로 이동하는 것을 표현할 때이다.

 

 

벡터연산

add() : 벡터 덧셈

sub() : 벡터 뺄셈

mult() : 벡터 곱셈

div() : 벡터 나눗셈

mag() : 벡터의 크기 구하기

setMag() : 벡터의 크기 지정

normalize() : 방향이 같고 단위 길이가 1인 벡터로 설정

limit() : 벡터의 크기가 매개변수로 넣은 최댓값을 넘을 때에 줄여줌

heading() : 2차원 벡터의 회전각도를 구함

rotate() : 2차원 벡터를 특정 각도만큼 회전

lerp() : 선형 보간법을 사용

dist() : 두 벡터(점)의 유클리드 거리를 구함

angleBetween() : 두 벡터의 각도를 구함

dot() : 두 벡터를 내적 연산함

cross() : 두 벡터를 외적 연산함(3차원 관련)

random2D() : 임의의 2차원 벡터를 생성

random3D() : 임의의 3차원 벡터를 생성

 

 

 

 

[예제] 마우스 움직임에 반응하는 선과 사각형 

void setup() {
  size(200, 200);
  smooth();
}

void draw() {
  background(120);
  
  PVector mouse = new PVector(mouseX, mouseY);
  PVector center = new PVector(width / 2, height / 2);
  mouse.sub(center);
  
  //mag함수는 벡터의 크기 또는 길이를 구하는 함수
  float m = mouse.mag();
  fill(0);
  rect(0, 0, m, 10);
  
  translate(width / 2, height / 2);
  line(0, 0, mouse.x, mouse.y);
}

 

결과물

반응형

BELATED ARTICLES

more