: 포인트 클래스에서 생성한 속성을 유지한 채로, 새로운 지점에 포인트를 추가하고, 그 둘을 선으로 잇고 싶어요.
답변 내용
이를 위해서는 먼저 새로운 포인트를 추가해야 합니다. 이를 위해서 addpoint 함수를 사용할 수 있습니다. 그러면 해당 함수를 사용하여 새로운 포인트를 추가하고, 추가한 포인트와 기존 포인트를 잇는 간단한 VEX 코드를 작성해 보겠습니다.
먼저 아래와 같이 새로운 포인트를 추가하는 VEX 코드를 작성합니다.
////
int new_pt = addpoint(0, {0, 0, 0});
////
이 코드는 addpoint 함수를 사용하여 새로운 포인트를 추가합니다. 0은 현재 SOP(표면 연산)의 컨텍스트를 나타내는 객체입니다. {0, 0, 0}은 새로운 포인트의 위치입니다. 이 코드를 실행하면 new_pt 변수에 새로운 포인트의 인덱스가 할당됩니다.
이제 새로운 포인트와 기존 포인트를 선으로 잇는 코드를 작성해 보겠습니다.
////
int pt_count = npoints(0);
vector new_pt_pos = point(0, new_pt, "P");
for (int i = 0; i < pt_count; i++) {
vector pt_pos = point(0, i, "P");
addprim(0, "polyline", new_pt, i);
setpointattrib(0, "new_attr", new_pt, pt_pos + new_pt_pos, "set");
}
////
위 코드는 먼저 npoints 함수를 사용하여 현재 객체의 포인트 수를 가져옵니다. 그리고 point 함수를 사용하여 새로운 포인트의 위치를 가져옵니다. 이제 for 루프를 사용하여 기존 포인트를 하나씩 가져와서 새로운 포인트와 선으로 연결합니다. addprim 함수를 사용하여 새로운 프리미티브(선)를 추가하고, setpointattrib 함수를 사용하여 새로운 포인트에 새로운 속성 값을 설정합니다.
위 코드에서 setpointattrib 함수는 "new_attr"라는 새로운 속성을 추가하고, 새로운 포인트에 pt_pos + new_pt_pos 값을 설정합니다. 이 값은 새로운 포인트와 해당 기존 포인트 간의 거리 벡터를 나타냅니다. 이러한 방식으로 new_attr라는 새로운 속성을 만들고 해당 속성을 사용하여 새로운 포인트와 기존 포인트 간의 거리를 계산할 수 있습니다.
이제 이 코드를 사용하여 원하는 결과를 얻을 수 있습니다. 코드를 적용한 후 결과를 확인해보세요!
....
후기 : 코드 에러가 보여서 수정을 요청하였는데, 제대로 못알아듣고 있음