自由曲面実現の歴史
すでに WWI とも APT とも関係ないのですが、APT 関連で調べた「ついで」に記事にまとめておきます。
3D-APT III を作ろうとして、ロスが悩んでいた「3Dの形状定義」のその後について。
現代の知識をもっていえば、ベジェ曲線、スプライン曲線、NURBS曲面の開発の歴史です。
ここまでのあらすじ(笑)
1958年に作られた APT というシステムは、数式で定義した形を実際に手に取れる物にする、今でいう 3Dプリンタのような機能を持っていました。
しかし、当時の技術では直線と円弧を組み合わせて図形を作るのが精いっぱい。システムとしては滑らかな曲面を作り出す性能を持っているのに、狙ったような曲線・曲面の「式」を求める方法がわからないのです。
とはいえ、直線と円弧だけでも当時としては画期的。システムは広く使われるようになります。
…曲面を作り出す方法は、世界中の数学者に向けて与えられた課題となったのです。
「スプライン」の数学的発見
最初に、APT のページに書いてあることを振り返りながら、必要なことを追記していきます。
まず、APT が使用する加工機、NCMM の原型となったアイディアは、パーソンズ社のパーソンズが出したものです。そのアイディアは、1942 年ごろに彼がやっていた仕事に由来していました。
1942 年ごろ、彼は航空機部品の作成のため、示されたいくつかのポイントをしなやかな板でつなぎ合わせて、滑らかな曲線を引いていました。この際に使用する製図用の板のことを、「スプライン(spline)」と呼びます。
この展示は製図用具の展示ではなく、ロータリーエンジンを実用化した「RX-7」の模型展示の背景として作られた、設計図面の装飾として接着されていたものである。(つまりは展示物ではなく、これがなにかの説明もなかった。)
装飾なので、透明のアクリルで作られているし、設計図面の「下」から光で照らされている。実物とは違うが、雰囲気はわかっていただけると思う。
板を使えば滑らかな曲線が描ける。…このことは経験則的に知られていました。同じように板を使っても、押さえる場所をずらすと得られる曲線が変わる。このことも経験則的に知られていました。
では、複数の「曲線」をつないで「曲面」にする際に、押さえるポイントをどのようにするのが最適でしょう? パーソンズはこの問題の解決は諦め、「試行錯誤で木を削る」という方法で解決しました。いわば、職人の勘の世界です。
第二次世界大戦は、航空機が主役の戦争でした。そのため、様々な航空機が設計され、生産されています。設計効率を上げるには、「職人の勘」を、だれでも使えるものにしなくてはなりません。
ポイントに固定されたしなやかな板…スプラインが、どのような曲線を作るのか。まずは、これを正しく理解する必要があります。
その第一歩となる論文が、アイザック・シェーンベルグ(Isaac Jacob Schoenberg)によって、1946年に書かれています。この論文では、スプラインの描く線が、数学的にはどのように定義されるか? について、短い考察を行っています。
A Chronology of Interpolationの引用から、孫引用。
元の論文: I. J. Schoenberg "Contributions to the Problem of Approximation of Equidistant Data by Analytic Functions", Quarterly of Applied Mathematics, vol. 4, nos. 1 & 2, 1946, pp. 45-99 & 112-141.
ここでは、k 個の固定点で描かれるスプライン曲線について、3つの「数学的定義」を掲げています。
1) k 個の点を通る曲線は、k-1 次の多項式で表される。
2) k-2 次までの導関数を持ち、これらの導関数はすべての点で連続(微分可能)である。
3) 固定点 k が偶数個のとき、一意な線が描ける。奇数個のときはさらに情報が必要。
ここでの考察はこれだけ。数学的な特徴は考察されましたが、同じような線を描くためのアルゴリズムが作られたわけではありません。
しかし、これが重要な第一歩でした。以降、このような線を「スプライン」と呼ぶことになります。
自由曲線
研究が本格化したのは、どうも 2D-APT II の完成後のようです。
ロスは 3D-APT III の作成に際し、自由に形状定義をする方法が思いつかない、と悩んでいますが、皮肉なことに彼の悩みを皆が受け継いでいく形になります。
スプラインの研究は、APT の主な利用企業である航空業界…ではなく、自動車業界で進みました。
先陣を切ったのは、フランスのシトロエン社です。1959年、同社で働いていた数学者の ポール・ド・カステリョ(Paul de Casteljau) が自由な曲線を作り出すアルゴリズムを開発しましたが、企業秘密として未公開でした。
ついで 1962年に、同じくフランスのルノー社のエンジニアである、ピエ-ル・ベジェ(Pierre Bézier)が、カステリョとほぼ同様の式にたどり着きます。もちろんこちらも企業秘密。
ほぼ同時期(正確な年代がわかりませんが、1960年代初期)に、米国ゼネラルモーターズのド・ボーア(De Boor)が B-スプライン(Basis-Spline)のアルゴリズムを開発します。やっぱりこれも企業秘密。こちらは、APT のページでも書いた CAD システム、DAC-1 に搭載されました。
B-スプラインにn個の点を与え、式を「解く」と、(n-1)次の曲線の式が得られます。
APT では数式によって定義される曲線を削り出す機能がありますので、DAC-1で設計したカーブをそのまま削り出せることになります。
ゼネラルモターズは、1965年に企業秘密を解除し、B-スプラインアルゴリズムを公表します。
ルノーも 1974年に企業秘密を解除し、ベジェのアルゴリズムを公表します。これによって描かれた線は「ベジェ曲線」と呼ばれるようになります。
(カステリョが先に開発していたわけですが、かわいそうに、名を残しているのはベジェの方です。もっとも、ベジェ曲線を描くアルゴリズムは「ド・カステリョのアルゴリズム」と呼ばれます。)
数学的には、ベジェ曲線はB-スプラインの一種です。
B-スプラインでは、式の一部である「基底関数(Basis function)」に関して自由ですが、通常は De Boor Coxの漸化式を使用します。
ベジェ曲線は基底関数がバーンスタイン多項式になっています。
(…だそうです。僕はこれ以上深追いしていないので、両者の厳密な違いは理解していません。)
先に書いたように、APT は曲線の定義として数式を受け付けるため、数式を作り出せばその形状を削れることになります。
数式を求めるのは数学の知識が必要ですが、その「意味」はそれほど難しくありません。
ベジェ曲線だけですが、「中学生でもわかるベジェ曲線」で、易しく解説されています。