비율을 이용한 점 이동
점 p1(0,0,0), 점 p2(10,0,0), 벡터(1,0,0)를 알고 있을 때, 점 p2를 점 p1까지의 거리의 80%에 해당하는 지점으로 이동해 보도록 하겠습니다.
그림은 아래와 같습니다.
그림상으로는 점p1, p2만 주어지면 벡터와 dist는 모두 구할 수 있겠네요. 벡터는 p2-p1, dist는 두 점 거리 계산식이나 벡터 내적으로 구할 수 있습니다. 벡터와 관련된 내용은 아래글 참고하세요.
2024.09.11 - [3D Algorithm] - 벡터 계산과 단위벡터
벡터와 거리가 구해졌으면, 거리의 80%에 해당하는 p2 위치는 다음식으로 구해집니다.
p2_trans = p2 + (0.8-1.0) * dist *dir
위 식이 이해가 안되신다면, 0.8이 아닌 1을 대입했을 때는 p2_trans가 p2로 나오게 되어 dist를 100% 유지하게 됩니다. 만약에 dist 20%를 더 증가해서 p2를 이동시키고 싶다 하면 0.8 대신에 1.2를 넣어서 계산하시면 됩니다. 이 내용은 내적과 연관이 있습니다. 관련글은 아래를 보시기 바랍니다.
2024.04.24 - [3D Algorithm] - 벡터 내적 외적 계산 공식과 결과 의미
위 식을 코드로 표현하면 아래와 같은 형태로 쓸 수 있습니다.
Point p1(0, 0, 0), pl(10, 0, 0), dir(1, 0, 0);
float dist = (p1-p2).length();
float ratio = 0.8
Point p2_trans = p2 + (ratio-1.0)*dist*dir;
비율을 이용한 점이동 다른 글도 있으니 참고하세요.
2024.02.20 - [3D Algorithm] - 비율(ratio)을 이용한 3차원 점 이동
2024.02.20 - [3D Algorithm] - 3차원 스케일(Scale)과 비율(Ratio)
'3D Algorithm' 카테고리의 다른 글
삼각메쉬 부피 계산(Triangle Mesh Volume Calculation) (0) | 2024.10.08 |
---|---|
세 점을 지나는 평면 방정식 계산(3점 평면) (0) | 2024.09.26 |
삼각함수 표와 계산 및 활용 (0) | 2024.09.23 |
특정 좌표 중심에서 3차원 점 회전 (0) | 2024.09.13 |
3차원 회전 (0) | 2024.09.13 |