Čo vás napadne prvé pri tejto simulácií? A ako vznikla? Jednoduchou otázkou:

Čo vás napadne prvé pri tejto simulácií? A ako vznikla? Jednoduchou otázkou:

Dnes som dostal takúto otázku:

triangle 1

Hneď ma napadlo, že prežeňme situáciu a dajme m do ťažnice, no a potom už len, žé nasimulujme ako vyzerá táto situácia v grafe ^^^ čo vidíte na vrchnom animovanom gife:

triangle 1 animation

Čo si môžeme všimnúť je jednoduchá podobnosť trojuholníka P=U * I, teda ak nám mínus sínus začne ísť ku nule, vzniká v elektrickom obvode jalový prúd a účinnosť ide k nule. Prečo si všimnúť mínus sínus? Lebo deriváciou kosínusu je práve mínus sínus, jeho dotykový bod ;)

using Pkg
Pkg.add("Plots")
Pkg.add("LaTeXStrings")
using Plots
using LaTeXStrings

#--- Fixné body trojuholníka ---
A = [0.0, 1.5]
B = [-1.5, 0.0]
C = [ 2.0, 0.0]

# vektor posunu (BC)
vBC = C .- B

# pôvodná poloha D0 – napr. stred BC
D0 = (B .+ C) ./ 2

# parameter posunu t
nframes = 80
ts = range(-0.5, stop=1.5, length=nframes)  # posúva D mimo BC

# pomocné funkcie
dot2(u,v) = u[1]*v[1] + u[2]*v[2]
norm2(u) = sqrt(dot2(u,u))
clampdot(x) = max(-1.0, min(1.0, x))
rad2deg = 180/pi

# polia pre priebehy
ms = Float64[]
alphas = Float64[]
betas = Float64[]
Ds = Vector{Vector{Float64}}()

for t in ts
    D = D0 .+ t .* vBC   # !!! POSUV V SMERE VECTORA BC !!!
    push!(Ds, D)

    vBA = B .- A
    vDA = D .- A
    vCA = C .- A

    m = norm2(vDA)
    push!(ms, m)

    # alpha = angle BAD
    cos_alpha = dot2(vBA, vDA) / (norm2(vBA)*norm2(vDA))
    push!(alphas, acos(clampdot(cos_alpha))*rad2deg)

    # beta = angle DAC
    cos_beta = dot2(vDA, vCA) / (norm2(vDA)*norm2(vCA))
    push!(betas, acos(clampdot(cos_beta))*rad2deg)
end

#--- animácia ---
anim = @animate for (i,t) in enumerate(ts)
    D = Ds[i]

    p1 = plot(
        [A[1], B[1], C[1], A[1]], [A[2], B[2], C[2], A[2]],
        seriestype=:path, linewidth=2,
        xlims=(-3, 4), ylims=(-1, 3),
        aspect_ratio=:equal, legend=false,
        title="Trojuholník, D = D0 + t·BC, t=$(round(t,digits=2))"
    )
    scatter!(p1, [A[1],B[1],C[1],D[1]], [A[2],B[2],C[2],D[2]], markersize=5)
    plot!(p1, [A[1],D[1]], [A[2],D[2]], linewidth=2, linestyle=:dash)

    # graf m(t)
    p2 = plot(ts[1:i], ms[1:i], label=L"m = |AD|", xlabel="t", ylabel="m")
    scatter!(p2, [t], [ms[i]], markersize=3)

    # graf α(t), β(t)
    p3 = plot(ts[1:i], alphas[1:i], label=L"\alpha (°)", xlabel="t", ylabel="uhly (°)")
    plot!(p3, ts[1:i], betas[1:i], label=L"\beta (°)")
    scatter!(p3, [t,t], [alphas[i],betas[i]], markersize=3)

    # jednoduchý a plne kompatibilný layout
    right = plot(p2, p3, layout=(2,1))
    plot(p1, right, layout=grid(1,2), size=(900,450))
end

gif(anim, "triangle1.gif", fps=20)
println("Hotovo — triangle1.gif vytvorený.")



Author: AarNoma

The first Slovak cyborg 1 system

Comments “Čo vás napadne prvé pri tejto simulácií? A ako vznikla? Jednoduchou otázkou:”