!----------------------------------------------------------------------- !- ! test program for the project "gravity field" !- !----------------------------------------------------------------------- program essai use realfield use spitpgm ! XXX implicit none call init_random() call essai_near_planet(9999, 4096) STOP 'BECAUSE YOLO' contains !----------------------------------------------------------------------- !- ! computation of thr nearest planet !- subroutine essai_near_planet(nbplanets, szfield) integer, intent(in) :: nbplanets, szfield integer, dimension(:,:), allocatable :: map integer :: ix, iy real :: fx, fy, dx, dy integer :: near, ipl, errcode real :: curdist, smalldist type(massbody) :: planets(nbplanets) print *, "near planets test", nbplanets, szfield allocate(map(szfield, szfield), stat=errcode) map = -1 ! create some random bodies do ipl=1, nbplanets planets(ipl)%posx = rand() * szfield planets(ipl)%posy = rand() * szfield planets(ipl)%serial = ipl end do ! call save_bodies_to_txt_file(planets, "planets.txt") ! loop over all the location of the field do ix=1, szfield fx = real(ix) do iy=1, szfield fy = real(iy) near = -1 smalldist = 1e37 ! loop over all the planet's bodies do ipl=1, nbplanets ! compute the "fake" distance dx = fx - planets(ipl)%posx dy = fy - planets(ipl)%posy curdist = (dx*dx) + (dy*dy) if (curdist .LT. smalldist) then near = ipl smalldist = curdist endif end do ! loop on ipl map(ix, iy) = mod(near, 255) enddo write(0, *) "row", ix, " on", szfield enddo call spit_as_pgm_8(map, "nearest.pgm") end subroutine !----------------------------------------------------------------------- end program