算額(その315)
(5) 京都府宮津市天橋立文殊 知恩寺文殊堂 文政元年(1818)
近畿数学史学会:近畿の算額「数学の絵馬を訪ねて」,平成4年5月16日 初版第一刷,大阪教育図書株式会社,大阪市.
p02-03 特集「算額」(杉浦).indd
https://www.s-coop.net/lifestage/backnumber/2011/pdf/1106_02-03.pdf
小円の直径を 8 cm,大円の直径を 16 cm とする。色をつけた部分の面積を求めよ。
似た図形を取り上げた算額は,京都府宮津市天橋立の知恩寺文殊堂に文政元年(1818)に奉納されたものがある(算額その28)。それは大円と小円の径を求めよというものである。
図形は点対称・線対称なので,角度 30° から 90°までの該当図形の面積を求めて 6 倍すればよい。
図中の下の灰色の三日月様の面積は,その上のピンクの領域の面積と同じである。求める灰色の領域の面積は大円の面積の 1/3 から小円の面積の 1/2 を引いたものである。
求める面積は 251.32741228718342 平方センチメートル
(r1, r2) = (8, 4)
pi*(r1^2/3 - r2^2/2) * 6
251.32741228718342
include("julia-source.txt");
function transform(x, y; deg=0, dx=0, dy=0)
(x, y) = [cosd(deg) -sind(deg); sind(deg) cosd(deg)] * [x, y]
return (x .+ dx, y .+ dy)
end;
function arc(r; beginangle=0, endangle=360)
n = round(Int, abs(endangle - beginangle)r/4)
x = []
y = []
for θ in range(beginangle, endangle, length=n)
append!(x, cosd(θ))
append!(y, sind(θ))
end
#append!(x, x[1])
#append!(y, y[1])
return (r .* x, r .* y)
end;
using Plots
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(r1, r2) = (8, 4)
plot()
if more
circle(0, 0, r1)
rotate(0, r1, r1)
rotate(0, r1 + r2, r2)
(x1, y1) = arc(r1, beginangle=90, endangle=-30)
(x1, y1) = transform(x1, y1, dy=r1)
(x2, y2) = arc(r2, beginangle=-90, endangle=90)
(x2, y2) = transform(x2, y2, dy=r1+r2)
(x3, y3) = arc(r1, beginangle=30, endangle=90)
plot!([x3; x2; x1], [y3; y2; y1], linecolor=:black, linewidth=0.5, seriestype=:shape, fillcolor=:gray)
(x4, y4) = arc(r1, beginangle=30, endangle=90)
append!(x4, x4[1])
append!(y4, y4[1])
plot!(x4, y4, linecolor=:black, linewidth=0.5, seriestype=:shape, fillcolor=:pink)
(x5, y5) = transform(x4, y4, deg=60, dx=r1√3/2, dy=-r1/2)
plot!(x5, y5, linecolor=:black, linewidth=0.5, seriestype=:shape, fillcolor=:gray)
vline!([0], color=:black, lw=0.5)
hline!([0], color=:black, lw=0.5)
else
rotatef(0, r1, r1, :gray)
rotatef(0, r1 + r2, r2, :white)
circlef(0, 0, r1, :white)
rotate(0, r1, r1, :red)
rotate(0, r1 + r2, r2, :red)
circle(0, 0, r1, :red)
(x4, y4) = arc(r1, beginangle=30, endangle=90)
(x5, y5) = transform(x4, y4, deg=60, dx=r1√3/2, dy=-r1/2)
(x6, y6) = transform(x4, y4, deg=-120, dy=r1)
x7 = [x5; x6]
y7 = [y5; y6]
plot!(x7, y7, linecolor=:red, linewidth=0.5, seriestype=:shape, fillcolor=:gray)
(x8, y8) = transform(x7, y7, deg=120)
plot!(x8, y8, linecolor=:red, linewidth=0.5, seriestype=:shape, fillcolor=:gray)
(x9, y9) = transform(x7, y7, deg=240)
plot!(x9, y9, linecolor=:red, linewidth=0.5, seriestype=:shape, fillcolor=:gray)
plot!(showaxis=false)
end
end;