裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

算額(その91)

2023年01月06日 | Julia

算額(その91)

千葉県君津市 神野寺 明治20(1887)年4月
http://www.wasan.jp/chiba/jinyaji4.html

円内に正三角形,甲円,乙円,丙円がある。それぞれの径を求めよ。

外円の半径を 1 とする。甲円の半径は 1/2 である。次いで,順に乙円,丙円の中心座標と径を求める。SymPy を使わあなくても求めることができる。

乙円の半径は 1/4 中心座標は cosd(i)*3/4, sind(i)*3/4, i = 30, 150, 270
丙円の半径は 1/6 中心座標は cosd(i+60)*2/3, sind(i+60)*2/3, i = 30, 150, 270

using Plots

function circle(ox, oy, r, color=:red; beginangle=0, endangle=360)
 θ = beginangle:0.1:endangle
 x = r.*cosd.(θ)
 y = r.*sind.(θ)
 plot!(ox .+ x, oy .+ y, color=color, linewidth=0.5)
end;

function point(x, y, string="", color=:green, position=:left, vertical=:top; fontsize=10, mark=true)
  mark && scatter!([x], [y], color=color, markerstrokewidth=0)
  annotate!(x, y, text(string, fontsize, vertical, position, color))
end;

function segment(x1, y1, x2, y2, color=:black; linestyle=:solid, linewidth=0.5)
plot!([x1, x2], [y1, y2], color=color, linestyle=linestyle, linewidth=linewidth)
end;

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   plot()
   circle(0, 0, 1, :black)
   plot!([0, cosd(-30), cosd(210), 0], [1, sind(-30), sind(210), 1], color=:magenta, lw=0.5)
   circle(0, 0, 1/2)
   for i = 30:120:270
       circle(cosd(i)*3/4, sind(i)*3/4, 1/4, :green)
       circle(cosd(i+60)*2/3, sind(i+60)*2/3, 1/6)
   end
   hline!([0], color=:black, lw=0.5)
   if more
       point(0, 0, "0 ", :red, :right)
       point(0, 1/2, "1/2 ", :red, :right)
       point(0, 2/3, "2/3 ", :blue, :right)
       point(cosd(30)*3/4, sind(30)*3/4, "(x,y)\nx=cosd(30)*3/4\ny=sind(30)*3/4", :green, :top)
       vline!([0], color=:black, lw=0.5)
   end
end;


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 算額(その90) | トップ | 算額(その92) »
最新の画像もっと見る

コメントを投稿

Julia」カテゴリの最新記事