아래와 같이 두 칼럼과 연결하는 빔이 있을때 두 칼럼간의 최소 거리를 구하는 방법입니다. 두 칼럼의 Origin Point로 거리를 구하게 되면 Cardinal Point에 따라 거리가 달라지게 됩니다. Cardinal Point에 대해서는 이전 글 을 참조하시면 됩니다. 그래서 여기서는 칼럼의 4개의 면을 이용하여 거리를 구하는 방법에 대해 생각해봅시다. 칼럼도 CableWay와 유사하게 8개의 코너 점을 가지고 있습니다. 이 코너 점을 이용하여 4개의 면을 만들 수 있습니다. $(P_0, P_1, P_5, P_4), (P_1, P_2, P_6, P_5), (P_2, P_3, P_7, P_6), (P_3, P_0, P_4, P_7)$ 이 점들로 각각 면들을 구성할 수 있습니다. 면의 방정식은 $ax+by+cz+d=0$입니다. $<a,b,c>$는 면의 법선 벡터로써 면에 존재하는 점들의 벡터 외적으로 구할 수 있습니다. 예를들어 첫번째 면의 법선 벡터는 $\overrightarrow{P_1-P_0}\times\overrightarrow{P_4-P_0}$입니다. 면들을 생성하였으면 빔의 라인과의 법선이 평행한 면들과의 교점 을 구할 수 있습니다. 라인과 법선의 평행 여부는 라인의 단위 벡터와 법선의 단위 벡터를 더하여 그 길이가 0 혹은 2에 근접하는지 여부로써 판별할 수 있습니다. 아마 위 예제에서는 2개의 평행한 면이 있어 2개의 교점을 구할 수 있습니다. S3D에서는 API를 통하여 평면과 곡선의 교점을 구할 수 있습니다. oColCurves1의 Position이 교점이 됩니다. 물론 S3D API를 이용하지 않고 직접 교점을 구할 수 있습니다. 이전 글 을 참조하시면 평면과 직선의 교점을 구할 수 있습니다. 반대편 칼럼에 대해서도 위와 같이 2개의 교점을 구합니다. 이렇게 구한 4개의 교점들에서 가장 짧은 거리를 구할 수 있습니다. 이 거리가 두 칼럼의 최소 거리가 됩니다. min_dist , line = None , ...