두 개 또는 세 개의 차원 벡터를 설명하는 클래스입니다.
벡터는 여러 가지 방식으로 생각할 수 있습니다. 한 관점에서 벡터는 공간을 가리키는 화살표와 같습니다. 벡터는 크기(길이)와 방향을 모두 가집니다.
p5.Vector
객체는 수학을 단순화하기 때문에 운동 프로그래밍에 자주 사용됩니다. 예를 들어, 움직이는 공은 위치와 속도를 가집니다. 위치는 공이 공간에서 어디에 있는지를 설명합니다. 공의 위치 벡터는 원점에서 공의 중심까지 확장됩니다. 속도(velocity)는 공의 속력(speed)와 움직이는 방향을 설명합니다. 공이 직선으로 위로 움직이면, 그 속도 벡터는 바로 위를 가리킵니다. 공의 속도 벡터를 그 위치 벡터에 더하면 pos.add(vel)
과 같이 이동합니다. 벡터 수학은 p5.Vector
클래스 내부의 메서드에 의존합니다.
참고: 이 클래스의 인스턴스(instance)를 만드는 권장 방법은 createVector()입니다.
예제
구문
p5.Vector([x], [y], [z])
매개변수
벡터의 x 구성요소입니다.
벡터의 y 구성요소입니다.
벡터의 z 구성요소입니다.
메서드
벡터의 문자열 표현을 반환합니다.
디버깅하는 동안 콘솔에 벡터를 출력할 때 toString()
을 호출하는 것이 유용합니다.
벡터의 x
, y
, z
구성 요소를 설정합니다.
set()
은 별도의 숫자를 사용할 수 있으며, 예를 들어 v.set(1, 2, 3)
과 같이 사용할 수 있습니다. 또한 p5.Vector 객체를 사용할 수 있으며, 예를 들어 v.set(v2)
와 같이 사용하거나 숫자 배열을 사용할 수 있습니다. 예를 들어 v.set([1, 2, 3])
과 같이 사용할 수 있습니다.
구성 요소에 대한 값이 제공되지 않으면 0으로 설정됩니다. 예를 들어, v.set(4, 5)
는 v.x
를 4로, v.y
를 5로, v.z
를 0으로 설정합니다. 인수 없이 set()
을 호출하는 경우, 예를 들어 v.set()
과 같이 호출하면, 모든 벡터 구성 요소가 0으로 설정됩니다.
벡터의 x
, y
, z
구성 요소에 더합니다.
add()
는 별도의 숫자를 사용할 수 있으며, 예를 들어 v.add(1, 2, 3)
과 같이 사용됩니다. 또한 다른 p5.Vector 객체를 사용할 수 있으며, 예를 들어 v.add(v2)
와 같이 사용됩니다. 또는 숫자 배열을 사용할 수 있으며, 예를 들어 v.add([1, 2, 3])
와 같이 사용됩니다.
구성 요소에 대한 값이 제공되지 않으면 변경되지 않습니다. 예를 들어, v.add(4, 5)
는 v.x
에 4를 더하고, v.y
에 5를 더하며, v.z
에는 0을 더합니다. 인자 없이 add()
를 호출하는 것, 즉 v.add()
는 아무런 효과가 없습니다.
add()
의 정적 버전은 p5.Vector.add(v1, v2)
와 같이 새로운 p5.Vector 객체를 반환하며 원본을 변경하지 않습니다.
벡터의 x
, y
, z
구성 요소에 대해 모듈로(나머지) 연산을 수행합니다.
rem()
은 별도의 숫자를 사용할 수 있으며, 예를 들어 v.rem(1, 2, 3)
과 같이 사용됩니다. 또한 다른 p5.Vector 객체를 사용할 수 있으며, 예를 들어 v.rem(v2)
와 같이 사용됩니다. 또는 숫자 배열을 사용할 수 있으며, 예를 들어 v.rem([1, 2, 3])
와 같이 사용됩니다.
하나의 값만 제공되는 경우, 예를 들어 v.rem(2)
와 같이, 모든 구성 요소는 2로 나눈 나머지 값으로 설정됩니다. 두 값이 제공되는 경우, 예를 들어 v.rem(2, 3)
과 같이, v.z
는 변경되지 않습니다. 인자 없이 rem()
를 호출하는 것, 즉 v.rem()
는 아무런 효과가 없습니다.
rem()
의 정적 버전은 p5.Vector.rem(v1, v2)
와 같이 새로운 p5.Vector 객체를 반환하며 원본을 변경하지 않습니다.
벡터의 x
, y
, z
구성 요소에서 뺍니다.
sub()
는 별도의 숫자를 사용할 수 있으며, 예를 들어 v.sub(1, 2, 3)
, 다른 p5.Vector 객체를 사용할 수 있으며, 예를 들어 v.sub(v2)
, 또는 숫자 배열을 사용할 수 있으며, 예를 들어 v.sub([1, 2, 3])
와 같이 사용됩니다.
구성 요소에 대한 값이 제공되지 않으면 변경되지 않습니다. 예를 들어, v.sub(4, 5)
는 v.x
에서 4를 빼고, v.y
에서 5를 빼며, v.z
는 변경되지 않습니다. 인자 없이 sub()
를 호출하는 것, 즉 v.sub()
는 아무런 효과가 없습니다.
sub()
의 정적 버전은 p5.Vector.sub(v1, v2)
와 같이 새로운 p5.Vector 객체를 반환하며 원본을 변경하지 않습니다.
벡터의 x
, y
, z
구성 요소를 곱합니다.
mult()
는 별도의 숫자를 사용할 수 있으며, 예를 들어 v.mult(1, 2, 3)
, 다른 p5.Vector 객체를 사용할 수 있으며, 예를 들어 v.mult(v2)
, 또는 숫자 배열을 사용할 수 있으며, 예를 들어 v.mult([1, 2, 3])
와 같이 사용됩니다.
하나의 값만 제공되는 경우, 예를 들어 v.mult(2)
와 같이, 모든 구성 요소는 2를 곱한 값으로 설정됩니다. 구성 요소에 대한 값이 제공되지 않으면 변경되지 않습니다. 예를 들어, v.mult(4, 5)
는 v.x
를 4로 곱하고, v.y
를 5로 곱하며, v.z
는 1로 곱합니다. 인자 없이 mult()
를 호출하는 것, 즉 v.mult()
는 아무런 효과가 없습니다.
mult()
의 정적 버전은 p5.Vector.mult(v, 2)
와 같이 새로운 p5.Vector 객체를 반환하며 원본을 변경하지 않습니다.
벡터의 x
, y
, z
구성 요소를 나눕니다.
div()
는 별도의 숫자를 사용할 수 있으며, 예를 들어 v.div(1, 2, 3)
, 다른 p5.Vector 객체를 사용할 수 있으며, 예를 들어 v.div(v2)
, 또는 숫자 배열을 사용할 수 있으며, 예를 들어 v.div([1, 2, 3])
와 같이 사용됩니다.
하나의 값만 제공되는 경우, 예를 들어 v.div(2)
와 같이, 모든 구성 요소는 2로 나눈 값으로 설정됩니다. 구성 요소에 대한 값이 제공되지 않으면 변경되지 않습니다. 예를 들어, v.div(4, 5)
는 v.x
를 4로 나누고, v.y
를 5로 나누며, v.z
는 1로 나눕니다. 인자 없이 div()
를 호출하는 것, 즉 v.div()
는 아무런 효과가 없습니다.
div()
의 정적 버전은 p5.Vector.div(v, 2)
와 같이 새로운 p5.Vector 객체를 반환하며 원본을 변경하지 않습니다.
벡터의 크기(길이)의 제곱을 계산합니다.
두 벡터의 내적을 계산합니다.
내적은 두 벡터 간의 겹침을 설명하는 숫자입니다. 시각적으로, 내적은 한 벡터가 다른 벡터에 던지는 "그림자"로 생각할 수 있습니다. 내적의 크기는 두 벡터가 같은 방향이나 반대 방향을 가리킬 때 가장 큽니다. 두 벡터가 직각을 이룰 때 그 크기는 0입니다.
하나의 매개변수를 가진 dot()
버전은 그것을 다른 p5.Vector 객체로 해석합니다.
여러 매개변수를 가진 dot()
버전은 그것들을 다른 벡터의 x
, y
, z
구성 요소로 해석합니다.
정적 버전의 dot()
, 즉 p5.Vector.dot(v1, v2)
는 v1.dot(v2)
를 호출하는 것과 동일합니다.
두 벡터의 외적을 계산합니다.
외적은 두 벡터로 생성된 평면에서 직접 나오는 벡터입니다. 외적의 크기는 원래 두 벡터로 형성된 평행사변형의 면적입니다.
정적 버전의 cross()
, 즉 p5.Vector.cross(v1, v2)
는 v1.cross(v2)
를 호출하는 것과 동일합니다.
벡터로 표현된 두 점 사이의 거리를 계산합니다.
점의 좌표는 원점에서 해당 점까지 확장되는 벡터의 구성 요소로 표현될 수 있습니다.
dist()
의 정적 버전인 p5.Vector.dist(v1, v2)
는 v1.dist(v2)
를 호출하는 것과 동일합니다.
좌표를 사용하여 점 사이의 거리를 계산하려면 dist(x1, y1, x2, y2)
처럼 dist()를 사용하세요.
벡터의 크기를 최대값으로 제한합니다.
limit()
의 정적 버전인 p5.Vector.limit(v, 5)
는 새로운 p5.Vector 객체를 반환하고 원본은 변경하지 않습니다.
벡터의 크기를 주어진 값으로 설정합니다.
setMag()
의 정적 버전인 p5.Vector.setMag(v, 10)
은 새로운 p5.Vector 객체를 반환하고 원본은 변경하지 않습니다.
2D 벡터가 양의 x축과 이루는 각도를 계산합니다.
관례에 따라, 양의 x축은 각도 0을 가집니다. 각도는 시계 방향으로 증가합니다.
벡터가 createVector()로 생성된 경우, heading()
은 현재 angleMode()의 단위로 각도를 반환합니다.
heading()
의 정적 버전인 p5.Vector.heading(v)
도 같은 방식으로 작동합니다.
2D 벡터를 특정 각도로 회전시키되 그 크기는 변경하지 않습니다.
관례에 따라, 양의 x축은 각도 0을 가집니다. 각도는 시계 방향으로 증가합니다.
벡터가 createVector()로 생성된 경우, setHeading()
은 현재 angleMode()의 단위를 사용합니다.
2D 벡터를 특정 각도만큼 회전시키되 그 크기는 변경하지 않습니다.
관례에 따라, 양의 x축은 각도 0을 가집니다. 각도는 시계 방향으로 증가합니다.
벡터가 createVector()로 생성된 경우, rotate()
는 현재 angleMode()의 단위를 사용합니다.
rotate()
의 정적 버전인 p5.Vector.rotate(v, PI)
는 새로운 p5.Vector 객체를 반환하고 원본은 변경하지 않습니다.
두 벡터 사이의 각도를 계산합니다.
반환되는 각도는 부호가 있어, v1.angleBetween(v2) === -v2.angleBetween(v1)
이 됩니다.
벡터가 createVector()로 생성된 경우, angleBetween()
은 현재 angleMode()의 단위로 각도를 반환합니다.
두 벡터 사이의 같은 비율로 새로운 x
, y
, 그리고 z
구성 요소를 계산합니다.
amt
매개변수는 이전 벡터와 새 벡터 사이를 보간하는 정도입니다. 0.0은 모든 구성 요소를 이전 벡터의 값과 동일하게 유지하고, 0.5는 그 사이의 중간 지점이며, 1.0은 모든 구성 요소를 새 벡터의 값과 동일하게 설정합니다.
lerp()
의 정적 버전인 p5.Vector.lerp(v0, v1, 0.5)
는 새로운 p5.Vector 객체를 반환하고 원본은 변경하지 않습니다.
두 벡터 사이의 새로운 방향과 크기를 계산합니다.
amt
매개변수는 이전 벡터와 새 벡터 사이를 보간하는 정도입니다. 0.0은 방향과 크기를 이전 벡터와 동일하게 유지하고, 0.5는 그 사이의 중간 값을 설정하며, 1.0은 방향과 크기를 새 벡터와 동일하게 설정합니다.
slerp()
는 lerp()와 다릅니다. 왜냐하면 그것은 크기를 보간하기 때문입니다. v0.slerp(v1, 0.5)
를 호출하면 v0
의 크기를 원래 크기와 v1
의 크기 사이의 중간 값으로 설정합니다. v0.lerp(v1, 0.5)
를 호출하면 그러한 보장은 없습니다.
slerp()
의 정적 버전인 p5.Vector.slerp(v0, v1, 0.5)
는 새로운 p5.Vector 객체를 반환하고 원본은 변경하지 않습니다.
2D에서는 선에 대해, 3D에서는 평면에 대해 벡터를 반사합니다.
선이나 평면의 방향은 모양에서 벗어나는 방향을 가리키는 정규 벡터에 의해 설명됩니다.
reflect()
의 정적 버전인 p5.Vector.reflect(v, n)
은 새로운 p5.Vector 객체를 반환하고 원본은 변경하지 않습니다.
벡터의 구성 요소를 숫자 배열로 반환합니다.
벡터의 모든 구성 요소가 다른 벡터의 구성 요소와 동일한지 확인합니다.
equals()
는 벡터의 모든 구성 요소가 다른 벡터의 구성 요소와 동일하면 true
를, 그렇지 않으면 false
를 반환합니다.
하나의 매개변수를 가진 equals()
버전은 그것을 다른 p5.Vector 객체로 해석합니다.
여러 매개변수를 가진 equals()
버전은 그것들을 다른 벡터의 구성 요소로 해석합니다. 누락된 매개변수는 값 0이 할당됩니다.
equals()
의 정적 버전인 p5.Vector.equals(v0, v1)
은 두 매개변수 모두를 p5.Vector 객체로 해석합니다.
각도에서 새로운 2D 벡터를 생성합니다.
ISO(국제표준화기구) 구면 각도 쌍에서 새로운 3D 벡터를 생성합니다.
임의의 방향을 가진 새로운 2D 단위 벡터를 생성합니다.
임의의 방향을 가진 새로운 3D 단위 벡터를 생성합니다.