diff --git a/.gitignore b/.gitignore index e959e72..06a2bc3 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,4 @@ spirale starfield randomwalk - +oscilloscope diff --git a/Makefile b/Makefile index 5f376ce..c8f01ba 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,16 @@ randomwalk.png: randomwalk Makefile # ----------------------------------------------- +oscilloscope: oscilloscope.f90 Makefile genplotting.o + gfortran -Wall $< genplotting.o -o $@ + +oscilloscope.png: oscilloscope Makefile + ./oscilloscope + genplot2 -s 512x512 WS/oscilloscope.scratch a.tga + convert a.tga $@ + +# ----------------------------------------------- + spirale: spirale.f90 Makefile genplotting.o gfortran -Wall $< genplotting.o -o $@ diff --git a/oscilloscope.f90 b/oscilloscope.f90 new file mode 100644 index 0000000..7224b82 --- /dev/null +++ b/oscilloscope.f90 @@ -0,0 +1,62 @@ +program oscilloscope + use genplotting + implicit none + + real, dimension(4) :: frequences + + write (0, '(A)') "----[ genplotting oscilloscope ]----" + call srand(time()) + call genp_init (0, 'WS/oscilloscope.scratch') + + frequences(1) = 0.86 + frequences(2) = 1.77 + frequences(3) = 1.56 + frequences(4) = 3.04 + + call do_oscilloscope(frequences, 1) + call genp_end (0) +contains +! --------------------------------------------------------- +subroutine plot_axes(amp) + real, intent(in) :: amp + call genp_move(0.0, -amp) + call genp_draw(0.0, amp, 7) + call genp_move(-amp, 0.0) + call genp_draw( amp, 0.0, 7) +end subroutine +! --------------------------------------------------------- +subroutine plot_a_trace(freq, phy, nbsteps, ypos) + real, intent(in) :: freq, phy, ypos + integer, intent(in) :: nbsteps + + integer idx + real rstep, px, py + logical firstdot + + firstdot = .true. + do idx=0, nbsteps + rstep = (real(idx)/real(nbsteps)) + px = -10.0 + (20.0 * rstep) + py = ypos + sin(15*(rstep+phy)*freq) + if (firstdot) then + call genp_move(px, py) ; firstdot = .false. + else + call genp_draw(px, py, 2) + endif + enddo + +end subroutine +! --------------------------------------------------------- +subroutine do_oscilloscope(freqs, col) + real, intent(in), dimension(4) :: freqs + integer, intent(in) :: col + + call plot_a_trace(freqs(1), 0.2, 90, 6.66) + call plot_a_trace(freqs(2), 1.0, 90, 3.33) + call plot_a_trace(freqs(3), 2.6, 90, -3.33) + call plot_a_trace(freqs(4), 3.9, 90, -6.66) + call plot_axes(10.0) + +end subroutine +! --------------------------------------------------------- +end program