nap-time commit
This commit is contained in:
@@ -1,3 +1,9 @@
|
||||
!
|
||||
! OSCILLOSCOPE EXPERIMENT
|
||||
!
|
||||
! this crapware is released by tTh under the
|
||||
! DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
!
|
||||
program oscilloscope
|
||||
use genplotting
|
||||
implicit none
|
||||
@@ -8,40 +14,41 @@ program 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
|
||||
frequences(1) = 24.86
|
||||
frequences(2) = 29.77
|
||||
frequences(3) = 37.56
|
||||
frequences(4) = 49.3
|
||||
|
||||
call do_oscilloscope(frequences, 2)
|
||||
|
||||
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
|
||||
real function compute_a_value(clk, freq, phase)
|
||||
real, intent(in) :: clk, freq, phase
|
||||
real :: v, f
|
||||
f = freq*(clk+phase)
|
||||
v = sin(f) + (0.3 * sin(3*f)) + (0.1 * sin(5*f))
|
||||
compute_a_value = v
|
||||
end function
|
||||
! ---------------------------------------------------------
|
||||
subroutine plot_a_trace(freq, phy, nbsteps, ypos)
|
||||
subroutine plot_a_trace(freq, phy, nbsteps, ypos, col)
|
||||
real, intent(in) :: freq, phy, ypos
|
||||
integer, intent(in) :: nbsteps
|
||||
integer, intent(in) :: nbsteps, col
|
||||
|
||||
integer idx
|
||||
real rstep, px, py
|
||||
logical firstdot
|
||||
|
||||
firstdot = .true.
|
||||
firstdot = .TRUE.
|
||||
do idx=0, nbsteps
|
||||
rstep = (real(idx)/real(nbsteps))
|
||||
px = -10.0 + (20.0 * rstep)
|
||||
py = ypos + sin(15*(rstep+phy)*freq)
|
||||
py = ypos + compute_a_value (rstep, freq, phy)
|
||||
if (firstdot) then
|
||||
call genp_move(px, py) ; firstdot = .false.
|
||||
else
|
||||
call genp_draw(px, py, 2)
|
||||
call genp_draw(px, py, col)
|
||||
endif
|
||||
enddo
|
||||
|
||||
@@ -51,10 +58,10 @@ 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_a_trace(freqs(1), 0.2, 120, 6.66, col)
|
||||
call plot_a_trace(freqs(2), 1.0, 120, 3.33, col)
|
||||
call plot_a_trace(freqs(3), 2.6, 120, -3.33, col)
|
||||
call plot_a_trace(freqs(4), 3.1, 120, -6.66, col)
|
||||
call plot_axes(10.0)
|
||||
|
||||
end subroutine
|
||||
|
||||
Reference in New Issue
Block a user