바이올린의 모델 디자인에 있어 클로소이드 곡선을 사용함에 따른 이점과 적용 방법에 대해 알아보고 자동화 프로그램을 위한 과정을 알아봅니다.
PDF로 보기
PDF판 다운로드
바이올린 몸체의 라인을 디자인하는 방법은 크게 세가지가 있다. 첫번째는, 다른 악기의 라인을 그대로 카피하는 것이며, 두번째는 다른 악기의 라인을 카피 한 후에 일부만 수정하는 것이다. 위의 두가지 방법은 편리함과 작업 속도면에서 월등히 우수하기에 현재 대부분의 바이올린 제작가들이 사용하고 있는 방법이기도 하다. 마지막 세번째는, 자신이 직접 디자인하는 것으로서 자신이 원하는 라인을 얻을 수 있고, 자신만의 고유한 모델이라는 점에서 의미가 있지만 이 방법은 어렵고 복잡하여 만족스런 결과물을 얻기까지 많은 노고가 필요하다.
악기에 대한 이해라는 관점에서 모델을 스스로 디자인해 보는 것은 대단히 중요하다. 다른 악기의 모델을 그대로 카피할 때는 알 수 없었던 여러가지 문제들을 스스로 디자인하는 과정에서 이해하게 되는 경우도 많으며, 또한 예전의 바이올린이 그러한 모습으로 디자인 될 수 밖에 없었던 이유를 알게 되는 경우도 많다.
개인적으로, 자신의 고유 모델이 없다는 것은 '제작가'보다는 '복사기'의 길을 걷는 것이라고 생각하고 있기에, 오롯이 자신만의 생각이 담긴, 처음부터 끝까지 스스로 디자인한 모델이 있어야 한다고 생각한다. 다른 악기의 라인을 살짝 수정한 경우도 자신의 고유 모델이라 말할 수 있겠지만 가능하다면 처음부터 끝까지 스스로 디자인해 보는 것이 더 좋을 것이다.
디자인 공부를 진행하며 기존의 방법들을 모두 시험해 보았으나 모두가 몇가지씩 문제점을 가지고 있어 실제 제작에 사용하기에는 많은 무리가 있었다. 공통적인 문제로는, 너무 복잡하여 어렵다는 것과, 디자인 완성 후에 일부분만 수정하는 것 역시 어렵다는 것이다. 그러나 가장 큰 문제라고 생각되는 것은 (수학적 표현으로) 곡선상에 불연속점이 존재한다는 것이다. 쉽게 말하자면 곡선이 매끄럽지 않다는 것이다. 추가적으로, 악기의 크기와 폭 등의 사이즈가 동일하다면 곡선에 더 이상의 변화를 줄 수 없다는 문제도 있다. 즉, 동일한 사이즈의 모델은 모두 모양이 동일할 수 밖에 없다. 이러한 문제들을 해결하기 위해서 나는 클로소이드 곡선을 이용한 자동화 프로그램 개발을 시도하였으나 몇가지 핵심 기술에 대한 한계로 약 10년을 진척없이 보내다가 이제야 자동화 프로그램을 완성할 수 있었다.
본 보고서에서는, 바이올린 모델 디자인을 위한 기존의 방법들에 대해 간단히 알아보고, 또 그 방법들의 문제점은 무엇인지 살펴본다. 그 후, 이와 같은 문제점을 해결하기 위해 사용할 클로소이드 곡선과 그것을 바이올린 디자인에 적용하는 방법에 대해 알아본다. 그리고 이러한 디자인 작업을 자동화하기 위한 프로그램에 대해 중요 사항들을 정리하기로 한다. 완성된 바이올린 디자인 자동화 프로그램은 사용자메뉴얼과 함께 차후에 별도로 포스팅 할 것이다.
1. 기존의 바이올린 디자인 방법들과 문제점
1.1. 기존의 디자인 방법들과 특징
현재 바이올린을 디자인하는 방법은 대략 5가지 정도가 알려져있다. 비교적 오래된 방법으로는 Sacconi, Navne, Pigoli의 방법이 있고, 최근에는 Francois Denis의 방법이 주목받고 있는 듯하다. Pigoli의 방법은 완화곡선을 사용한다는 점에서 개인적으로 추천하고 싶은 방법이기도 하며, Francois Denis의 방법은 몇 개의 파라미터를 바꿈으로써 여러가지 모델을 비교적 자유롭게 디자인 할 수 있다는 점과, 다른 방법들에 비해 좀 더 간단하다는 점에서 훌륭한 방법이라 말할 수 있다.
마지막으로 Sergei Muratov의 방법은, 클로소이드 곡선을 이용한다는 점에서 이 보고서의 내용과 그 토대를 함께하고 있으며, 위의 방법들 중에서 실제 악기 라인과 가장 유사한 방법이라고 생각한다. 그러나 자와 컴퍼스로는 작도가 불가능하고, CAD 프로그램을 사용하는 경우에는 뛰어난 프로그래밍 실력이 뒷받침되지 않는다면 실현이 어려운 방법이다.
1.2. 기존 디자인 방법들의 공통적 문제점
⃝ 복잡하고 어려운 디자인 과정
위의 5가지 디자인 방법 모두 자와 컴퍼스를 이용하여 손으로 직접 작도하는 경우와 CAD 프로그램을 이용하여 작도하는 경우 어느 쪽이든 쉬운 일이 아니다. 작도 과정이 복잡하여 교재를 보면서 하나하나 따라하기에도 벅찬 과정들이다.
⃝ 디자인 완성 후 부분 변경의 어려움
악기 디자인은 단 한번에 만족스러운 결과를 얻을 수가 없다. 완성된 디자인으로 처음 악기를 제작해 보면 디자인 일부를 조금 수정해야 하는 경우가 대부분일 것이다. 이렇듯, 완성된 디자인에서 일부만을 수정하고 싶은 경우에는 복잡한 작도 과정 때문에 그것은 새로 디자인하는 것과 거의 동등한 수준의 노력이 필요하게 된다.
⃝ 동일한 사이즈의 모델에서 라인 모양 변경의 어려움
예를 들어 C-bout 곡선의 경우, C-bout 의 가장 좁은 지점의 위치와 U/L-corner (U/L : Upper/Lower) 의 위치를 바꾸지 않고 C-bout 곡선을 여러가지 모양으로 변경하는 것은 불가능하다. 위의 5가지 방법 모두 이 지점들의 위치가 동일하고 관계된 다른 지점의 위치(또는 사이즈)가 동일하다면 C-bout 의 곡선은 단 하나의 곡선만 만들수 있기 때문이다.
⃝ 불연속점의 존재와 부자연스러운 곡선
실제 바이올린이 가지고 있는 곡선은 현실 세계의 곡선인데 반해 위의 방법들(클로소이드 곡선을 이용한 방법은 제외하고)에 의해 디자인된 곡선은 「이상 세계의 곡선」이라 할 수 있다. 즉 현실에는 존재하지 않는, 또는 존재할 수 없는 곡선이라는 뜻이다.
예를 들면, 위의 방법들은(클로소이드 곡선을 이용한 방법은 제외하고) 모두 공통적으로, 반지름 a 인 호를 작도하고, 그 호의 끝단에서 다시 반지름 b 인 호를 작도하고, 다시 그 끝단에서 반지름 c 인 호를 작도하는 방법으로 서로 다른 반지름의 호를 이어붙여서 악기 전체의 곡선을 완성하는 방식인데, 사실 현실 세계에는 이러한 곡선은 존재하지 않는다. 우리가 사는 현실 세계의 곡선은 절대로 어느 한 지점에서 반지름이 a 에서 b 로, 또는 b 에서 c 로 순간적으로 바뀌지 않는다는 것이다. 수학에서는 이러한 지점을 「불연속점」이라고 부르는데 우리가 사는 현실 세계의 곡선에는 이러한 불연속점이 있을 수 없다. 굳이 수학적 원리를 따지지 않더라도 곡선을 유심히 살펴보면 두개의 호가 이어지는 지점을 경계로 두개 호의 연결이 매끄럽지 않다는 것을 느낄 수 있을 것이다.
Figure 1 은 좌측에서부터 Sacconi, Pigoli, Denis의 방법으로 그린 C-bout 의 예이다. 붉은 색 동그라미 부분을 보면 그 부분에서 살짝 꺾인 듯한 느낌이 든다. 그것은 이곳에서 갑자기 원호의 반지름이 바뀌기 때문이며 이곳이 바로 불연속점이 존재하는 곳이다. 초록색 원에도 불연속점이 있지만 반지름이 비교적 크고 맞닿은 두 원호의 반지름 차이가 크지 않아서 이곳은 눈에 잘 띄지 않을 뿐이다.
Figure 1: C-bout 의 불연속점
⃝ 코너 부분의 과도한 곡률
4개의 코너는 끝이 뾰족하다. 이 뾰족한 정점의 위와 아래에 서로 다른 반지름을 가진 호를 맞대어 코너를 생성하게 되는데, 이 경우 두개의 원호를 사용하므로 그 끝단(코너의 정점)은 상당히 뾰족하며 그 정점에서 곧바로 곡선이 생성된다. 실제 코너 정점의 작업에서는 옆판을 둥글게 휘어서 붙여야하는데 옆판 자체의 두께 때문에 옆판 나무의 끝단은 디자인처럼 완전히 둥글게 만들어지지는 않는다. 따라서 실제 악기의 정점 끝단은 완전한 원호 모양이 아니라 아주 살짝 평평한 라인이 된다. 즉, 위의 5가지 방법 모두 코너 정점 부근 곡선의 곡률이 실제 악기에 비해 과도하다고 말할 수 있다.
이상으로 5가지 공통적인 문제점을 알아보았다. 개인적으로는 불연속점의 존재와 부자연스러운 곡선이 가장 큰 문제로 인식된다. 과정이 복잡하고 어렵다는 문제는 노력으로 해결할 수 있지만, 이것은 디자인 방법이 가진 근본적인 문제로서 노력으로 해결할 수 없기 때문이다.
1.3. 기존 디자인 방법들의 문제점을 해결하기 위한 방안
앞장의 문제점들은 아래의 방법으로 모두 해결 할 수 있다.
⃝ 복잡하고 어려운 디자인 과정, 디자인 완성 후 부분 변경의 어려움
이 두가지 문제점들은 디자인 자동화 프로그램이 있다면 해결될 것이다.
⃝ 불연속점의 존재와 부자연스러운 곡선
이것은 클로소이드 곡선을 적용함으로써 해결할 수 있을 것이다.
⃝ 동일한 사이즈의 모델에서 라인 모양 변경의 어려움, 코너 부분의 과도한 곡률
두 점을 연결하는 클로소이드 곡선은 시작점과 끝점에서의 곡선 방향이 같다면 기본적으로 단 하나의 클로소이드 곡선만 존재하므로 이 문제들은 단순한 클로소이드 곡선으로는 해결할 수 없다. 본 연구에서는 이 문제를 여러개의 클로소이드 곡선을 이어붙임(이하 「멀티클로소이드 곡선」)으로써 해결할 것이다.
즉, 기존의 문제점들은 멀티클로소이드 곡선을 적용한 자동화 프로그램이 존재한다면 모두 해결할 수 있다.
다음 장에서는, 이러한 클로소이드 곡선이 무엇인지 알아보고 어떻게 바이올린 디자인에 적용하는지에 대해서 알아보기로 한다.
2. 클로소이드 곡선을 이용한 디자인 방법
2.1. 클로소이드 곡선
사전적으로, 「클로소이드 곡선」이란 곡선 길이가 증가할수록 곡률이 커지는 곡선을 의미한다. 즉, 곡선의 곡률이 점점 커져서 갈수록 더 동그랗게 말려들어가는 모습의 곡선이다.
(Euler spiral, Cornu spiral 라고도 한다) - Figure 2 -
Figure 2: 클로소이드 곡선
이러한 클로소이드 곡선은 일정한 속도로 달리는 자동차의 핸들을 일정한 속도로 회전시켰을 때 자동차가 이동하는 궤적과 일치하기 때문에 주로 고속도로의 커브 구간에 완화 곡선으로 주로 사용된다. Figure 3 의 붉은 선이 클로소이드 곡선이다. 고속도로로 예를 들자면, 파란색의 직선 도로에서 녹색의 원형 도로로 들어가려할 때 클로소이드 곡선을 따라 점진적으로 회전 반경을 줄여나가는 것이다.
Figure 3: Clothoid curve on highway
수학에서는 아래의 식 (1), (2) 등으로 표현된다.
2.2. 바이올린 디자인에 클로소이드 곡선을 적용하기 위한 아이디어
클로소이드 곡선을 바이올린 디자인에 적용하는 기본적인 원리는 Sergei Muratov의 설명을 참고하면 좋을 것이다. Sergei Muratov는 「The Art of the Violin Design ( http://zhurnal.lib.ru/m/muratow_s_w/violin_design.shtml )」 에서 바이올린 본체 뿐만이 아니라 헤드와 스크롤 및 F-Hole까지 바이올린이 가지고 있는 거의 모든 곡선을 클로소이드 곡선을 이용하여 해석하고 있으며 개인적으로는 지금까지의 모든 해석 중에서 가장 실제에 가까운 해석법이라고 생각한다. Figure 4 ( http://zhurnal.lib.ru/m/muratow_s_w/violin_design.shtml 에서 발췌) 는 Sergei Muratov가 해석하는 바이올린 몸체에 대한 클로소이드 모형이다.
Figure 4: Sergei Muratov의 바이올린 디자인
Sergei Muratov 의 디자인 방법을 「해석법」이라고 적은 이유는, 어떤 디자인을 해석하는데에는 유리하지만 직접 디자인하는데에는 어려움이 많아 디자인 방법 보다는 해석 방법에 더 가깝다고 생각되기 때문이다. 예를 들어 그림의 지점 C 에서 지점 F1 으로 이어지는 곡선은, 지점 C에서 F1으로 향하는 하나의 클로소이드 곡선과, 지점 S 에서 지점 F1 을 지나는 클로소이드 곡선이 지점 C 와 지점 F1 의 중간 어디선가 만남으로써 U-bout 의 상단부 라인을 형성하게 된다. 그런데 문제는 그 두 클로소이드 곡선이 만나는 지점을 특정하기가 매우 어렵다는 것이다. 마찬가지로 U-bout 의 하단부 라인인 지점 F1 에서 지점 T 로 이어지는 곡선부는 S 에서 F1 으로 향하는 클로소이드 곡선과 F1 과 T 의 중간쯤에서 시작하여 T 로 향하는 클로소이드 곡선의 만남으로 이루어지는데 이 역시 그 두개의 클로소이드가 만나는 지점을 특정하기가 어렵다. 따라서 이러한 클로소이드 곡선을 이용하여 실제로 디자인하기 위해서는 무언가 별도의 아이디어가 필요하게 된다. 아래에서는 이 문제를 해결하기 위한 두가지 아이디어를 차례대로 살펴보기로 한다.
2.2.1. 제어점의 지정
위에서 살펴보았듯이 인접하는 두개의 클로소이드 곡선이 만나는 점의 위치를 정확히 아는 것은 바이올린 디자인에 있어 매우 중요하다. 사실 이것을 모른다면 아무것도 할 수 없다. 두 곡선이 만나는 지점을 「제어점」이라고 할 때, 제어점의 위치를 변경하면 악기의 길이 및 폭 등 악기의 사이즈와 모양을 바꿀 수 있어야한다.
Figure 5 는 제어점의 위치를 설명한다. 악기의 길이를 결정할 수 있도록 먼저 상하단 중앙에 하나씩 지정하고(점 A,Z), 악기의 폭을 결정할 수 있도록 U/L-bout 의 가장 넓은 지점에 하나씩 지정한다(점 U1, L1). 이 점 U1, L1 은 U/L-bout 의 폭 뿐만이 아니라 곡선 형태에도 영향을 미친다. 만약 U-bout 의 경우 U1 의 x 좌표는 그대로 두고 y 좌표만 위로 올린다면, 즉 점을 수직 위로 올린다면 U-bout 의 모양은 어깨가 더 살아있는 모양이되고, 반대로 내린다면 둥근 어깨를 가지게 될 것이다. (U1 의 위치를 바꾸지 않고 어깨를 살리거나 둥근 어깨로 만드는 등의 곡선 모양을 바꾸려면 곡률을 바꾸어도 된다)
Figure 5: 제어점의 지정
마찬가지로 C-bout 의 가장 좁은 지점에도 지정한다(점 M1). 다음은 위아래에 있는 코너 정점도 제어점으로 각각 지정한다(점 X1, Y1). 마지막으로 U/L-bout 의 가장 넓은 지점에서 코너로 향하는 곡선상에 그 곡선의 방향이 바뀌는 지점(Corner joint)을 제어점으로 정한다(점 P1, Q1). 이 제어점은 xy 좌표로 볼 때 코너 정점의 x좌표와 동일한 x 좌표를 가진다. 즉, 코너 정점에서 세로로 수선을 그었을때 곡선과 만나는 지점이 된다. 이렇게 설정된 제어점을 클로소이드 곡선으로 연결하면 되는 것이다.
2.2.2. 멀티클로소이드 곡선의 적용
위에서는 제어점의 위치를 지정하였다. 그렇다면 이러한 제어점을 모두 클로소이드 곡선으로 연결하면 바이올린의 모습이 그려져야 할 것이다. 그러나 현실은 그렇지 않다. 어떤 두 점을 클로소이드 곡선으로 연결할 때, 각 점에서의 곡선의 방향이 동일하다면 그 두 점을 연결하는 클로소이드 곡선은 단 1개만 존재하기 때문이다.
예를 들어 Figure 6 의 (a)와 같이 점 A와 점 B를 연결하는 클로소이드 곡선이 있다. 이 곡선은 A에서 서쪽방향으로 출발해서 B에 도착할 때에는 남쪽방향을 향한다. A와 B의 위치가 변하지 않는다고 할 때, A에서 또는 B에서의 방향(각도)를 바꾼다면 무수히 많은 수의 클로소이드 곡선(Figure 6 의 (b))을 그릴 수 있다.
(a) 하나의 클로소이드 곡선
(b) 다른 각도의 클로소이드 곡선들
Figure 6: 점 A에서 B를 연결하는 클로소이드 곡선들
그러나 안타깝게도 바이올린 디자인에 있어서는 위에서 정한 제어점의 일부는 고정된 단 하나의 방향(각도)만이 허용되며 일부는 아주 좁은 범위의 각도 변화만 허용되므로 올바른 바이올린의 모습을 기대할 수 없다.
이 문제에 있어서 나는 두 제어점 사이에 여러개의 클로소이드 곡선을 사용하는 것으로 문제를 해결할 것이다. 자세히 말하자면, 두 제어점을 3개의 클로소이드 곡선을 이어붙여서 연결하는 것이다. 이렇게 하면 점 A 와 B 에서의 각도를 그대로 유지한채 여러 모양의 곡선을 만들어낼 수 있게 된다. Figure 7 은 점 A 와 B 를 3개의 클로소이드 곡선을 이어붙여서 연결한 것이다. (3개의 클로소이드를 각각 다른 색으로 표현하였다.)
Figure 7: 3개의 클로소이드가 연결된 곡선
클로소이드 곡선의 연결은, 수학적으로 「G2 에르미트 보간법(G2 Hermite interpolation)」이라는 기술을 이용하여 완성하게 된다. (수학적 내용에 관심있으신 분들은 참고문헌을 확인)
Figure 8 은 「G2 에르미트 보간법」을 적용한 3개의 클로소이드 곡선(본 보고서에서는 간단히 「멀티클로소이드 곡선」이라고 부르기로 한다)을 이용하여 점 A, B에서 방향(각도)을 바꾸지 않고 여러가지 모양의 곡선을 그린 것이다.
Figure 8: 점 A 에서 B 를 연결하는 방향이 같은 멀티클로소이드 곡선들
이처럼 바이올린 디자인에 있어서 모든 제어점의 사이에 멀티클로소이드 곡선을 사용하면, 불연속점이 없이 수학적으로, 또 미학적으로도 아름다운, 아주 부드러운 라인을 만들수 있게 된다. 또한 제어점의 위치를 변경하지 않고 곡선의 모양을 바꾸는 것도 가능해진다.
3. 멀티클로소이드 곡선을 이용한 바이올린 디자인 자동화 프로세스
바이올린 디자인을 위한 자동화 프로그램의 제작에 있어서 가장 중요한 key는 '「G2 에르미트 보간법」을 적용한 3개의 클로소이드 곡선을 프로그램 상에서 어떻게 구현할 것인가' 라는 문제이다. 다행히도 이것은 「pyclothoids」라는 훌륭한 모듈이 있어서 어렵지 않게 처리할 수 있게 되었다.
바이올린 모델은 좌우가 대칭이므로 좌우 어느 쪽이든 한쪽만 작도하면 반대쪽은 대칭 복사하여 쉽게 완성할 수 있다. 나는 바이올린의 좌측 라인만 작성하고 오른쪽은 대칭 복사하여 완성할 것이다. 프로그램에서 선을 표시하기 위해서는 좌표가 필요하므로 바이올린 Form의 최하단 정중앙 지점을 좌표 (x,y)=(0,0) 으로 정하고, Form 최상단 정중앙 지점부터 아래로 내려오면서 순서대로 곡선을 그릴 것이다.
아래에서는 실제로 프로그램 상에서 어떻게 바이올린 Form 디자인을 완성하는지 살펴본다. 프로그램 언어로는 「python3」을 사용하였고, 위의 pyclothoids 모듈을 필요로한다.(코드는 핵심만 표기)
3.1. 제어점의 지정
앞장에서 언급하였듯이 제어점의 위치에 따라 악기의 사이즈와 모양이 결정된다. 따라서 미리 자신이 원하는 악기의 사이즈를 정해 두어야 한다. 정한 악기의 사이즈를 토대로 제어점의 xy 좌표를 입력한다.
먼저, 악기 사이즈는 Table 1 과 같이 설정하였다. 그리고 그에 대응하는 좌표를 입력한다. 참고로 몸체 길이가 355mm 인 바이올린이라면 옆판의 두께와 엣지폭 등을 감안하여 실제 Form 의 길이와 폭을 입력해야한다. 나는 옆판의 두께를 1.2mm, 옆판에서 밖으로 튀어나온 부분의 폭을 2.8mm 로 가정하여 Form의 총장은 347mm ( = 355 - 2 * ( 1.2 + 2.8 )) 로 설정하였다. 좌표 설정시에는, U-bout 의 제어점인 U1의 경우 x좌표는 U-bout 폭의 절반이고 부호는 -가 된다는 점에 주의해야 한다. 아래의 글상자는 프로그램 코드이다.
Table 1: 악기 사이즈의 결정
Ax = 0
Ay = 347
U1x = -160/2
U1y = 281.1
P1x = -148.6/2
P1y = 251.7
...
3.2. 클로소이드 곡선의 작성
곡선은 항상 위쪽에 있는 점에서 출발하여 아래쪽에 있는 점에서 끝나는 것을 원칙으로 한다. pyclothoids 모듈에서, 3개의 연결된 클로소이드 곡선을 그리는 함수는 두개 점의 좌표와 각 점에서의 방향(각도)과 곡률을 필요로 한다. 곡률은 일단 모두 '0' 을 입력하고 차후에 조금씩 값을 바꿔가면서 수정하기로 한다.
점의 좌표는 앞장에서 설정한 점의 좌표를 입력한다. 곡선의 방향은 동쪽을 '0' 도로 정하고 서쪽은 180도(또는 -180도), 북쪽은 90도, 남쪽은 -90도로 정의한다. 곡률은 클로소이드 곡선이 휘어진 정도를 나타내는 파라미터로서 곡률이 크면 곡선이 더 많이 휘게 된다. 방향과 곡률을 바꿈으로써 다양한 모양의 곡선을 그릴 수 있다. 곡률 설정에 있어서 주의할 점은 곡률의 부호이다. 곡률의 부호가 '+' 라면 곡선은 시계반대방향으로 휘어지게 되고, 부호가 '-' 라면 곡선은 시계방향으로 휘어지게 된다.
A 와 U1 을 잇는 곡선의 경우, 점 A 에서는 서쪽을 향하여 출발하므로 각도는 180도(또는 -180도)가 되며 도착점인 U1 에서는 남쪽을 향하여 왔으므로 -90도가 된다(U1에서 곡선을 바라보는 각도(+90)가 아니다).
Form 의 좌측에는 총 8개의 구간이 있으며 각 구간에는 3개 씩의 클로소이드 곡선이 들어간다. 그래프에는 각각의 클로소이드 곡선이 다른 색으로 표시될 것이다. 초기값은 대략적인 값을 입력하고 그래프를 직접 확인 한 후 조금씩 수정하여 완성하는 방법으로 진행할 것이다.
⃝ 제 1 구간 : A ~ U1
시작점인 A 점에서의 방향은 180도, 끝점인 U1 에서의 방향은 -90도 이다. 이 두개의 값은 고정이다. 점 A 에서 곡선은 수평이어야 하므로 반드시 180 도 이어야 하며, 점 U1 은 U-bout 의 가장 넓은 지점이므로 이 점에서 곡선은 정확히 수직이어야 하므로 반드시 -90도 이어야 한다. 곡률은 일단 모두 '0' 로 둔다.(나머지 구간도 동일)
clothoid_1 = pc.SolveG2(Ax, Ay, pi, 0, U1x, U1y, -pi/2, 0)
for i in clothoid_1:
plt.plot( *i.SampleXY(500) )
⃝ 제 2 구간 : U1 ~ P1
제 2 구간의 시작점에서의 방향은 제 1 구간의 끝점에서의 방향과 동일해야 한다. 즉, U1 에서는 두개의 클로소이드 곡선이 만나는데 그 두개의 곡선의 방향은 당연히 같아야 한다. 그렇지 않다면 이 점에서 곡선이 꺾이게 된다. 따라서 U1 의 방향은 반드시 -90도가 되어야 한다. 점 P1 에서는 대략 남남동 방향을 향하고 있으므로 일단 -70도 정도로 입력한다.
clothoid_2 = pc.SolveG2(U1x, U1y, -pi/2, 0, P1x, P1y, -70*pi/180, 0)
for i in clothoid_2:
plt.plot( *i.SampleXY(500) )
⃝ 제 3 구간 : P1 ~ X1
제 3 구간의 시작점에서의 방향은 제 2 구간의 끝점에서의 방향과 동일해야 한다.따라서 위와 같이 -70도로 입력한다. 끝점인 X1 에서는 대략 남남서 방향을 향하므로 -110도를 입력한다.(이하 코드 생략)
⃝ 제 4 구간 : X1 ~ M1
제 4 구간의 시작점은 코너 정점이므로 제 3 구간의 끝점과 방향을 공유하지 않는다. X1 에서는 대략 동동북의 방향을 향하여 출발하므로 각도는 약 10도 정도로 설정한다. 끝점인 M1 은 C-bout의 가장 좁은 지점이므로 이 곳에서는 반드시 수직이어야 한다. 따라서 각도는 -90도 이다.
⃝ 제 5 구간 : M1 ~ Y1
제 5 구간의 시작점은 제 4 구간의 끝점과 방향이 같아야 한다. 따라서 -90도를 입력한다. 끝점에서는 서서북의 방향을 향하므로 170도로 입력해보자.
⃝ 제 6 구간.: Y1 ~ Q1
제 6구간의 시작점은 제 5 구간 끝점과 방향을 공유하지 않는다. 남남동을 향하고 있으므로 -70도로 입력하고 끝점은 남남서를 향하므로 -110도로 입력하자.
⃝ 제 7 구간 : Q1 ~ L1
제 7 구간의 시작점은 제 6 구간의 끝점과 방향이 같아야 한다. 따라서 -110도를 입력한다. 끝점에서는 수직이어야 하므로 -90도를 입력한다.
⃝ 제 8 구간 : L1 ~ Z
제 8 구간의 시작점은 제 7 구간의 끝점과 방향이 같아야 한다. 따라서 -90도를 입력한다. 끝점에서는 완전한 수평이어야 하며 동쪽을 향하므로 0도를 입력한다.
이상으로 입력을 마치고 그래프로 확인하면 Figure 9 와 같은 모습을 볼 수 있다.
Figure 9: 결과 그래프
안타깝게도 아직은 바이올린이라고 말할 수 없는 모양이다. 다음 장에서는 각도와 곡률을 조금씩 변화시켜서 좀 더 바이올린에 가까운 모양으로 만들어본다.
3.3. 곡선의 수정
의도하는 라인을 얻기 위해서는, 두 점에서의 방향과 곡률이라는 총 4개의 파라미터에 따라 곡선이 어떻게 변화하는지에 대해서 정확히 이해하고 있어야 한다. 특히 본 보고서는 「양 끝점이 고정되어있는 멀티클로소이드 곡선」을 대상으로 하고 있으므로 한쪽 끝점만 고정되어있는 단일 클로소이드 곡선과는 변화 양상이 다르다는 것을 알아야 한다.
3.3.1. 방향(각도)에 따른 곡선의 변화
시작점의 각도에 관해서는 혼동할 것이 없으나 끝점에서의 각도는 주의해야 한다. 먼저 Figure 10 과 같은 곡선을 그리고자 하는 경우에 시작점 A 에서의 방향은 남쪽을 향하고 있으므로 각도는 -90도일 것이다. 하지만 끝점 B에서의 각도는 얼마일까? 끝점에서 볼 때 곡선이 남동쪽에 있으므로 약 -45도 인가?
그렇지 않다. 항상 곡선의 진행 방향을 기준으로 해야 한다. 곡선은 시작점 A 에서 남쪽을 향해서 오다가 점점 서쪽방향으로 바뀌고 끝점 B 에서는 북서 방향을 향한 상태에서 멈추게 된다. 따라서 끝점에서의 방향은 북서 방향이 된다. 즉, 끝점 B에서의 각도는 135도이다.
Figure 10: 끝점에서의 각도
3.3.2. 곡률 부호에 따른 곡선의 변화
앞서 언급한 바와 같이 곡률이 '+' 값이라면 곡선은 시계 반대 방향으로 휘어지며, '-' 값이라면 시계 방향으로 휘어진다. Figure 11 은 동일한 곡선을 시작점인 A 점에서의 곡률만 변화시킨 것이다. 시작점과 끝점이 고정되어있는 상태에서 시작점의 곡률 부호만 다르므로 시작점 A 를 출발한 직후에 하나는 시계 방향으로 휘고 또하나는 시계 반대 방향으로 휘어 있다.
Figure 11: 곡률 부호에 따른 곡선 방향의 변화, A의 곡률 = -0.2(왼쪽), 0(가운데), +0.2(오른쪽)
3.3.3. 곡률의 크기에 따른 곡선의 변화
곡률의 「절대값」이 작으면(최소값=0) 곡선은 서서히 말려들어가고, 곡률의 절대값이 크면 급격하게 말려들어가게 된다. Figure 12 는 시작점 A 의 곡률은 동일하고 끝점 B 에서의 곡률을 다르게 한 것이다. 곡률 0.4 인 왼쪽 곡선은 끝점 B 부근에서 크게 휘어있다. 여기서 주의할 점은, 곡률의 절대값이 커지면 클로소이드 곡선의 길이가 짧아진다는 것이다(왼쪽 곡선의 붉은 색 선). 이것은 특히 코너 정점 부근 디자인에 큰 영향을 미치게 되므로 확실하게 기억해야 한다.
Figure 12: B의 곡률 = 0.4(왼쪽), 0(오른쪽)
만약 곡률의 절대값 크기가 '1'보다 크면 그 점에 인접하는 클로소이드 곡선은 아주 짧아져서 3개의 클로소이드가 아닌 2개의 클로소이드 곡선처럼 보이게 된다. Figure 13 을 보면, (a) 의 C-bout 상단 곡선에 3개(녹색,하늘색,보라색)의 클로소이드 곡선이 있지만 (b) 에는 정점에 접하는 녹색 곡선이 거의 보이지 않는다. 그러나 실제로는 여전히 3개의 클로소이드 곡선이 존재한다. (c) 는 (b) 의 정점 부근을 확대한 것으로 녹색 곡선의 길이가 약 0.6mm 정도로 줄어든 것을 알 수 있다. 따라서 만약 3개가 아닌 2개의 클로소이드 곡선만으로 디자인하고 싶다면, 이론적으로는 시작점 또는 끝점의 곡률을 무한대로 키우면 가능할 것이다. 본 프로그램의 경우 곡률을 대략 10 보다 크게하면 해당 클로소이드 곡선은 눈에 잘 띄이지 않을 정도로 짧아지게 된다.
(a) 곡률 = −0.07
(b) 곡률 = −1
(c) 이미지(b)의 확대
Figure 13: 곡률의 크기에 따른 곡선의 변화
위와 같은 성질을 이용하여 코너 디자인시 정점 부근은 살짝 평평하게 할수도 있고 둥글게 할 수도 있다. Figure 14 에서는 C-bout 상단 곡선의 정점의 곡률을 바꿈으로써 정점 부근의 곡선(녹색)이 어떻게 바뀌는지 보여준다.
(a) 곡률 = 0
(b) 곡률 = −0.1
Figure 14: 코너 정점의 곡선 변형
3.3.4. 곡률 크기가 방향(각도)에 미치는 영향
Figure 13을 다시 보자. (a) 와 (b) 는 C-bout 상단 곡선의 각도가 동일하고 곡률만 다르게 한 것이다. 그러나 동일한 각도를 입력하였음에도 불구하고 눈으로 보기에 둘의 각도가 다르다. 그러나 (b) 를 확대해서 보면 시작점의 각도가 동일하다는 것을 알 수 있다. 즉, 곡률 크기를 키울 수록 곡선은 많이 휘고 또한 짧아지므로 거시적으로 볼 때에는 각도가 변한 것 처럼 보이는 것이다. 이 현상은 위에서 설명한 코너 정점 부근 디자인시 곡률을 키우는 경우에는 그것을 감안하여 각도도 바꾸어주어야 한다는 것을 의미한다.
4. 디자인 결과와 부분 수정
Figure 15 는 Table 2 의 값을 사용하여 작성한 바이올린 Form 디자인의 완성된 모습이다.
Table 2: 파라미터
Figure 15: 완성된 디자인
아주 아름다운 라인의 Form 이 완성되었다. 각도와 곡률의 수정만으로 훌륭한 라인을 얻을 수 있게 되었다.
이제는 앞장에서 말한 부분 수정을 실시해보자. 다른 부분은 그대로 두고 C-bout 의 폭만 좌우로 각각 2mm 씩 넓혀보도록 한다. 이 경우에는 C-bout 의 가장 좁은 위치를 가리키는 제어점(M1)을 2mm 넓혀주면 된다. 즉, M1 의 좌표를 왼쪽으로 2 만큼 옮겨주기만 하면 된다. 그 결과, 수정된 디자인은 좌우로 총 4mm 가 넓어지게 된다. - Figure 16 -
Figure 16: C-bout 을 확장한 모습
C-bout 을 넓히기 전과 넓힌 후의 결과를 비교해보자. Figure 17 에서 알 수 있듯이 다른 부위는 전혀 바뀐 것이 없고 C-bout 의 폭만 넓어졌다. 그리고 그에 맞게 C-bout 의 곡선이 부드럽게 변경된 것을 알 수 있다.
Figure 17: C-bout 확장 전 후 비교
한발 더 나아가, 이번에는 어깨와 엉덩이 부위를 살려서 조금 각지게 만들어 보자. Figure 18 은 A와 Z 지점의 곡률을 '0' 으로 하고, U1 과 L1 지점의 곡률을 조금만 낮춘것이다.
Figure 18: 어깨와 엉덩이를 수정한 모델
어깨와 엉덩이를 수정한 모습과 수정 전의 모습을 비교해보자. - Figure 19 -
Figure 19: 어깨와 엉덩이의 수정 전 후 비교
마지막으로 최초의 모습과 C-bout 과 어깨, 엉덩이를 모두 수정한 후의 모습을 비교해 보자.
- Figure 20 -
Figure 20: 초기 모습과 최종 모습의 비교
5. 결론 및 고찰
지금까지, 기존의 디자인 방법들이 가진 문제점을 살펴보고, G2 에르미트 보간법을 적용한 연속된 3개의 클로소이드 곡선으로 각 제어점을 연결함으로써 바이올린의 Form 디자인을 완성할 수 있고, 또한 부분 수정도 아주 쉽게 실시할 수 있음을 증명하였다. 이 방법은 바이올린 뿐만 아니라 비올라와 첼로의 디자인에도 숫자만 바꿔줌으로써 동일하게 적용할 수 있다.
완성된 프로그램(Figure 21)과 사용설명서는 본인의 홈페이지 ( http://www.hisviolins.com ) 에서 무료로 다운로드 받을 수 있다.
Figure 21: Violin Designer, v.2.3.0
참고문헌
[1] E. Bertolazzi and M. Frego, “On the g2 hermite interpolation problem with clothoids.”,
Journal of Computational and Applied Mathematics, no. 341, pp. 99–116, 2018.
コメント