본문 바로가기

카테고리 없음

Joyofvex2일차(length펑션내용,chf과chv에대해,후기)

Joy of VEX 2일차에서는 포인트의 위치를 이용해 거리를 계산하고, 그 값을 색상이나 반복 패턴으로 바꾸는 방법을 공부했다. 1일차가 @P, @Cd, @ptnum처럼 기본 속성을 읽고 사용하는 과정이었다면, 2일차부터는 함수와 채널을 함께 사용하면서 계산 구조가 조금 더 복잡해졌다. 특히 length() 안에 들어가는 @P가 정확히 무엇을 의미하는지, length()와 distance()는 어떤 차이가 있는지, 그리고 chf()와 chv()를 각각 언제 사용해야 하는지가 헷갈렸다. 하지만 코드를 한 줄씩 나누어 보고 파라미터의 자료형을 확인하니 역할이 조금씩 구분되기 시작했다. 이번 글에서는 Joy of VEX 2일차에서 배운 length() 함수의 내용과 거리 계산 방식, chf()와 chv()의 차이를 정리하고 직접 공부하면서 어려웠던 부분과 느낀 점을 함께 기록해 보려고 한다. Joy of VEX 2일차의 중심 내용은 length()와 distance()로 거리를 구하고, 채널과 @Time을 이용해 그 결과를 조절하거나 움직이는 것이다.

Joyofvexday2

1. [ length펑션내용 ]

length()는 벡터가 가진 길이를 숫자 하나로 계산해 주는 함수다. Joy of VEX 2일차에서는 length(@P)를 사용해 각 포인트가 원점에서 얼마나 떨어져 있는지를 구했다. 여기서 @P는 단순히 포인트 하나의 번호가 아니라 현재 포인트의 X, Y, Z 위치를 담고 있는 벡터다. 예를 들어 어떤 포인트의 위치가 {3,0,4}라면 length(@P)는 원점 {0,0,0}에서 그 위치까지의 직선거리를 계산해 5를 반환한다. 처음에는 length()가 포인트의 개수나 선의 길이를 구하는 함수처럼 느껴졌지만, 실제로는 괄호 안에 들어온 벡터 자체의 크기를 구하는 함수였다. 따라서 length(@P)는 항상 원점을 기준으로 거리를 계산하는 것처럼 사용할 수 있다. 이 거리값을 @Cd에 넣으면 원점에서 멀어질수록 색이 밝아지고, sin() 함수에 넣으면 원점을 중심으로 반복되는 원형 무늬를 만들 수 있다. 사인값은 -1에서 1 사이를 오가기 때문에 색상으로 사용할 때는 값을 0에서 1 범위로 바꾸는 과정도 필요했다. 또한 distance()는 두 위치를 직접 지정해 그 사이의 거리를 계산한다. length(@P)가 원점과 현재 포인트 사이의 거리라면, distance(@P,center)는 현재 포인트와 사용자가 정한 중심점 사이의 거리다. 두 함수가 비슷하게 보여 헷갈렸지만, 기준점이 자동으로 원점인지 아니면 두 위치를 직접 넣는지로 구분하니 이해하기 쉬웠다.

2. [ chf와 chv에 대해 ]

chf()와 chv()는 Wrangle 코드 안의 값을 파라미터로 꺼내 슬라이더처럼 조절할 수 있게 해 주는 함수다. 두 함수의 가장 큰 차이는 가져오는 값의 자료형이다. chf()는 소수점이 있는 숫자 하나인 float 값을 가져온다. 따라서 거리 패턴의 크기, 속도, 강도처럼 하나의 숫자로 조절할 수 있는 값에 사용하기 좋다. 예를 들어 거리값에 chf("scale")을 곱하면 Scale 파라미터 하나를 움직여 원형 패턴의 간격을 넓히거나 좁힐 수 있다. 반면 chv()는 X, Y, Z 세 개의 숫자를 가진 vector 값을 가져온다. 중심 위치를 이동하거나 축마다 다른 크기를 적용하고 싶을 때 사용한다. vector center=chv("center")라고 작성하면 Center 파라미터에 X, Y, Z 입력칸이 생기고, 이 값을 distance(@P,center)의 두 번째 위치로 사용할 수 있다. 처음에는 이름이 비슷해서 두 함수를 서로 바꾸어 써도 되는 것으로 생각했지만, float이 필요한 곳과 vector가 필요한 곳이 다르기 때문에 코드와 파라미터 형식이 맞아야 했다. chf()는 숫자 한 칸, chv()는 숫자 세 칸이라고 생각하면 비교적 쉽게 구분할 수 있었다. 같은 이름의 채널을 서로 다른 자료형으로 만들면 기존 파라미터가 제대로 갱신되지 않을 수 있으므로 채널 이름도 다르게 설정하는 편이 안전하다. 잘못 만들어졌다면 Spare Parameter를 삭제한 뒤 다시 생성해야 한다.

3. [ 후기 ]

Joy of VEX 2일차는 1일차보다 코드가 길어지고 함수가 여러 개 연결되면서 처음에는 어렵게 느껴졌다. 특히 length(@P)를 보았을 때 @P 전체를 넣는 이유가 이해되지 않았다. 나는 처음에 위치의 X나 Y 중 하나만 계산하는 것이라고 생각했지만, @P가 X, Y, Z를 모두 가진 벡터이고 length()가 그 벡터의 크기를 구한다는 사실을 알고 나니 원점 중심의 원형 패턴이 생기는 이유를 이해할 수 있었다. distance()도 처음에는 length()와 같은 함수처럼 보였지만, length()는 벡터 하나의 크기를 구하고 distance()는 두 위치 사이의 거리를 구한다는 차이가 있었다. chf()와 chv() 역시 이름이 비슷해 자주 헷갈렸다. 하지만 파라미터를 직접 생성해 보니 chf()는 값이 하나인 슬라이더이고 chv()는 X, Y, Z를 가진 세 칸짜리 파라미터라는 차이가 눈에 보였다. 이번 공부를 통해 VEX에서는 함수 이름만 외우는 것보다 함수가 어떤 자료형을 받고 어떤 자료형을 반환하는지 확인하는 것이 중요하다는 것을 느꼈다. 결과가 이상하게 나왔을 때도 무조건 코드를 다시 입력하기보다 현재 값이 float인지 vector인지 살펴보는 습관이 필요했다. 아직 거리와 벡터 개념이 완전히 익숙한 것은 아니지만, 원점을 기준으로 계산할 때는 length(), 기준점을 직접 정할 때는 distance(), 숫자 하나는 chf(), 위치나 방향처럼 세 값이 필요할 때는 chv()라고 정리하니 전보다 명확하게 구분할 수 있게 되었다.


Cgwiki Joyofvex day2