"たばや"の算額

Last modified: 2019 年 03 月 21 日 00 時

奈良県大和郡山市の庚申堂金輪院に残されている算額から。けっこうな難問です。

今、大円の中に甲・乙・丙・丁の小円がそれぞれ接している。大円の直径が1尺6寸 (1尺=10寸)、甲円の直径が9寸6分のとき、乙円・丙円・丁円の直径はいくらか。 >>いろいろな算額ヒント

近鉄の結崎駅の近くにある"御菓子司たばや"には算額最中というものが売られています。たばやの先祖、森内弥三郎が奉納した算額の、下の図が最中に描かれているわけです。

そして、この最中はとても美味しいです!奈良を寄った際にはぜひ。通販もあります。
御菓子司たばや http://www.sangakumonaka.com/

主な使用関数: Circledata, Drwpt, Fontsize, Letter.

"たばや"の算額

Cinderella 2での作図

KeTCindyのスクリプトを利用したいので、templete1basic.cdyなどを開いて、これを別名に保存します。
まず、縦に直線ABを描き、線分ABを半径とする円A(黄緑)を描きます。さらに、点Bを通る直線ABの垂線と適当な位置にもう一本、垂線を描きます。この2本の垂線を、反転ツールツールを使って円Aで反転すると、円Aの内部に2円(赤)ができます。 742x552(62836bytes)

先ほどの2垂線に接する円を図のように描きます。図の点Pを中心とする円は直線AB、点Bを通る垂線、点Cを通る垂線に接しているため、これを円Aで反転すると、赤円に内接する小円が出来あがります。 742x552(79419bytes)

同様に反転して、内接する小円たちを描きます。 742x552(79419bytes) 742x552(79419bytes)

反転した小円たちの中心をツールでそれぞれ描いて、Circledataで利用するために、小円たちの接点も作図しておきます。交点ツール交点ツールを使って円同士の接点を求めると、点が2重になるので、中心間の線分と円の交点を求めています。 742x552(79419bytes)

[このページのトップへ]

CindyScriptの書き込み

スクリプトエディターを開いて、以下のスクリプトを書き込んでいきます。作図した点の名前が違う場合は、適宜変えてください。

Ketinit();
Addax(0);
Setunitlen("6mm");
Setpen(2);
//大円・中円
Circledata([F, A],["Num=600"]);
Circledata([D, A],["Num=600"]);
//内接する小円たち
Circledata([P30, P43],["Num=600"]);
Circledata([P33, P43],["Num=600"]);
Circledata([P34, P46],["Num=600"]);
Circledata([P38, P46],["Num=600"]);
Circledata([P37, P47],["Num=600"]);
Circledata([P41, P47],["Num=600"]);
//円の中心に記号を書く
Fontsize("h");
Letter(F, "c", "甲");
Fontsize("LA");
Letter(P30, "c", "乙");
Letter(P33, "c", "乙");
Fontsize("La");
Letter(P34, "c", "丙");
Letter(P37, "c", "丙");
Fontsize("la");
Letter(P38, "c", "丁");
Letter(P41, "c", "丁");

Windispg();

中心が点Aで、半径が線分ABとなる円はCircledata([A, B],["Num=600"]);で描画されます。["Num=600"]は分割数のオプションです。数が大きいとよりなめらかに。逆に、["Num=5"]とすると、正五角形になります。

[このページのトップへ]

サンプルファイルとCindyScriptコード

サンプルファイル(.cdy)のダウンロード
Ketinit();
Addax(0);
Setunitlen("6mm");
Setpen(2);
//大円・中円
Circledata([F, A],["Num=600"]);
Circledata([D, A],["Num=600"]);
//内接する小円たち
Circledata([P30, P43],["Num=600"]);
Circledata([P33, P43],["Num=600"]);
Circledata([P34, P46],["Num=600"]);
Circledata([P38, P46],["Num=600"]);
Circledata([P37, P47],["Num=600"]);
Circledata([P41, P47],["Num=600"]);
//円の中心に記号を書く
Fontsize("h");
Letter(F, "c", "甲");
Fontsize("LA");
Letter(P30, "c", "乙");
Letter(P33, "c", "乙");
Fontsize("La");
Letter(P34, "c", "丙");
Letter(P37, "c", "丙");
Fontsize("la");
Letter(P38, "c", "丁");
Letter(P41, "c", "丁");

Windispg();

[このページのトップへ]