TDCC LABORATORY
TDCC 研究室


   HOME ENGLISH                                         

ハート形の曲線

山本 信雄

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

1.   はじめに

    ハート形曲線は  Heart Curve - Mathematische Basteleien、 および、First heart Curve - Wolfram|Alpha、および、 Heart Curve -- from Wolfram MathWorld   のサイトに代表して見られます。また、興味あるハート形とその方程式が   ハートの方程式  のサイトに見られます。
    ハートの形は種々さまざまです。これらの形を数式で表して、計算によって図形化できないかと考えました。 最も簡単と思われる仕方は、円 の各点を上方に持ち上げてハート形にするものです。
    本ページの図形すべてに著作権はありませんので、自由にコピーして自由に使うことができます。

    なお、カージオイド曲線からハート形に変形して、より形のよい多くのハート形曲線を得る方法は こちら ハート形2 、および、こちら ハート形2b にあります。


図1

2.   方法1

    持ち上げ方の簡単な方法として、x>0 の右半面座標で y=bx (b>0) の値だけ円を y 方向に移動させ、x<0 の左半面座標で y=-bx の値だけ円を y 方向に移動させると、左右対称にハートの形に持ち上がるというものです。
    式で表せば、次のようになり、これをハート形曲線の方程式と呼んでもよいでしょう。
       ,                       (1)
ただし、b は任意の正定数です。
    b 値を数種変えて(1)式をパソコンで計算させ、グラフ表示させますと図1が得られます。何とかハート型にはなっています。





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

    [註]上記 C++ プログラムは、x-y 座標の4つの各象限毎に計算させているため、 各象限のつなぎ目で最大 x の微小変分 dx だけ隙間ができます。曲線図形を表示する分には問題ありませんが、 曲線の内と外にペイント分けをするときに、この隙間のためにペイントがれてしまいます。 対策として、全体図を「99%」に縮小するか、曲線を「太線」にしてからペイントすれば、 隙間が詰まってOKになります。 根本的にプログラムを隙間無く改善することはできますが、プログラムがやや混み入ってきます。



図2


図3

3.   方法2

    y=bx (b>0) や y=-bx を用いる代わりに、x>0 の右半面座標で (b>0) を、 x<0 の左半面座標で を用いれば、ハート形曲線の方程式は次式になります。
       .            (2)
b を数種変えて(2)式をパソコンで計算させ、グラフ表示させますと図2が得られます。

    2009年6月9日(火)に偶然見つけたサイト「数学的ハート形」は、 基本的に本稿と同じです。それは次の通りです。
    このサイトの式は実質的に
       .            (3)
ですが、この式の y を に、x を に置き換え、定数 b を とすれば、(2)式に移行するからです。 この 付近の図形を図2の追加挿入の形で細かに示すと図3のようです。





    (2)式を数値計算して図2のハート形曲線群を得るための C++ プログラムはこちら ハート形曲線群の計算プログラムです。 画面表示のプログラムをマウスでドラッグしてコピーを取ると、自由にご利用できます。
    また、b=0.8 の場合の1個のハート形曲線を得るための C++ プログラムはこちら 1個のハート形曲線の計算プログラムです。 このプログラムで、b>0 の制限のもと、定数 b の数値を変えることによりハート形の形を変えることができます。
    C++ の計算方法、および、ハート形曲線の描画方法は、前記と同様です。
    得られたハート形曲線から、ハート形に画像を縁取るためのトリミング用として編集しますと こちら ハート形マスクのようになります。

4.   他の方法

    円の変わりに楕円や他の閉じた曲線を用います。左右対称でなくてもよいならば、傾けた楕円も使用できます。 また、y 方向に持ち上げるための関数をいろいろ工夫すれば、様々なハート形曲線が得られることでしょう。


{応用例]
(クリックすると拡大します)
2008年12月11日撮影
栃木県那須塩原市の千本松牧場で
偶然見かけ、ズームで撮りました。
同左


[追記]上記のハートマークの額をもつ牛が、偶然、 あるサイト・その1 (ここをクリック)その2 (ここをクリック)に見付かりました。 牛の額はハート形の模様が付きやすいのかも知れません。



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

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


HOME


updated: 2007.12.27, edited by N. Yamamoto
Revised in Feb. 06, 2015, Mar. 16, 2015, Nov. 09, 2015 and Dec. 20, 2015.