[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);
}
결과물
반응형
'한 걸음 > Creative coding' 카테고리의 다른 글
[Nature of Code] processing 6. rotate 함수를 이용한 회전 운동, 극 좌표를 직교 좌표로 변환 (0) | 2023.02.03 |
---|---|
[Nature of Code] processing 5. 힘 생성 (1) | 2023.02.02 |
[Nature of Code] processing 4. 마우스를 향해 가속되는 객체들 (0) | 2023.02.01 |
[Nature of Code] processing 3. 속도/가속도와 벡터를 활용한 이동 (0) | 2023.02.01 |
[Nature of Code] processing 1. 튕기는 공 만들기 (0) | 2023.01.28 |