this part need a lot of more work !

This commit is contained in:
tTh 2023-02-11 17:00:58 +01:00
parent 87191666b4
commit 6c9f562c13
13 changed files with 84 additions and 50 deletions

View File

@ -1,6 +1,7 @@
essai
animation
realdump2png
WS/*.pgm
WS/*.png

View File

@ -5,7 +5,7 @@
GFOPT = -Wall -Wextra -g -time -I../Modules
MODOBJ = ../Modules/spitpgm.o ../Modules/pixrgb.o
all: essai animation
all: essai animation realdump2png
# ----------- modules
@ -20,4 +20,7 @@ essai: essai.f90 Makefile realfield.o
animation: animation.f90 Makefile realfield.o
gfortran $(GFOPT) $< realfield.o $(MODOBJ) -o $@
#-
realdump2png: realdump2png.f90 Makefile realfield.o
gfortran $(GFOPT) $< realfield.o $(MODOBJ) -o $@
#- remember bro: yolo forever :)

View File

@ -1,2 +0,0 @@
# placeholder

View File

@ -1,2 +0,0 @@
# placeholder

View File

@ -1,2 +0,0 @@
# placeholder

View File

@ -13,18 +13,16 @@ program animation
implicit none
! some configuration constants
integer, parameter :: S_WIDTH = 1024
integer, parameter :: S_HEIGHT = 1024
integer, parameter :: NB_BODY = 51
integer, parameter :: S_WIDTH = 2048
integer, parameter :: S_HEIGHT = 2048
integer, parameter :: NB_BODY = 250
!!! WARNING : global variable !!!
type(massbody) :: planets(NB_BODY)
call init_random()
call create_some_planets(planets, 1664e3, S_WIDTH , S_HEIGHT)
call print_barycentre_bodies(planets)
! STOP 'BEFORE CRASH'
call print_barycentre_bodies(planets, 'begin')
call la_grande_boucle(0, 2000, planets)
@ -33,7 +31,7 @@ program animation
!-----------------------------------------------------------------------
contains
!-
! fabrication d'une de la sequence complete
! fabrication de la sequence complete
!-
subroutine la_grande_boucle(start, nbre, moons)
integer, intent(in) :: start, nbre
@ -47,19 +45,21 @@ subroutine la_grande_boucle(start, nbre, moons)
! else use ?????ing
call deplace_les_planetes(moons, .TRUE.)
! computing the field (used as a HF in Povray
write (filename, "(a, i5.5, a)") 'WS/nanim/', pass, '.pgm'
write(0, '(3I5, " * ", a20)') start, nbre, pass, filename
call build_and_write_a_field(S_WIDTH, S_HEIGHT, moons, filename)
write (filename, "(a, i5.5, a)") 'WS/data/', pass, '.txt'
call save_bodies_to_txt_file (planets, filename)
! save the current bodies positions (can be used in gnuplot)
! write (filename, "(a, i5.5, a)") 'WS/data/', pass, '.txt'
! call save_bodies_to_txt_file (planets, filename)
write (filename, "(a, i5.5, a)") 'WS/colmap/', pass, '.pnm'
call make_color_map(planets, filename, S_WIDTH, S_HEIGHT)
enddo
call print_barycentre_bodies(moons)
call print_barycentre_bodies(moons, 'end')
end subroutine
@ -72,11 +72,11 @@ subroutine make_color_map(moons, fname, width, height)
character(len=*), intent(in) :: fname
integer, intent(in) :: width, height
type(t_pixrgb), dimension(:,:), allocatable :: cmap
integer :: ix, iy, near, ipl
integer :: errcode
real :: curdist, smalldist
real :: fx, fy, dx, dy
type(t_pixrgb), dimension(:,:), allocatable :: cmap
integer :: ix, iy, near, ipl
integer :: errcode
real :: curdist, smalldist
real :: fx, fy, dx, dy
write(0, *) "colmap ", ubound(moons, 1), "moons to ", trim(fname)
! write(0, *) "mapsize ", width, height
@ -107,14 +107,14 @@ subroutine make_color_map(moons, fname, width, height)
endif
end do ! loop on all the moons, ipl index
cmap(ix, iy)%r = mod(near*13, 255)
cmap(ix, iy)%g = mod(near*14, 255)
cmap(ix, iy)%b = mod(near*15, 255)
cmap(ix, iy)%r = mod(near*3, 255)
cmap(ix, iy)%g = mod(near*4, 255)
cmap(ix, iy)%b = mod(near*5, 255)
enddo
enddo
call rgbpix_spit_as_pnm(cmap, fname)
call rgbpix_spit_as_pnm_8(cmap, fname)
deallocate(cmap)
@ -131,9 +131,9 @@ subroutine deplace_les_planetes(moons, clipit)
logical, intent(in) :: clipit
integer :: foo
real :: depx, depy
real :: depx, depy, coef
integer, parameter :: EE = 51
integer, parameter :: EE = 100
integer :: SW = S_WIDTH - EE
integer :: SH = S_HEIGHT - EE
@ -162,7 +162,12 @@ subroutine deplace_les_planetes(moons, clipit)
if (moons(foo)%posy .LT. EE) moons(foo)%posy = SH
endif
moons(foo)%heading = moons(foo)%heading + (0.78*(rand()-0.50))
if (rand() .LT. 0.15) then
coef = 1.63
else
coef = 0.78
endif
moons(foo)%heading = moons(foo)%heading + (coef*(rand()-0.42))
if (moons(foo)%heading .GT. 6.283185307) moons(foo)%heading = 0.0
if (moons(foo)%heading .LT. 0.000000001) moons(foo)%heading = 0.0

View File

@ -23,7 +23,7 @@ echo "file type :" $filetype
case $filetype in
PNG) extension=".png" ;;
Netpbm) extension=".pgm" ;;
*) extension=".binary" ;;
*) extension=".pnm" ;;
esac
echo "extension :" $extension

View File

@ -12,7 +12,7 @@ program essai
call init_random()
call essai_near_planet(1024, 1024)
call essai_near_planet(2048, 2048)
STOP 'BECAUSE YOLO'
@ -74,7 +74,7 @@ subroutine essai_near_planet(nbplanets, szfield)
enddo
call rgbpix_spit_as_pnm(cmap, "rgb.pnm")
call rgbpix_spit_as_pnm_8(cmap, "rgb.pnm")
end subroutine
!-----------------------------------------------------------------------

View File

@ -2,7 +2,7 @@
set -e
POVOPT=" -q9 +a -W1024 -H768 +WT2 -d -v "
POVOPT=" -q9 +a -W1280 -H1024 +WT2 -d -v "
SOURCE="vision.pov"
TMPF="/dev/shm/gravfield.png"
@ -29,10 +29,12 @@ convert ${TMPF} \
-fill Orange \
-annotate +15+22 "$timestamp" \
-annotate +15+48 "$texte" \
-pointsize 16 \
-pointsize 14 \
-gravity south-west \
-annotate +15+9 "tTh & Konrad" \
${outfile}
sleep 3
}
# ---------------------------------------
@ -51,5 +53,6 @@ ffmpeg -nostdin \
-metadata artist='---{ tTh and Konrad }---' \
-metadata title="Experiment on Gravity Field" \
-c:v libx264 -pix_fmt yuv420p \
bar.mp4
-preset veryslow \
gravity-field.mp4

View File

@ -0,0 +1,23 @@
!-----------------------------------------------------------------------
!-
! convertir un dum de champ de reel en .PNG
! nouveau 17 decembre 2022
!-
!-----------------------------------------------------------------------
program realdump2png
use realfield
implicit none
stop "BECAUSE I'M TIRED *NOW*"
contains
!-----------------------------------------------------------------------
subroutine load_a_dump_file(fname, location)
character(len=*), intent(in) :: fname
real, dimension(:,:), intent(inout) :: location
end subroutine
!-----------------------------------------------------------------------
end program
!-----------------------------------------------------------------------

View File

@ -29,7 +29,7 @@ subroutine compute_barycentre_bodies(astres, bcx, bcy)
integer :: foo
real :: cx, cy
! May be we have to use DOUBLE RPECSION here ?
! May be we have to use DOUBLE PRECSION here ?
cx = 0.0
cy = 0.0
do foo=1, ubound(astres, 1)
@ -40,12 +40,13 @@ subroutine compute_barycentre_bodies(astres, bcx, bcy)
bcy = cy / real(ubound(astres, 1))
end subroutine
!-----------------------------------------------------------------------
subroutine print_barycentre_bodies(astres)
subroutine print_barycentre_bodies(astres, title)
type(massbody), intent(in) :: astres(:)
real :: cx, cy
character(len=*), intent(in) :: title
real :: cx, cy
call compute_barycentre_bodies(astres, cx, cy)
print *, "barycentre : ", cx, cy
print *, "barycentre {", title, "} ", cx, cy
end subroutine
!-----------------------------------------------------------------------
@ -81,8 +82,8 @@ subroutine create_some_planets(planets, coef, sx, sy)
!-
planets(foo)%posx = rand() * real(sx-1)
planets(foo)%posy = rand() * real(sy-1)
planets(foo)%mass = 7e6 + coef*foo
planets(foo)%heading = 2 * 3.14159 * rand()
planets(foo)%mass = 7.12e6 + coef*foo
planets(foo)%heading = 2 * 3.141592654 * rand()
if (rand() .LT. 0.15) planets(foo)%speed = 3.14159
planets(foo)%serial = foo*2 + 120
endif

View File

@ -4,9 +4,13 @@ set -e # stop on error
make animation
date > animation.log
LOG="log.animation"
time ./animation | tee animation.log
date >> $LOG
./encode.sh WS/nanim/ quux.mp4
./encode.sh WS/colmap/ zzz.mp4
time ./animation | tee -a $LOG
./encode.sh WS/nanim/ gravity-field.mp4
./encode.sh WS/colmap/ gravity-colmap.mp4
ls -rtl *.mp4 >> $LOG

View File

@ -45,7 +45,7 @@ texture {
}
}
object { GravityField scale <4, 0.60, 4> }
object { GravityField scale <4.10, 0.60, 4.10> }
// ----------------------------------------------------------------------
@ -58,13 +58,13 @@ merge {
XXX */
light_source { < -2, 9.3, -7> color Gray90 }
light_source { < -6, 9.3, -8> color Orange*0.75 }
light_source { < -15, 2.3, 17> color Green*0.25 }
light_source { < -6, 9.3, -8> color Orange*0.65 }
light_source { < -15, 2.3, 17> color Gray70 }
// ----------------------------------------------------------------------
camera {
location <-8, 4-(1.5*NormClock), 1 + (5*NormClock)>
location <-8, 4-(1.7*NormClock), -4 + (11.66*NormClock)>
look_at <0, 0, 0>
right x*image_width/image_height
angle 33