Compare commits

...

8 Commits

Author SHA1 Message Date
tth
101ae7c1e8 minor tewaeks 2022-03-20 14:25:05 +01:00
tth
7a534be476 oups... 2022-03-19 02:45:54 +01:00
tth
9dab731285 more experiments 2022-03-18 23:41:42 +01:00
tth
96834f5f21 cubic version in progress, again 2022-03-18 23:38:23 +01:00
tth
8b14eaca25 cubic version in progress 2022-03-18 23:36:56 +01:00
tth
6d51ad3947 non working code inside 2022-03-18 22:08:08 +01:00
tth
d987ff1685 dir struct 2022-03-18 22:07:01 +01:00
tth
cf1323e1a8 better random_pv 2022-03-18 22:06:12 +01:00
13 changed files with 68 additions and 36 deletions

View File

@ -72,12 +72,17 @@ module bloubspace
type(t_bloubs), intent (out) :: blb
blb%px = 4.33 * (rand() - 0.50)
blb%py = 3.33 * (rand() - 0.50)
blb%py = 3.70 * (rand() - 0.50)
blb%pz = 4.51 * (rand() - 0.50)
blb%vx = (rand()) / 2.000
blb%vy = (rand()) / 2.900
if (blb%px .LT. 0.0) blb%vx = -blb%vx
blb%vy = (rand()) / 3.200
if (blb%py .LT. 0.0) blb%vy = -blb%vx
blb%vz = (rand()) / 2.000
if (blb%pz .LT. 0.0) blb%vz = -blb%vz
blb%state = 0
blb%alive = .TRUE.

View File

@ -1,6 +1,6 @@
#!/bin/bash
DDIR="frames/"
DDIR="frames/a"
ffmpeg -nostdin \
-loglevel warning \

View File

@ -3,10 +3,10 @@ program movebloubs
use bloubspace
implicit none
integer, parameter :: NB_MAX_BLOUBS = 200000
integer, parameter :: NB_MAX_BLOUBS = 2000000
! --------------------------------------------------------------
character(200) :: infile
character(300) :: infile
integer :: errcode, i
integer :: nbgot
type(t_bloubs), dimension(:), allocatable :: bloubs
@ -32,12 +32,13 @@ program movebloubs
write(0, '(A,I6,1X,A)') "slurped ", nbgot, "bloubs"
do i=1,nbgot
write(6, '(A8, 1X, 1L, 1X, I2, 3X, F8.3, 3X, 3F8.3, 3X, 3F8.3)') &
write(6, '(A8, 1X, 1L, 1X, I2, 3X, F8.3, 3X, 3F8.3, 3X, 3F8.3, 1X, I4)') &
bloubs(i)%nick, bloubs(i)%alive, &
bloubs(i)%state, &
bloubs(i)%radius, &
bloubs(i)%px, bloubs(i)%py, bloubs(i)%pz, &
bloubs(i)%vx, bloubs(i)%vy, bloubs(i)%vz
bloubs(i)%vx, bloubs(i)%vy, bloubs(i)%vz, &
bloubs(i)%age
enddo
end program

View File

@ -1,5 +1,9 @@
program mergebloubs
!-------------------------------------------!
! THIS IS A BIG MESS OF BUGS !
!-------------------------------------------!
use bloubspace
implicit none
@ -21,7 +25,8 @@ program mergebloubs
call getarg(1, infile)
call getarg(2, outfile)
write(0, '(2A20, I8)') trim(infile), trim(outfile), NB_MAX_BLOUBS
write(0, '(A, 2A20, I8)') "*** mergebloubs ", &
trim(infile), trim(outfile), NB_MAX_BLOUBS
! --------------- allocate memory for the people
@ -61,6 +66,11 @@ program mergebloubs
STOP " : ERR READING FIRST BLOUB"
endif
call display_bloub (bloub, "first bloub")
write(outu, iostat=errcode) bloub
if (0 .ne. errcode) then
STOP " : FIRST BLOUB, WRITE ERROR TO " // trim(outfile)
endif
les_bloubs(idx) = bloub
idx = idx + 1
@ -69,7 +79,7 @@ program mergebloubs
do ! infinite loop
print *, "============ PASS ", idx
! print *, "============ PASS ", idx
if (idx .EQ. NB_MAX_BLOUBS) then
write(0, '(I8, A)') idx, " max number of bloubs reached"
exit
@ -112,7 +122,7 @@ program mergebloubs
les_bloubs(idx) = bloub
endif
write(outu, iostat=errcode) bloub ! no error control ?
write(outu, iostat=errcode) bloub
if (0 .ne. errcode) then
STOP " : WRITE ERROR TO " // trim(outfile)
endif
@ -149,7 +159,7 @@ contains
blr%vy = (bla%vy + blb%vy) / 2.0
blr%vz = (bla%vz + blb%vz) / 2.0
blr%radius = (bla%radius + blb%radius) / 1.414
blr%radius = (bla%radius + blb%radius) / 2.718
blr%age = min(bla%age, blb%age)
! bring it to life !

View File

@ -58,7 +58,7 @@ program movebloubs
! moving, morphing and boundingboxing
call move_bloub (bloub, 0.185)
call bound_a_blob (bloub)
if (bloub%radius .GT. 0.0151) then
if (bloub%radius .GT. 0.0155) then
bloub%radius = bloub%radius * 0.9970
endif
@ -87,11 +87,16 @@ program movebloubs
! ok, we have read all the bloubs in the input file
! insert some fancy conditional here
if (compteur .LT. 200) then
call add_more_bloubs(outu, 5, 0.1333)
endif
! insert some very fancy conditional here
if (compteur .LT. 3000) then
rnd = rand()
write (0, '(A,1X,F9.6)') "try to add bloubs, rnd is", rnd
if (rnd .LT. 0.0450) then
call add_more_bloubs(outu, 24, 0.0990)
if (rnd .LT. 0.0455) then
call add_more_bloubs(outu, 24, 0.0999)
endif
endif
@ -115,7 +120,7 @@ contains
type(t_bloubs) :: bloub
integer :: foo, count
count = nbre+mod(irand(), 7)
count = nbre+mod(irand(), 9)
write(0, '(A,I4,1X,A)') "adding", count, "bloubs"
do foo=1, count

View File

@ -10,6 +10,7 @@ TMPPNG="/dev/shm/bloubs7.png"
POVOPT="+Q9 +a -v -d -W1600 -H1200 -WT2"
DDIR="frames/a"
LOGERR="log.error"
TXTCOLOR="RosyBrown"
# --- put the work file in ramdisk
BLBS_IN="/dev/shm/in.blbs"
@ -30,7 +31,7 @@ printf "\n#declare NbImg = %d;\n" $NBIMG > WS/nbimg.inc
# first, we have to make a seminal buch of bloubs
# --> this function need to be parametrizable
#
./genbloubs ${BLBS_IN} 3000
./genbloubs ${BLBS_IN} 3
for idx in $(seq 0 $((NBIMG-1)) )
do
@ -54,12 +55,11 @@ do
convert ${TMPPNG} \
-font Courier-Bold \
-pointsize 24 \
-fill Yellow \
-fill "$TXTCOLOR" \
-gravity south-east \
-annotate +25+5 "$td" \
-gravity south-west \
-annotate +25+5 "$hi" \
-fill Yellow \
-pointsize 48 \
-gravity north-east \
-annotate +25+5 "$count" \

View File

@ -35,8 +35,8 @@ object {
union {
plane { <1, 0, 0>, -32 }
plane { <1, 0, 0>, 32 }
plane { <0, 1, 0>, -23 }
plane { <0, 1, 0>, 23 }
plane { <0, 1, 0>, -24 }
plane { <0, 1, 0>, 24 }
plane { <0, 0, 1>, 50 }
texture {
@ -50,7 +50,7 @@ object {
#declare BH = 5; // H = taille en horizontal
#declare BV = 5; // V = taille en vertical
#declare BR = 0.028;
#declare BR = 0.032;
#declare Une_Borne = object
{

View File

@ -98,7 +98,7 @@ end subroutine
! d'après les pages 91/92 du livre de Roger T Stevens
! "Fractal programming in C"
!
subroutine pickover_0(pic, count)
subroutine plot_pickover(pic, count)
implicit none
integer, intent(inout), dimension (:,:) :: pic
integer, intent(in) :: count
@ -131,7 +131,7 @@ subroutine pickover_0(pic, count)
deallocate(points)
end subroutine pickover_0
end subroutine plot_pickover
!-----------------------------------------------------
!

View File

@ -22,7 +22,7 @@ subroutine list_points3d(array, start, length)
endif
! send oi to stdout.
do i = start, start+length
do i = start, start+length-1
print *, array(i)%x, array(i)%y, array(i)%z, array(i)%seq
enddo

View File

@ -1,7 +1,5 @@
#!/usr/bin/awk
BEGIN {
print "// generated file, don't touch it bastard !"
print "#declare Pickover = object {"
@ -10,11 +8,11 @@ BEGIN {
# for every line
{
printf "sphere { <%f, %f, %f> 0.015 }\n", $1, $2, $3
printf "object { Truc translate <%f, %f, %f> }\n", $1, $2, $3
}
END {
print "} }"
print "// done"
print "// done", NR
}

View File

@ -6,11 +6,11 @@ global_settings {
}
#include "colors.inc"
#include "WS/pickover.inc"
#declare Tiers = NBPASS * 0.3333333;
#declare CK = (clock/Tiers)*180;
// --------------------------------------------------------------
#declare Rep = object
{
union {
@ -20,9 +20,19 @@ union {
cylinder { 0, <0, 0, 2>, RB pigment { color Blue } }
}
}
// object { Rep translate <-1, 0.10, -1> }
// --------------------------------------------------------------
#declare TS = 0.017;
#declare Truc = object
{
box { <-TS, -TS, -TS>, <TS, TS, TS> }
}
#include "WS/pickover.inc"
object {
object {
Pickover
@ -66,7 +76,7 @@ camera {
location <XCAM, YCAM, ZCAM>
look_at <0, 2.09, 0>
right x*image_width/image_height
angle 86
angle 92
}
// ----------------------------------------------------------

View File

@ -3,8 +3,12 @@
POVOPT=" -d +q9 +a +W1920 +H1080 -v +WT4"
PASS=600
ERR="/tmp/pov.error"
POVINC="WS/pickover.inc"
for pass in $(seq 0 $PASS)
./pickover foo.pgm | awk -f pick2pov.awk > $POVINC
head $POVINC
for pass in $(seq 0 $(( PASS-1 )) )
do
dstname=$(printf "frames/pick3d/%05d.png" $pass)

View File

@ -11,7 +11,7 @@ program pickover
implicit none
integer, dimension(800, 600) :: picz
integer, dimension(1024, 768) :: picz
integer :: argc
character(200) :: filename
double precision, dimension(4) :: coefs
@ -36,9 +36,8 @@ program pickover
coefs(1) = 2.24 ; coefs(2) = 0.43
coefs(3) = -0.65 ; coefs(4) = -2.43
call compute_pickover(points, coefs)
call list_points3d(points, 2, 32000)
call list_points3d(points, 2, 42000)
end program