TDCC LABORATORY
TDCC 研究室

   HOME ENGLISH                                         

星形、および、花の形を表す方程式

山本 信雄

本ページの図形は自由にコピーして自由にご使用できます。

    本ホームページの、「指数関数を用いた凸型および凹型の歪円または歪楕円の方程式」 (こちら 指数関数を用いた凸型および凹型の歪円または歪楕円の方程式 を参照)のページの中の凹型の歪円の方程式を基にして、星形、および、花びらの形を表す方程式を表示することを試みます。
    凹型の歪円の方程式は次式。
             ,                     (1)
ただし、定数 a, b, および c は正の実数ですが、a のみ次の制限があります。
             .                                 (2)
    (1)式から得られる図形の例を、図1に示します。この図形の y>0 の上半面の領域を利用して、 x を極座標の位相角 に相当する変数に、y を極座標の動径 r に相当する変数に、 それぞれ置き換えます。
    先ず、位相角 への置き換えは、 図1に示されるような4つのコーナーをもつ表示から任意の n 個のコーナー( n は自然数)をもつ表示に拡張することを含めて、図2のように行いました。 その変換式は次のようです。
             ,                     (3)
ただし、は、元の凹形歪円曲線がx軸を切る(すなわち、方程式が y=0 を満たす)最大値を示し、 それは次式で表されます。
             .                                 (4)
    次に、動径 r への置き換えは、
             .                     (5)

図1 元になった凹型の歪円の例
図2 x からへの変数変換の方法を示す

    以上によって、(1)式は次式に書き換えられます。これによって、元の4つのコーナーをもつ表示から任意の n 個のコーナーをもつ表示に変換されます。
             .                                 (6)
    上式より、n 角表示における極座標の動径 r が次式で得られます。
             .                                 (7)
    このように、極座標 表示の「星形、および、花びらの形を表す方程式」が得られます。 直交座標 (x, y) 表示のときは、次式の通常の変換を施します。
             ,                     (8)
および、
             .                     (9)

    の範囲での値を与えながら、 (7)式と (8)、および、(9)式を C++言語プログラムによって計算します。計算されたデータにエクセル・ファイルのグラフィック・ ウィザードを用いると、 以下のような図形が描かれます。

(1)   星形 (n=5) の場合

    上図を着色しますと次のようです。

上図をアニメーションで示しますと次のようです。 なお、画像の自動切り替え方法はこちら 画像の切り替え法(アーカイブ版)を参考にしました。


(2)   a=0.81,   =0.1*, b=0.14, c=1 の場合

    上図を着色しますと次のようです。

上図をアニメーションで示しますと次のようです。 なお、画像の自動切り替え方法はこちら 画像の切り替え法(アーカイブ版)を参考にしました。


(3)   a=0.83,   =0.5*, b=c=1 の場合

    上図を着色しますと次のようです。

上図をアニメーションで示しますと次のようです。 なお、画像の自動切り替え方法はこちら 画像の切り替え法(アーカイブ版)を参考にしました。


(4)   a=0.83,   =0, b=c=1 の場合

    上図を着色しますと次のようです。

上図をアニメーションで示しますと次のようです。 なお、画像の自動切り替え方法はこちら 画像の切り替え法(アーカイブ版)を参考にしました。


(5)   n=5, b=c=1 の場合

    上図を着色しますと次のようです。

上図をアニメーションで示しますと次のようです。 なお、画像の自動切り替え方法はこちら 画像の切り替え法(アーカイブ版)を参考にしました。



(6)   n=5, a=0.7, b=0.2, c=0.3 の場合

    上図を着色しますと次のようです。

上図をアニメーションで示しますと次のようです。 なお、画像の自動切り替え方法はこちら 画像の切り替え法(アーカイブ版)を参考にしました。


(7)   n=5, a=0.81, b=0.022, c=1 の場合( <0 の場合もあります)

    上図を着色しますと次のようです。

上図をアニメーションで示しますと次のようです。 なお、画像の自動切り替え方法はこちら 画像の切り替え法(アーカイブ版)を参考にしました。



(8)   a=0.81,   =0.1*, c=1 の場合

    上図を着色しますと次のようです。

上図をアニメーションで示しますと次のようです。 なお、画像の自動切り替え方法はこちら 画像の切り替え法(アーカイブ版)を参考にしました。


(9)   a=0.81,   =0.1*, c=1 の場合(その2)

    上図を着色しますと次のようです。

上図をアニメーションで示しますと次のようです。 なお、画像の自動切り替え方法はこちら 画像の切り替え法(アーカイブ版)を参考にしました。


(10)   他のパラメータの場合( <0 の場合もあります)

    上図を着色しますと次のようです。

上図をアニメーションで示しますと次のようです。 なお、画像の自動切り替え方法はこちら 画像の切り替え法(アーカイブ版)を参考にしました。




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

    続編花形曲線はこちら 花形です。



[参考]    一般的方法について

    (1)式の直交座標 (x, y) 表示を極座標 表示に、次の変換公式を使って変換します。
             ,                     (10)
および、
             .                     (11)
    4つのコーナーをもつ表示から任意の n 個のコーナーをもつ表示に拡張し、かつ、必ず真上に1つのコーナーが来るようにするには、 位相角に変えることで実現されます。 この場合、直交座標から極座標へ変換する変換公式は、(10)、(11)式に代えて、次式となります。
             ,                     (12)
および、
             .                     (13)
    (12)、(13)式を(1)式に代入すると次式が得られます。
             .                     (14)
ただし、定数 a, b, および c は正の実数ですが、a のみ次の制限があります。
             .                                 (15)
    (14)式での範囲での値を与えて計算することにより、 原理的には、動径 r が得られる筈ですが、残念ながら、極く一部の n の値を除いては解析的に不可能です。


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

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


HOME

Updated: 2009.01.21, edited by N. Yamamoto.
Revised on Jul.28, 2013, Sep. 01, 2013, Dec. 29, 2013, Dec. 31, 2013, Jan. 13, 2014, Mar. 16, 2015, May 05, 2020, Dec. 06,2020, Jan. 20, 2021 and May 15, 2021.