裏 RjpWiki

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

算額(その1579)

2025年02月02日 | Julia

算額(その1579)

福島県田村市 日渡神社 明治21年(1888)
https://www.city.tamura.lg.jp/soshiki/30/bunkazai.html
キーワード:円9個,外円
#Julia, #SymPy, #算額, #和算, #数学

外円の中に,大円 2 個と,小円 6 個を容れる。大円の直径が与えられたときに小円の直径を求める術を述べよ。

外円の半径と中心座標を R, (0, 0)
大円の半径と中心座標を r1, (r1, 0)
小円の半径と中心座標を r2, (0, y21), (r2, y22)
とおき,以下の連立方程式を解く。

include("julia-source.txt")
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf

using SymPy
@syms R::positive, r1::positive,
      r2::positive, y21::positive, y22::positive
r1 = R/2
eq1 = r1^2 + y21^2 - (r1 + r2)^2
eq2 = r2^2 + (y22 - y21)^2 - 4r2^2
eq3 = r2^2 + y22^2 - (R - r2)^2
res = solve([eq1, eq2, eq3], (r2, y21, y22))[1]

    (R*(-5 + sqrt(33))/4, R*(-5*sqrt(2) + sqrt(66))/(2*sqrt(7 - sqrt(33))), R*sqrt(7/2 - sqrt(33)/2))

小円の半径 r2 は,大円の半径 R の (√33 - 5)/4 倍である。
大円の直径が 3954 のとき,736.0001761028412 である。

3954*(√33 - 5)/4

    736.0001761028412

using Colors
function draw(R, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    r1 = R/2
    (r2, y21, y22) = (R*(-5 + sqrt(33))/4, R*(-5*sqrt(2) + sqrt(66))/(2*sqrt(7 - sqrt(33))), R*sqrt(7/2 - sqrt(33)/2))
    @printf("外円の直径が %g のとき,小円の直径は %g である。\n", 2R, 2r2)
    plot()
    circlef(0, 0, R, RGB(194/255, 214/255, 236/255))
    circle2f(r1, 0, r1, RGB(234/255, 51/255, 35/255))
    circle22f(0, y21, r2, RGB(229/255, 74/255, 233/255))
    circle4f(r2, y22, r2,  RGB(229/255, 74/255, 233/255))
    if more
        delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) /3  # size[2] * fontsize * 2
        hline!([0], color=:gray80, lw=0.5)
        vline!([0], color=:gray80, lw=0.5)
        point(0, R, "R", :green, :center, :bottom, delta=delta/2)
        point(r1, 0, "大円:r1,(r1,0)", :white, :center, delta=-delta/2)
        point(0, y21, "小円:r2,(0,y21)", :black, :left, :bottom, delta=delta)
        point(r2, y22, " 小円:r2,(r2,y22)", :black, :left, :bottom, delta=delta)
    end
end;

draw(1977, true)

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Julia で RGB による色の指定法

2025年02月02日 | ブログラミング

Julia で RGB による色指定を行うには、主に Colors.jl パッケージを使用します。このパッケージでは、RGB(r, g, b) 形式で色を指定できます。r, g, b は 0.0 から 1.0 の範囲の Float64 値です。

1. Colors.jl のインストール

まず Colors.jl をインストールします。

using Pkg
Pkg.add("Colors")

2. RGB 色の指定

using Colors

color1 = RGB(1.0, 0.0, 0.0)   # 赤
color2 = RGB(0.0, 1.0, 0.0)   # 緑
color3 = RGB(0.0, 0.0, 1.0)   # 青
color4 = RGB(0.5, 0.5, 0.5)   # グレー

3. 255スケールのRGB値を使う場合

通常の 0-255 スケールの RGB 値を使いたい場合は、RGB24 を使うか、255 で割ることで対応できます。

color5 = RGB(255/255, 128/255, 64/255)  # RGB(1.0, 0.5, 0.25)
color6 = RGB24(255, 128, 64)  # `RGB24` は 8ビット整数表現

RGB24 は 8 ビット整数 (0-255) での指定が可能ですが、内部的には RGB に変換されます。

4. HTML カラーコード (16進数) の使用

16進数のカラーコードから RGB に変換するには parse を使います。

color7 = parse(Colorant, "#FF8040")  # オレンジ系

5. 色の成分取得

定義した色から R, G, B の成分を取得するには以下のようにします。

r = red(color5)   # 1.0
g = green(color5) # 0.5
b = blue(color5)  # 0.25

6. 可視化例 (Plots.jl を使用)

例えば、Plots.jl を使って作成したプロットに色を適用することも可能です。

using Plots
plot(1:10, rand(10), color=color5, lw=3)

このように Colors.jl を使うと、RGB 形式で柔軟に色を指定できます。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村