Advertisement
jukaukor

Ellipsepoints.jl

Dec 30th, 2023
12
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. using Plots, Elliptic,Roots
  2. # Plottaa tasaväliset pisteet ellipsiin
  3. # ellipsin piiri jaetaan n tasaväliseen osaan
  4. # lasketaan kunkin osan alun vastaava kulma t
  5. # plotataan näin saatu tasaväliset piirin pisteet
  6. # Juhani Kaukoranta 30.12.2023
  7. function inverseE(z,m)
  8. # nollakohdan etsintä,jota tarvitsee
  9. # funktio t_from_length
  10. em = E(m)
  11. t = (z/em)*(pi/2)
  12. f(u) =E(u,m) - z
  13. return find_zero(f,t) # löytyy kun f(u)=t
  14. end
  15. function t_from_length(length,a,b)
  16. # etsii kaaren piuutta vastaavan kulman T
  17. m = 1 - (b/a)^2
  18. T = pi/2 -inverseE(E(m) - length/a,m)
  19. return T
  20. end
  21. function ellipsepoints(a,b,n)
  22. # a,b = ellipsin puoliakselit
  23. # n = pisteiden lukumäärä
  24. t = range(0, 2pi, length=n); # parametrinen kulma, n arvoa
  25. x,y = a * cos.(t),b * sin.(t); # korjaamaton ellipsin pistejoukko
  26. p1=scatter(x,y,title="korjaamattomat pisteet",msize=1,aspect_ratio=:equal,legend=:false)
  27. m = 1 - b^2/a^2
  28. perimeter = 4*a*E(m); # ellipsin piiri
  29. eka = perimeter/n # eka väli , muut samanpituisia
  30. valit = range(start=0,step=eka,stop=perimeter) # piiri jaettu n osaan
  31. tt = t_from_length.(valit,a,b)
  32. x2,y2=a*cos.(tt),b*sin.(tt); # korjattu ellipsin pistejoukko
  33. p2=scatter(x2,y2,title="tasaväliset pisteet",msize=1,aspect_ratio=:equal,legend=:false) # korjatut
  34. plot(p1,p2,layout=grid(1,2, ), size=(900,500))
  35. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement