두 번째 코드에 별다른 문제는 없어 보이는데... 익셉션이 발생하는 것은 세 점 중에서 두 점이 같아질 때 생기는 문제로 보입니다. 그런 경우에 대한 처리는 따로 추가 하셔야 겠네요~~ ^^;;
원리를 간단하게 읊어보겠습니다. 도움이 되셨으면 좋겠네요...
공간상의 3점 p1(x1, y1, z1), p2(x2, y2, z2), p3(x3, y3, z3)가 있을 때, p2와 p1을 연결하는 벡터를 a로 하고, p2와 p3를 연결하는 벡터를 b로 하면 벡터 a, b의 성분은 다음과 같습니다.