1. はじめに
ハート形曲線は Heart Curve のサイトに代表して見られます。
ハートの形は種々さまざまです。これらの形を数式で表して、計算によって図形化できないかと考えました。
最も簡単と思われる仕方は、円 の各点を上方に持ち上げてハート形にするものです。
本ページの図形すべてに著作権はありませんので、自由にコピーして自由に使うことができます。
なお、カージオイド曲線からハート形に変形して、より形のよい多くのハート形曲線を得る方法は
こちら
、および、こちら
にあります。
図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++ プログラムはこちら です。
このプログラムで、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++ プログラムはこちら です。
このプログラムで、b>0 の制限のもと、定数 b の数値を変えることによりハート形の形を変えることができます。
C++ の計算方法、および、ハート形曲線の描画方法は、前記と同様です。
得られたハート形曲線から、ハート形に画像を縁取るためのトリミング用として編集しますと
こちら のようになります。
|
4. 他の方法
円の変わりに楕円や他の閉じた曲線を用います。左右対称でなくてもよいならば、傾けた楕円も使用できます。
また、y 方向に持ち上げるための関数をいろいろ工夫すれば、様々なハート形曲線が得られることでしょう。
|