TDCC LABORATORY
TDCC 研究室

このページに関連する卵形曲線のリンク
       伊藤忠夫氏による卵形曲線の方程式
       浅井康之氏による卵形曲線の方程式
       浅井康之氏の新たな3種の卵形曲線
       卵形の曲線を表す方程式 Ⅴ
       卵形の曲線を表す方程式 VI
       浅井康之氏の卵形曲線の方程式(その3)
                            

   HOME ENGLISH                                         

卵形曲線を表す方程式を見つけた

山本 信雄

本ページの図形は、図2b 以外はすべて自由にコピーして自由にご使用できます。
図2b だけは私の発案ではありませんのであしからず。)


   「卵形線」の数学的な定義は Ikuro 氏のサイト 「デルトイドの幾何学(その9)」、 および、数学独学塾塾長 浅井康之氏のサイト 「塾長(校長)室」 の冒頭に書かれていますが、 ここでは、現実の鶏卵けいらんに近い形を与える曲線の方程式を追求し、 その曲線を暫定ざんてい的に「卵形曲線」と呼ぶことにします。
    卵形曲線についてインターネットを検索しますと、 Egg Curves カッシーニの卵形曲線、 (同左) が見つかりました。 しかし、これらには現実の卵形に近い曲線の方程式がないようです。
    そこで本ページでは、現実の卵形に最も近い曲線の方程式を見つけようと試みるもので、 以前、山本が 茨城高専図書館だより63号(2006年)にせました短著 を、1ケ所のミスを修正するとともに内容を再構成して紹介します。
    なお、卵形曲線の数値計算結果の表作成などに 「HTMLタグ」というサイトを参考にしました。 有難うございます。


1.   卵形の曲線を表す方程式の基礎的導出 2.   3次元空間における卵形の体積 3.   を媒介変数として卵形曲線の方程式を表示すること
4.   基礎図形を円に代えて楕円とする場合 5.   定数 a と b が定義域を外れた場合 6.   卵形曲線からの一般的拡張・・・梨形曲線まで
7.   前節の高次化(その1) ・・・前節の圧縮図形 8.   前節の高次化(その2)


1.   卵形の曲線を表す方程式の基礎的導出


図1 卵形曲線を描くP点の説明



図2 卵形曲線a=4 のとき)

    卵の形は物理化学の要素を含む生理科学的な問題や進化論的淘汰の問題などが考えられますが,いわゆる卵形曲線はどのような方程式で表され得るのでしょうか。 この曲線の方程式は余りお目にかかりません。それは数学的普遍性がないからだと思います。

    そこで,科学的な理屈を問わないで,視覚的に卵形になる曲線で簡単な式で表されるものを探ってみました。 最も簡単な考え方は,図1に示すように, 軸上にある点Q から伸びる線分PQがあって,その角度 に応じて, 点Q が 軸上を余弦関数的に
       ,                       (1)
のように変わると同時に,線分の長さ も余弦関数的に
       ,            (2)
のように変わるときに,線分の先端P の軌跡が卵形になるものを見つけようというものです。ただし,
       .                             (3)
    図1より,P点座標はつぎのようになります。
       ,             (4)
       ,                       (5)

    以上を解くことは意外に大変なので,
       ,                                (6)
と限定して(1)式から(6)式を解くと,
       ,      (7)
のような4次式になります。


b=a


b=0.8a


b=0.7a


b=0.6a


    式の表示を簡単にするために, 方向にだけ平行移動させ,
       ,    ,               (8)
のような定数 , を導入すると,

       ,          (9)
ただし,.
    (9)式を通常の2次方程式の解法を使って解くと、

       .          (9b)
これはコンピュータで計算させるときに用います。

    を導入すると,さらに式が簡単になり,

       ,          (10)

という卵形曲線らしき方程式が得られます。簡素で美しい形をしています。

    (10)式を標準とするのがよいのですが,当初,(9)式を中心に考えてきましたので、 以下の記述も (9)式を基にして議論を進めていきます

    の場合につき, の値をいろいろ変えて (9)式をコンピュータで計算させてグラフに表すと,図2のようになります。 のときは円になります。 の値が増すにつれ卵形になり, のときに実際の卵と比較するとそっくりです。 このときの卵形曲線を現実の卵と比べたものが図2aです。

    以上、現実の卵の生成過程が、図1、および、(1)~(6)式で表わされる、ということを示唆しているのかもしれません。

    なお,図2中, のときのみ x=0 で尖っていますが,それ以外は尖ることはありません。 このことは, のとき以外では、 x=0 に於ける傾斜が (dy/dx)x=0 =∞ であることを簡単に確かめることができるからです。

    2011年3月に永島 明 氏が 図2を分かりやすく動画として表示なされました。 感謝いたします。それを図2bに示します。

(クリックすると拡大します)
卵形曲線の動画
図2a  のときの卵形曲線
(ピンク色のカーブ)と現実の卵の形との比較
図2b 永島 明 氏提供の卵形曲線の動画


    (9)式を数値計算して図2の卵形曲線群を得るための C++ プログラムはこちら 卵型曲線群の計算プログラムです。 画面表示のプログラムをマウスでドラッグしてコピーを取ると,自由にご利用できます。
    また,=4, =3.2 の場合の 1個の卵形曲線を得るための C++ プログラムはこちら 1個の卵型曲線の計算プログラムです。 このプログラムで,の制限のもと,定数 , の数値を変えることにより卵形の形を変えることができます。
    次に, C++ システム・ファイル上の「ファイル」の中の 「新規作成」をクリックすると,編集画面が現れますが, この画面に上記コピーしたプログラムを貼り付けます。場合によっては編集も行います。そして, 「ビルド」をクリックすると実行ファイルが作成されます。 さらに,「実行」をクリックすることにより,上記どちらのプログラムでも, 「egg_shaped_curve.txt」という名のテキストファイルが作られて, 計算されたデータ(卵形曲線上の各 x-y 座標点の座標データ)が格納されます。
    次に,このテキストファイルに格納されたデータをエクセルファイルに移し変えます。それには,エクセルファイルの 「外部データの取り込み」機能で行います。 ただし,ここに紹介した計算プログラムの場合,テキストファイルに保存される データ間の仕切りはカンマ()で指定してありますので, 「外部データの取り込み」にはこれを選択します。
    最後に,エクセルファイルに移された各列の x-y 座標データ全てをドラッグした後に,エクセルファイルにある 「グラフ ウィザード」をクリックして, その中の「散布図」を選び,スムーズなカーブになる絵図をクリックすると卵形曲線が描かれます。
    こうして得られた卵形曲線を,描画システム・ファイル(例えば,「ペイント」システム)の編集画面にコピーして, 色々な画像の縁を卵形に切り取るためのトリミング用として編集しますと こちら 卵形マスクのようになります。 これもご自由にお使いください。

(9)式を一寸書きかえると
       ,          (11)
となり, の円との関係がよく分ります。
    つぎに,3次元立体空間における卵形曲面の方程式は, に置き換えればよく,次のようになります。

       ,          (12)
ただし,

    (12)式を一寸書きかえると
       ,          (13)
となり, の球面との関係がよく分ります。

[卵形曲線の長径 、短径 、周の長さ 、 および、平面面積

図2c 長径、短径
周の長さ、および、
平面面積
    卵形曲線の長径 は(9)式からすぐ分かるように = となります。 他方、短径 は解析的には求まりません。 卵形曲線の周の長さ

       ,          (14a)
ただし、
       .          (14b)
    次に、図2で示される卵形曲線の平面面積 は、(9b)式で与えられる回転半径を用いて次式で計算されます。

       .          (14c)


    卵形曲線の短径 を求める C++ プログラムはこちら 卵形曲線の短径を求めるプログラムです。
    (14a)式を数値計算して卵形曲線の周の長さ を求める C++ プログラムはこちら 卵形曲線の周囲の長さを求めるプログラムです。
    (14b)式を数値計算して卵形曲線の平面面積 を求める C++ プログラムはこちら 卵形曲線の平面面積を求めるプログラムです。
    これらの画面表示のプログラムをマウスでドラッグしてコピーを取ると,自由にご利用できます。

return


2.   3次元空間における卵形の体積 と表面積

    (12)式、または、(13)式で与えられる3次元空間における卵形図形の体積 は、 (9b)式で与えられる回転半径を用いて次式で計算されます。

       .          (15a)

計算結果は、のときは
       ,          (15b)
となり、 b=0 のときは次式の球の体積となります。

       ,          (15c)
ただし、半径は a/2 です。

    参考までに、(15b)式の計算内容の詳細は次のようです。
       .          (15b)'

    次に、卵形立体図形の表面積

       ,          (16)
ただし、は(9b)式で与えられ、は(14b)式で与えられます。


    (15b)式、または、(15c)式を数値計算して卵形立体図形の体積 を求めるための C++ プログラムはこちら 卵形立体図形の体積を求める計算プログラムです。
    (16)式を数値計算して卵形立体図形の表面積 を求める C++ プログラムはこちら 卵形立体図形の表面積を求めるプログラムです。
    これらの画面表示のプログラムをマウスでドラッグしてコピーを取ると,自由にご利用できます。


    (15b)式、または、(15c)式による卵形立体図形の体積 、(16)式による卵形立体図形の表面積 、 卵形曲線の長径 、卵形曲線の短径 、 (14a)式による卵形曲線の周囲の長さ 、および、 (14b)式による卵形曲線の平面面積 の各々のCプログラムによる数値計算結果を、表1に示します。


表1 卵形立体図形の体積 と表面積 、および、 卵形曲線の長径 と短径 と 周囲の長さ と平面面積
{注意1] 長径 = ですが、 短径 ではありません の値は上述のように、
解析的には求めることが出来ないので、Cプログラムのコンピュータ計算で求めます。
{注意2] 現実の卵に最も近いのはピンクカラーで示す 付近です

条件
b=0  (球)
b=0.2
b=0.4
b=0.6
b=0.7
b=0.8
b=0.9
b=
卵の体積 =
=0.523599
0.428932
0.352696
0.292378
0.267402
0.245463
0.226247
0.209440
卵の表面積 =
=3.141593
2.755236
2.429825
2.159010
2.042087
1.936446
1.841316
1.755925
長径 =
短径 =
0.905473
0.823333
0.754247
0.724266
0.696999
0.672172
0.649519
卵形曲線の
周の長さ =
=3.1416
2.9942
2.8655
2.7544
2.7050
2.6596
2.6181
2.5803
卵形曲線の
平面面積 =
=0.785398
0.710785
0.644026
0.585122
0.558614
0.534071
0.511491
0.490874


                (クリックすると拡大します)
図3 卵の体積 と卵の表面積
短径 と長径 の比 に対する依存性



    このうち、(15c)式による卵形立体図形の体積 と(16)式による卵形立体図形の表面積 の 短径 と長径 の比 に対する依存性を図3に示します。


    (15b)式、(16)式等を用いて図3に示されるグラフのデータを計算して得るための C++ プログラムは こちら 図3を得るための計算プログラムです。

return


3.   を媒介変数として卵形曲線の方程式を表示すること

    奈良県生駒市にご在住の伊藤 忠夫 氏氏の卵形曲線についてはこちら 卵形曲線) からご指摘があり,を媒介変数として 卵形曲線の方程式を表示する方が,曲線をコンピュータで描かせるのに威力があることを再認識いたしましたので, ここでは、媒介変数を用いて卵形曲線の座標 を表しておきます。

    まず,上記(7)式を誘導した直後に述べた「 方向に だけ平行移動させた」ということに従って,(4)式右辺に定数 の値を加えると,
      .
    次に,(6)式を(1)式に代入して得た式と(2)式を上式に代入し,(8)式を用いて定数に変換すると, 次式を得ます。
       .          (17)
    つぎに,(2)式を(5)式に代入し,(8)式を用いて定数に変換すると, 次式を得ます。
       .          (18)
    以上,(17)式と(18)式が本目的である媒介変数を用いた卵形曲線の方程式が得られました。 の値は, 2πの連続する範囲さえ確保すれば任意に選べて,特に制限はありません。

    以上をまとめて,次式となります。

       ,          (19)
ただし,.
    なお、(19)式中のは図1で定義されるもので、極座標表示における卵形曲線の位相角ではありません。


    (19)式を数値計算によって図2中の1個の卵形曲線を得るための C++ プログラムはこちら 1個の卵形曲線の計算プログラムです。 このプログラムは b=0.8 の場合ですが,b>0 の制限のもと,定数 b の数値を変えることにより卵形の形を変えることができます。 この画面表示のプログラムをマウスでドラッグしてコピーを取ると,自由にご利用できます。
    C++ の計算実行方法,および,卵形曲線の描画方法は,前記と同様です。
    一方,図2の卵形曲線群を同時に得るための C++ プログラムは,横軸となるを与える(17)式に 曲線の種類によって変わる値が含まれているために,単純でなくなります。 よって,このプログラムは割愛します。

return


4.   基礎図形を円に代えて楕円とする場合

    前節までの卵形曲線は、図2を見て分かりますように、その基礎図形は円であった。円に代えて楕円を使えば、 もっと広範囲の形をとる卵形曲線が得られる可能性が出てきます。方程式では、(9)式を拡張して次式を考えました。

       .          (20)

    上式で b=0 のとき上式は
       .          (21)
となり、確かに、横軸方向の曲率半径が 、 縦軸方向の曲率半径が の楕円となっています。
    (20)式をグラフ表示すると、図4a、および、図4bのようになります。

図4a a=1, p=1.5(基礎は横長楕円[ b=0 の赤色カーブ])
図4b a=1, p=0.7(基礎は縦長楕円[ b=0 の赤色カーブ])


    (20)式を通常の2次方程式の解法を使って解くと、

       .          (20b)
これはコンピュータで計算させるときに用います。

    最後に、x の周りに回転させた立体図形の体積 V は、(20b)式で与えられる回転半径を用いて、 (18)式を計算したときと同様に求めると、次のように得られます。

のときは
       ,          (22a)
となり、 b=0 のときは次式の回転楕円体の体積となります。

       .          (22b)



    以上,a>b>0 の場合に限定した上での解析であった。

    以下に,a>0 の条件はそのままで,(9)式に於いて b<0 および b>a に拡張した各場合を参考までに示します。 なお,a<0 への拡張は未だ行っていません。                                                                            
return


5.   定数 a と b が定義域を外れた場合

5.1   a>0 で b<0 の場合――海栗うに形?

    a>0 で b<0 の場合を図5に示します。何か,海栗うにに似ていませんか。


5.2   b>a>0 の場合――魚形

    b>a>0 の場合を図6に示します。x=0 で曲線が尖り,x<0 の領域にも曲線が飛び出します。幼児が描く魚みたいですね。

図5
図6

図7
5.3   上記 a>0 で b<0 の場合(海栗形)から卵形への変形

    図5を横軸に引き伸ばすと卵形に近づくカーブがありそうです。そこで,その引き伸ばしのために, (9)式において新たな定数 c (ただし、0 < c < 1) を導入して,x を cx に置き換えると,次式が得られます。

       .          (23)

    a=4, c=0.55 としてコンピュータで計算させると,b の種々の値に対する曲線群が左図(図7)に描かれます。卵形のカーブもありそうです。







return


6.   卵形曲線からの一般的拡張・・・梨形曲線まで

    元清水建設株式会社技術研究所、 上席研究員の奥山博康氏同左)のご示唆により、 (10)式を拡張して最大限に項を増やす場合で、かつ、 (9b)式のように解析的に解ける拡大方程式を取り扱います。それは次の方程式になります。 この方程式は、上記の全ての曲線を包含しています。これに加えて、梨形の曲線等も描かれます。

                 (24)

なお、卵形曲線の(10)式の定数 c の条件は拡張の理由で解除します。定数 df が共に正である条件は 閉曲線を確保するためです。条件は、下記の(29)式で与えられるものです。 また、最後の条件不等式は下記の(31)式で与えられるものです。さらに、第1節の(10)式の誘導過程で記述したように、 すでにの関係を用いているので、定数 b は使用していません。

    (24)式を、通常の2次方程式の解法で解いて、

                 (25)

    上式において、0 < x < a の範囲では

       ,          (26)

が成り立つので、複号の負号は捨てます。

    こうして、(24)式の解は

                 (27)

となります。

       [註] 0 < x < a の範囲外での解は、(27)式の他に次の(27)'式も存在します。

                             (27)'



    0 < x < a の範囲に話を戻し、この範囲内で閉曲線となるためには x=0x=a の双方で y=0 でなければなりません。
    先ず、x=0 の場合を調べるために、(27)式に x=0 を代入すると、

       ,          (28)

となって、この値が y=0 になる条件は次のようになります。

       ,          (29)

    次に、x=a の場合を調べるために、(27)式に x=a を代入すると、

       ,          (30)

となって、この値が y=0 になる条件は次のようになります。

       ,          (31)

    以上、条件(29)式と(31)式が、0 < x < a の範囲内でのみ閉曲線が存在する条件となります。


    最後に、(24)式、および、その解(27)式と(27)'式が与える曲線を描いた2例を、図8、および、図9に示します。



    図8をみて分かるように、(31)式を満たさないc > 2 のときは、閉曲線が 0 < x < a の範囲外に飛び出します。また、 図9をみて分かるように、(29)式を満たさないe > 0 のときも閉曲線が 0 < x < a の範囲外に飛び出します。

    (27)式を数値計算によって図8 の 0 < x < a の範囲内での曲線群を得るための C++ プログラムはこちら 5個の拡大系卵形曲線の計算プログラムです。

    また、次のような面白い図形も得られます。タマネギ形をしています。


return


7.   前節の高次化(その1)・・・前節の圧縮図形

    前節の xを置き換えると(24)式は次式の8次方程式に変わりますが、 解析的に解ける形であることには変わりません。また、定数の条件も変わりません。注意するべきは閉曲線の範囲は となることです。

                 (32)

この解は

                 (33)

これが与える曲線の の範囲で描いた2例を、図12、および、図13に示します。


    図13をみて分かるように、e > 0 のときは の範囲内で閉曲線が得られません。 これは前節と同様です。

    (33)式を数値計算によって図12 の の範囲内での曲線群を得るための C++ プログラムはこちら 5個の拡大系8次式(I)による曲線の計算プログラムです。

    また、前節の図10、図11に相当して、次のような面白い図形も得られます。


    さらに、定数の数値を変えると、次のように、スペードの形に似てきます。


return


8.   前節の高次化(その2)

    前節の y に於いてもを置き換えると(32)式は次に示す8次方程式となります。 定数の条件は変わりません。閉曲線の範囲も前節と同じ です。

                 (34)

この解は

                 (35)

これが与える曲線の の範囲で描いた2例を、図18、および、図19に示します。

    図19をみて分かるように、e > 0 のときは の範囲内で閉曲線が得られません。 これも前節と同様です。

    (35)式を数値計算によって図18 の の範囲内での曲線群を得るための C++ プログラムはこちら 5個の拡大系8次式(II)による曲線の計算プログラムです。

    また、前々節の図10、図11、および、前節の図14、図15に相当して、次のような面白い図形も得られます。なめこに似ていますね。


return


~ブラウザの「戻る」で 前に開いたページに戻ります~

~または、下のボタンを押して HOME に戻ります~


HOME

updated: 2007.3.29, edited by N. Yamamoto
Revised in Feb. 06, 2015, Mar. 16, 2015, Apr. 22, 2015 and Sep. 26, 2016.