2bec9e36ebd518986abce8954f817164

ㅡㅡㅡㅡㅡ

def line_3d(x1,y1,z1,x2,y2,z2,t)

x3,y3,z3=x1+(x2-x1)*t, y1+(y2-y1)*t, z1+(z2-z1)*t

return x3,y3,z3

end

ㅡㅡㅡㅡㅡ



위의 함수가 xyz 좌표계에서 직선 위에서의 특정 점의 위치를 구하는 함수에요, ruby프로그래밍 언어로 작성한거에요


시작점과 도착점의 좌표를 넣고 t의 값을 0~1 범위로 넣으면 시작점에서 도착점까지 t의 비율만큼 나아간 위치가 출력되게 되요


t가 0이면 시작점의 좌표가 나오고, 1이면 도착점의 좌표가 나와요


2bef9e36ebd518986abce89547807d6988


ㅡㅡㅡㅡㅡ

def sq_3d(x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4,t1,t2)

x5,y5,z5 = line_3d(x1,y1,z1,x2,y2,z2,t1)

x6,y6,z6 = line_3d(x4,y4,z4,x3,y3,z3,t1)

x7,y7,z7 = line_3d(x5,y5,z5,x6,y6,z6,t2)

return x7,y7,z7

end

ㅡㅡㅡㅡㅡ


그리고 위의 함수는 xyz좌표계에서 정사각형 형태의 평면 위에서 특정 점의 위치를 구하는 함수에요, 앞의 직선에서의 함수를 확장한거에요


네개의 꼭짓점의 좌표를 넣고, t1과 t2에 각각 0~1 사이의 값을 넣으면 정사각형 평면 위의 특정 점의 위치를 구할수 있어요


함수의 작동방식은 우선 t1 값으로 앞의 직선에서의 함수를 활용해서 1점-2점, 4점-3점 사이에서 해당 비율만큼 나아간 두 점을 구해요,


그 다음 마찬가지로 앞의 직선 함수로 그렇게 구한 두 점 사이에서 t2의 비율만큼 나아간 지점의 위치를 구하면 최종적으로 정사각형 평면 위에서 특정 점의 위치를 구할수 있어요



2bee9e36ebd518986abce89547827669ab



ㅡㅡㅡㅡㅡ

def tri_3d(x1,y1,z1,x2,y2,z2,x3,y3,z3,t1,t2)

x4,y4,z4 = line_3d(x1,y1,z1,x2,y2,z2,t1)

x5,y5,z5 = line_3d(x3,y3,z3,x2,y2,z2,t1)

x6,y6,z6 = line_3d(x4,y4,z4,x5,y5,z5,t2)

return x6,y6,z6

end

ㅡㅡㅡㅡㅡ


위의 함수는 xyz좌표계에서 정삼각형 형태의 평면 위에서 특정 점의 위치를 구하는 함수에요, 정삼각형의 꼭짓점의 세 점의 좌표와 t1 t2에 0~1 사이의 값을 넣으면 되요


작동방식은 앞의 정사각형과 마찬가지로 1점-2점, 3점-2점에서 t1만큼 나아간 두 점의 위치를 구하고, 그렇게 구한 두 점 사이에서 t2만큼 나아간 점의 위치를 구하는거에요


그리고 그렇게하면 최종적으로 정삼각형 위의 특정 위치의 점의 좌표를 구할수 있어요