TDCC Laboratory
TDCC 研究室

   HOME ENGLISH                                         

ハート形の曲線

山本 信雄

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

1.   はじめに

    ハート形曲線は  Heart Curve - Mathematische Basteleien、 および、First heart Curve - Wolfram|Alpha、および、 Heart Curve -- from Wolfram MathWorld、および、 How to draw a heart shaped figure    のサイトに代表して見られます。また、興味あるハート形とその方程式が   ハートの方程式  のサイトに見られます。
    ハートの形は種々さまざまです。これらの形を数式で表して、計算によって図形化できないかと考えました。 最も簡単と思われる仕方は、円 の各点を上方に持ち上げてハート形にするものです。
    本ページの図形すべてに著作権はありませんので、自由にコピーして自由に使うことができます。
    なお、カージオイド曲線からハート形に変形して、より形のよい多くのハート形曲線を得る方法は こちら ハート形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日撮影
栃木県那須塩原市の千本松牧場で
偶然見かけ、ズームで撮りました。
同左

[追記]上記のようなハートマークの額をもつ牛が、偶然、 額にハートマーク子牛 ハートのハーちゃんに見付かりました。 牛の額はハート形の模様が付きやすいのかも知れません。



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

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


HOME

Updated: 2007.12.27, edited by N. Yamamoto.
Revised on Feb. 06, 2015, Mar. 16, 2015, Nov. 09, 2015, Dec. 20, 2015, Mar. 28, 2020, May 05, 2020, Jan. 18, 2021, May 08, 2021 and Feb. 28, 2022.