Joy of Vex

Joy of Vex [Day12-3]

후디니하는 돌 2023. 2. 21. 19:24

Array와 Nearpoints

nearpoints(1,@P,4)  모든 포인트에 대해서 반경 4를 기준으로 가까운 점을 찾아줌 - 여러 개의 점을 반환할 수 있음

이는 array [ ] 로 표현되어야 한다.

가장 가까운 순서대로 [ ] 안에 쓰여짐

int pts[] = nearpoints(1, @P , 4 , 3); 처럼 4가지의 정보가 쓰여 있을 때 마지막 정보는 개수

가장 가까운 순서대로 3개의 점만 찾아달라는 뜻

 

v@K = {3,8,2} 에서 세번째 정보를 불러오고 싶을 때, @K.z 이런 식으로 표기하면 된다.

v@TWA = {2,7,3} 에서 첫 번째 정보를 이용할 때, @TWA[0] 이렇게도 표기할 수 있음

지오메트리 스프레드시트에 저런 식으로 표기되어 있음

 

vector array도 만들어줄 수 있음

float a = 42;
vector myvec = {a,2,3}; // will error
vector myvec = set(a,2,3); //ok
v@myvec = set(a,2,3); //ok

float myarray[] = {a,2,3,4,5}; // will error
float myarray[] = array(a,2,3,4,5); // ok
f[]@myarray = array(a,2,3,4,5); // ok

왼쪽의 K 값은 4가 나오고 오른쪽의 K값은 6이 나온다.

len function

array 정보의 개수를 나타내줌

 

 

이렇게 쓰면 nearpoint와 같은 결과가 나타나고

int pt = pts[1]이라고 하면, 두번째로 가까운 값의 결과가 아래처럼 나타나게 됨

첫번째와 두번째의 결과가 합쳐진다면 결과가 중첩되는 것처럼 보이게 만들 수 있다?

 

(두번째의 결과를 복붙하기 위해 변수선언을 처음에 몰아서 해서 예쁘게 써주기!)

중첩은 되는 것 같지만 중간중간 비어보이는 부분이 생겨나면서 경계가 생기게 됨

 

int pt = pts[0] 만 적었을 땐 0번 중첩된 결과

int pt = pts[1] 일 때는 1번 중첩된 결과

int pt = pts[2]는 두번, int pt = pts[3] 은 3번 중첩된 결과를 보여줌

 

2,3,4 에 대한 부분까지 추가적으로 적어주면 빈 부분이 좀 더 채워지게 됨

radius가 높아질수록 중첩이 많이 되고 숫자를 더 높여줘야함

 

파동에 적용시키기

중첩되는 형태로 만들기는 했지만 여전히 반복해서 써줘야 하는 것은 똑같다.

이걸 해결하는 건 아마 다음시간에..?