Compare commits
No commits in common. "307b5907964a0cdcf787ab2ef6129237c4d6e65a" and "47a383f3b6a5c71e7ddb268b69320b967cd567d7" have entirely different histories.
307b590796
...
47a383f3b6
@ -1,39 +0,0 @@
|
|||||||
# What is a bloub ?
|
|
||||||
|
|
||||||
## Philosophie
|
|
||||||
|
|
||||||
Bonne question, mais nous n'avons pas le temps, point suivant ?
|
|
||||||
|
|
||||||
En fait, si, il est tard, mais j'ai envie de raconter des
|
|
||||||
conneries.
|
|
||||||
|
|
||||||
## Technique
|
|
||||||
|
|
||||||
Voici la version du _Sat 19 Feb 2022 12:37:42 AM CET_
|
|
||||||
|
|
||||||
```
|
|
||||||
type t_bloubs
|
|
||||||
character(8) :: nick
|
|
||||||
logical :: alive
|
|
||||||
integer :: num ! ???
|
|
||||||
real :: px, py, pz
|
|
||||||
real :: vx, vy, vz
|
|
||||||
real :: radius
|
|
||||||
integer :: age
|
|
||||||
end type t_bloubs
|
|
||||||
```
|
|
||||||
|
|
||||||
Certains champs sont assez explicites, comme le nick, la position
|
|
||||||
dans l'espace, le rayon (pour nous, un bloub est
|
|
||||||
une entité abstraite assimilable à une bubulle)
|
|
||||||
ou la vitesse sur les trois axes.
|
|
||||||
D'autres, comme `alive`, sont
|
|
||||||
plus délicates à expliquer, sauf si l'on considère que les
|
|
||||||
bloubs sont zombifiables.
|
|
||||||
|
|
||||||
D'autres, comme l'age, sont bien plus sujettes à de diverses
|
|
||||||
interprétations. doit-on incrémenter l'age à chaque tick d'horloge
|
|
||||||
ou à chaque évènement discret ? Et à quel age un bloub devient-il
|
|
||||||
trop vieux, à quel age va-t-il mourir ?
|
|
||||||
|
|
||||||
|
|
3
Fraktalism/.gitignore
vendored
3
Fraktalism/.gitignore
vendored
@ -1,12 +1,9 @@
|
|||||||
|
|
||||||
julia
|
julia
|
||||||
pickover
|
pickover
|
||||||
lorentz
|
|
||||||
|
|
||||||
*.pgm
|
*.pgm
|
||||||
*.gif
|
*.gif
|
||||||
*.asc
|
*.asc
|
||||||
*.png
|
*.png
|
||||||
*.mp4
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
GFOPT = -Wall -Wextra -time -g -Imods/
|
GFOPT = -Wall -Wextra -time -g
|
||||||
|
|
||||||
# ---------------------------------------------
|
# ---------------------------------------------
|
||||||
|
|
||||||
@ -9,8 +9,7 @@ spitpgm.o: spitpgm.f90 Makefile
|
|||||||
fraktals.o: fraktals.f90 Makefile
|
fraktals.o: fraktals.f90 Makefile
|
||||||
gfortran $(GFOPT) -c $<
|
gfortran $(GFOPT) -c $<
|
||||||
|
|
||||||
OBJS = spitpgm.o fraktals.o
|
OBJS = spitpgm.o fraktals.o
|
||||||
DOT_O = mods/points3d.o
|
|
||||||
|
|
||||||
# ---------------------------------------------
|
# ---------------------------------------------
|
||||||
|
|
||||||
@ -18,17 +17,11 @@ julia: julia.f90 Makefile $(OBJS)
|
|||||||
gfortran $(GFOPT) $< $(OBJS) -o $@
|
gfortran $(GFOPT) $< $(OBJS) -o $@
|
||||||
|
|
||||||
pickover: pickover.f90 Makefile $(OBJS)
|
pickover: pickover.f90 Makefile $(OBJS)
|
||||||
gfortran $(GFOPT) $< $(OBJS) $(DOT_O) -o $@
|
|
||||||
|
|
||||||
lorentz: lorentz.f90 Makefile $(OBJS)
|
|
||||||
gfortran $(GFOPT) $< $(OBJS) -o $@
|
gfortran $(GFOPT) $< $(OBJS) -o $@
|
||||||
|
|
||||||
# ---------------------------------------------
|
# ---------------------------------------------
|
||||||
|
|
||||||
lorentz.pgm: lorentz Makefile
|
foo.pgm: pickover Makefile
|
||||||
./lorentz $@ > /dev/null
|
./pickover $@ > /dev/null
|
||||||
|
|
||||||
pickover.pgm: pickover Makefile
|
|
||||||
time ./pickover $@ > /dev/null
|
|
||||||
|
|
||||||
# ---------------------------------------------
|
# ---------------------------------------------
|
||||||
|
@ -11,24 +11,8 @@ qui montre ma première expérience dans ce domaine.
|
|||||||
Le gros des calculs de fractales est fait dans XXX, et la gestion
|
Le gros des calculs de fractales est fait dans XXX, et la gestion
|
||||||
des pixels 'physiques' est fait dans YYY
|
des pixels 'physiques' est fait dans YYY
|
||||||
|
|
||||||
Les fonctions d'usage général sont dans
|
|
||||||
[mods/](répertoire mods/) ave trop peu
|
|
||||||
[d'explications](mods/documentation.md)
|
|
||||||
|
|
||||||
Des scripts _shell_ sont utilisés pour construire les vidéos.
|
Des scripts _shell_ sont utilisés pour construire les vidéos.
|
||||||
|
|
||||||
## File Formats
|
|
||||||
|
|
||||||
|
|
||||||
```
|
|
||||||
type t_point3d
|
|
||||||
double precision :: x, y, z
|
|
||||||
integer :: seq
|
|
||||||
end type t_point3d
|
|
||||||
```
|
|
||||||
|
|
||||||
Generally writen as a *sequencial unformated* file.
|
|
||||||
|
|
||||||
## TODO
|
## TODO
|
||||||
|
|
||||||
- Voir de près le calcul du cadrage
|
- Voir de près le calcul du cadrage
|
||||||
|
1
Fraktalism/WS/.gitignore
vendored
1
Fraktalism/WS/.gitignore
vendored
@ -1 +0,0 @@
|
|||||||
*.inc
|
|
@ -1,11 +1,5 @@
|
|||||||
module fraktals
|
module fraktals
|
||||||
|
|
||||||
use points3d
|
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
!-----------------------------------------------------
|
|
||||||
|
|
||||||
!-----------------------------------------------------
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
!-----------------------------------------------------
|
!-----------------------------------------------------
|
||||||
@ -57,42 +51,6 @@ subroutine simple_julia(pic, cx, cy, maxiter)
|
|||||||
enddo
|
enddo
|
||||||
|
|
||||||
end subroutine simple_julia
|
end subroutine simple_julia
|
||||||
!-----------------------------------------------------
|
|
||||||
!
|
|
||||||
! d'après les pages 91/92 du livre de Roger T Stevens
|
|
||||||
! "Fractal programming in C"
|
|
||||||
!
|
|
||||||
subroutine compute_pickover(array, coefs)
|
|
||||||
type(t_point3d), dimension(:) :: array
|
|
||||||
double precision, dimension(4) :: coefs
|
|
||||||
|
|
||||||
double precision :: xa, ya, za, xb, yb, zb
|
|
||||||
integer :: i
|
|
||||||
! print *, "coefs ", coefs
|
|
||||||
|
|
||||||
write(0, '(1X, A18, I9)') "compute pickover ", ubound(array, 1)
|
|
||||||
|
|
||||||
xa = 0.00 ; ya = 0.00 ; za = 0.0
|
|
||||||
|
|
||||||
do i=1, ubound(array, 1)
|
|
||||||
|
|
||||||
xb = sin(coefs(1)*ya) - za*cos(coefs(2)*xa)
|
|
||||||
yb = za*sin(coefs(3)*xa) - cos(coefs(4)*ya)
|
|
||||||
zb = sin(xa)
|
|
||||||
|
|
||||||
array(i)%x = xb
|
|
||||||
array(i)%y = yb
|
|
||||||
array(i)%z = zb
|
|
||||||
array(i)%seq = i
|
|
||||||
|
|
||||||
xa = xb ; ya = yb ; za = zb
|
|
||||||
|
|
||||||
! print *, xb, yb, zb
|
|
||||||
|
|
||||||
enddo
|
|
||||||
|
|
||||||
end subroutine
|
|
||||||
|
|
||||||
!-----------------------------------------------------
|
!-----------------------------------------------------
|
||||||
!
|
!
|
||||||
! d'après les pages 91/92 du livre de Roger T Stevens
|
! d'après les pages 91/92 du livre de Roger T Stevens
|
||||||
@ -103,60 +61,37 @@ subroutine pickover_0(pic, count)
|
|||||||
integer, intent(inout), dimension (:,:) :: pic
|
integer, intent(inout), dimension (:,:) :: pic
|
||||||
integer, intent(in) :: count
|
integer, intent(in) :: count
|
||||||
|
|
||||||
type(t_point3d), dimension(:), allocatable :: points
|
double precision :: xa, ya, za, xb, yb, zb
|
||||||
double precision, dimension(4) :: coefs
|
double precision :: ka, kb, kc, kd
|
||||||
integer :: i, w, h, px, py, errcode
|
integer :: i, w, h, px, py
|
||||||
|
|
||||||
write(0, '(1X, A18 , I9)') "pickover_0 ", count
|
ka = 2.24 ; kb = 0.43 ; kc = -0.65 ; kd = -2.43
|
||||||
|
xa = 0.00 ; ya = 0.00 ; za = 0.0
|
||||||
allocate(points(count), stat=errcode)
|
|
||||||
if (0 .NE. errcode) then
|
|
||||||
STOP " : NO ENOUGH MEMORY"
|
|
||||||
endif
|
|
||||||
|
|
||||||
coefs(1) = 2.24 ; coefs(2) = 0.43
|
|
||||||
coefs(3) = -0.65 ; coefs(4) = -2.43
|
|
||||||
call compute_pickover(points, coefs)
|
|
||||||
|
|
||||||
w = ubound(pic, 1)
|
w = ubound(pic, 1)
|
||||||
h = ubound(pic, 2)
|
h = ubound(pic, 2)
|
||||||
|
|
||||||
do i=1, ubound(points, 1)
|
do i=1, count
|
||||||
|
|
||||||
px = (points(i)%x * (w/4.09)) + (w / 2)
|
xb = sin(ka*ya) - za*cos(kb*xa)
|
||||||
py = (points(i)%y * (h/4.09)) + (h / 2)
|
yb = za*sin(kc*xa) - cos(kd*ya)
|
||||||
pic(px, py) = 255 ! WARNING COREDUMP
|
zb = sin(xa)
|
||||||
|
|
||||||
|
px = (xb * (w/4.05)) + (w / 2)
|
||||||
|
py = (yb * (h/4.05)) + (h / 2)
|
||||||
|
|
||||||
|
pic(px, py) = 200 ! WARNING COREDUMP
|
||||||
|
|
||||||
|
print *, xb, yb, zb
|
||||||
|
|
||||||
|
xa = xb ; ya = yb ; za = zb
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
deallocate(points)
|
|
||||||
|
|
||||||
end subroutine pickover_0
|
end subroutine pickover_0
|
||||||
|
|
||||||
!-----------------------------------------------------
|
!-----------------------------------------------------
|
||||||
!
|
|
||||||
! d'après les pages NN/NN du livre de Roger T Stevens
|
|
||||||
! "Fractal programming in C"
|
|
||||||
!
|
|
||||||
subroutine lorentz_0(pic, count)
|
|
||||||
implicit none
|
|
||||||
integer, intent(inout), dimension (:,:) :: pic
|
|
||||||
integer, intent(in) :: count
|
|
||||||
|
|
||||||
! XXX double precision :: xa, ya, za, xb, yb, zb
|
|
||||||
! XXX double precision :: ka, kb, kc, kd
|
|
||||||
! XXX integer :: i, w, h, px, py
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end subroutine lorentz_0
|
|
||||||
|
|
||||||
!-----------------------------------------------------------
|
|
||||||
! -- some support functions --
|
! -- some support functions --
|
||||||
!-----------------------------------------------------------
|
!-----------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
!-----------------------------------------------------------
|
|
||||||
|
|
||||||
function dist0 (x, y)
|
function dist0 (x, y)
|
||||||
implicit none
|
implicit none
|
||||||
@ -165,7 +100,7 @@ function dist0 (x, y)
|
|||||||
dist0 = ( x*x + y*y )
|
dist0 = ( x*x + y*y )
|
||||||
end function
|
end function
|
||||||
|
|
||||||
!-----------------------------------------------------------
|
!-----------------------------------------------------
|
||||||
function modulus2(pt)
|
function modulus2(pt)
|
||||||
implicit none
|
implicit none
|
||||||
complex, intent(in) :: pt
|
complex, intent(in) :: pt
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
!
|
|
||||||
! this is the main programm
|
|
||||||
!
|
|
||||||
!-----------------------------------------------------
|
|
||||||
|
|
||||||
program lorentz
|
|
||||||
|
|
||||||
use spitpgm
|
|
||||||
use fraktals
|
|
||||||
|
|
||||||
implicit none
|
|
||||||
|
|
||||||
integer, dimension(800, 600) :: picz
|
|
||||||
integer :: argc
|
|
||||||
character(200) :: filename
|
|
||||||
|
|
||||||
argc = IARGC()
|
|
||||||
if (1 .NE. argc) then
|
|
||||||
STOP ": LORENTZ NEED A FILENAME !"
|
|
||||||
endif
|
|
||||||
|
|
||||||
call getarg(1, filename)
|
|
||||||
|
|
||||||
write (0, "(A)") "Lorentz -> "//trim(filename)
|
|
||||||
|
|
||||||
call lorentz_0(picz, 50000)
|
|
||||||
call spit_as_pgm_8(picz, trim(filename))
|
|
||||||
|
|
||||||
end program
|
|
||||||
|
|
||||||
!-----------------------------------------------------
|
|
@ -1,9 +0,0 @@
|
|||||||
#
|
|
||||||
# compiling fraktalism's modules
|
|
||||||
#
|
|
||||||
|
|
||||||
GFOPT = -Wall -Wextra -time -g
|
|
||||||
|
|
||||||
points3d.o: points3d.f90 Makefile
|
|
||||||
gfortran $(GFOPT) -c $<
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
|||||||
# Modules
|
|
||||||
|
|
||||||
|
|
||||||
Premier point : trouver les bonnes options de gfortran pour
|
|
||||||
définir l'emplacement des `.mod`.
|
|
||||||
|
|
||||||
Deuxième point : construire un Makefile cohérent d'un bout à l'autre,
|
|
||||||
avec un script de build bien robuste.
|
|
||||||
|
|
||||||
Troisième point : Faire la [documentation](documentation.md)
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
|||||||
# La doc (enfin !)
|
|
||||||
|
|
||||||
## Points 3d
|
|
||||||
|
|
||||||
|
|
||||||
## Portable Net Map
|
|
||||||
|
|
||||||
.pgm
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
|||||||
module points3d
|
|
||||||
|
|
||||||
implicit none
|
|
||||||
!-----------------------------------------------------
|
|
||||||
type t_point3d
|
|
||||||
double precision :: x, y, z
|
|
||||||
integer :: seq
|
|
||||||
end type t_point3d
|
|
||||||
|
|
||||||
!-----------------------------------------------------
|
|
||||||
contains
|
|
||||||
|
|
||||||
|
|
||||||
subroutine list_points3d(array, start, length)
|
|
||||||
type(t_point3d), dimension(:), intent(in) :: array
|
|
||||||
integer, intent(in) :: start, length
|
|
||||||
integer :: sz, i
|
|
||||||
|
|
||||||
sz = ubound(array, 1)
|
|
||||||
if ((start+length) .GT. sz) then
|
|
||||||
STOP ' : OUT OF BOUND'
|
|
||||||
endif
|
|
||||||
|
|
||||||
! send oi to stdout.
|
|
||||||
do i = start, start+length
|
|
||||||
print *, array(i)%x, array(i)%y, array(i)%z, array(i)%seq
|
|
||||||
enddo
|
|
||||||
|
|
||||||
end subroutine list_points3d
|
|
||||||
|
|
||||||
!-----------------------------------------------------
|
|
||||||
|
|
||||||
end module points3d
|
|
@ -1,20 +0,0 @@
|
|||||||
#!/usr/bin/awk
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
BEGIN {
|
|
||||||
print "// generated file, don't touch it bastard !"
|
|
||||||
print "#declare Pickover = object {"
|
|
||||||
print "union {"
|
|
||||||
}
|
|
||||||
|
|
||||||
# for every line
|
|
||||||
{
|
|
||||||
printf "sphere { <%f, %f, %f> 0.015 }\n", $1, $2, $3
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
END {
|
|
||||||
print "} }"
|
|
||||||
print "// done"
|
|
||||||
}
|
|
@ -1,72 +0,0 @@
|
|||||||
#version 3.7;
|
|
||||||
|
|
||||||
global_settings {
|
|
||||||
ambient_light rgb <0.12, 0.04, 0.04>
|
|
||||||
assumed_gamma 1.0
|
|
||||||
}
|
|
||||||
|
|
||||||
#include "colors.inc"
|
|
||||||
#include "WS/pickover.inc"
|
|
||||||
|
|
||||||
#declare Tiers = NBPASS * 0.3333333;
|
|
||||||
#declare CK = (clock/Tiers)*180;
|
|
||||||
|
|
||||||
#declare Rep = object
|
|
||||||
{
|
|
||||||
union {
|
|
||||||
#local RB = 0.015;
|
|
||||||
cylinder { 0, <2, 0, 0>, RB pigment { color Red } }
|
|
||||||
cylinder { 0, <0, 2, 0>, RB pigment { color Green } }
|
|
||||||
cylinder { 0, <0, 0, 2>, RB pigment { color Blue } }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// object { Rep translate <-1, 0.10, -1> }
|
|
||||||
|
|
||||||
object {
|
|
||||||
object {
|
|
||||||
Pickover
|
|
||||||
texture {
|
|
||||||
pigment { color srgb <0.35, 0.45, 0.80> }
|
|
||||||
finish { phong 0.38 metallic 0.55 }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#if (clock < (Tiers))
|
|
||||||
rotate x*(CK)
|
|
||||||
#elseif (clock < (Tiers*2))
|
|
||||||
rotate y*(CK)
|
|
||||||
#else
|
|
||||||
rotate z*(CK)
|
|
||||||
#end
|
|
||||||
translate y*2.25
|
|
||||||
}
|
|
||||||
|
|
||||||
// ----------------------------------------------------------
|
|
||||||
|
|
||||||
plane {
|
|
||||||
<0, 1, 0>, 0
|
|
||||||
texture {
|
|
||||||
pigment { color srgb <0.133, 0.155, 0.111> }
|
|
||||||
finish { phong 0.18 metallic 0.55 }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ----------------------------------------------------------
|
|
||||||
|
|
||||||
light_source { <-12, 17, -11> color Gray90 }
|
|
||||||
light_source { <-11, 11, 9> color Gray60 }
|
|
||||||
|
|
||||||
#declare XCAM = -3.8;
|
|
||||||
#declare YCAM = 3;
|
|
||||||
#declare ZCAM = 2.1;
|
|
||||||
|
|
||||||
camera {
|
|
||||||
location <XCAM, YCAM, ZCAM>
|
|
||||||
look_at <0, 2.09, 0>
|
|
||||||
right x*image_width/image_height
|
|
||||||
angle 86
|
|
||||||
}
|
|
||||||
// ----------------------------------------------------------
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
POVOPT=" -d +q9 +a +W1920 +H1080 -v +WT4"
|
|
||||||
PASS=600
|
|
||||||
ERR="/tmp/pov.error"
|
|
||||||
|
|
||||||
for pass in $(seq 0 $PASS)
|
|
||||||
do
|
|
||||||
|
|
||||||
dstname=$(printf "frames/pick3d/%05d.png" $pass)
|
|
||||||
echo $dstname
|
|
||||||
|
|
||||||
povray -ipick3d.pov -K${pass} \
|
|
||||||
Declare=NBPASS=${PASS} \
|
|
||||||
$POVOPT -O${dstname} 2> $ERR
|
|
||||||
if [ $? -ne 0 ]
|
|
||||||
then
|
|
||||||
tail $ERR
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
sleep 16
|
|
||||||
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
ffmpeg -nostdin \
|
|
||||||
-loglevel warning \
|
|
||||||
-y -r 25 -f image2 -i frames/pick3d/%05d.png \
|
|
||||||
-metadata artist='---[ tTh ]---' \
|
|
||||||
-c:v libx264 -pix_fmt yuv420p \
|
|
||||||
pick3d.mp4
|
|
@ -6,39 +6,25 @@
|
|||||||
program pickover
|
program pickover
|
||||||
|
|
||||||
use spitpgm
|
use spitpgm
|
||||||
use points3d
|
|
||||||
use fraktals
|
use fraktals
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
integer, dimension(800, 600) :: picz
|
integer, dimension(800, 600) :: picz
|
||||||
integer :: argc
|
integer :: argc
|
||||||
character(200) :: filename
|
character(200) :: filename
|
||||||
double precision, dimension(4) :: coefs
|
|
||||||
type(t_point3d), dimension(:), allocatable :: points
|
|
||||||
|
|
||||||
integer :: nbr_points
|
|
||||||
integer :: errcode
|
|
||||||
argc = IARGC()
|
argc = IARGC()
|
||||||
if (1 .NE. argc) then
|
if (1 .NE. argc) then
|
||||||
STOP ": PICKOVER NEED A FILENAME !"
|
STOP ": PICKOVER NEED A FILENAME !"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call getarg(1, filename)
|
call getarg(1, filename)
|
||||||
write (0, "(A)") " *** Pickover -> "//trim(filename)
|
|
||||||
|
|
||||||
nbr_points = 999999
|
write (0, "(A)") "Pickover -> "//trim(filename)
|
||||||
allocate(points(nbr_points), stat=errcode)
|
|
||||||
if (0 .NE. errcode) then
|
|
||||||
STOP " : NO ENOUGH MEMORY"
|
|
||||||
endif
|
|
||||||
|
|
||||||
coefs(1) = 2.24 ; coefs(2) = 0.43
|
call pickover_0(picz, 50000)
|
||||||
coefs(3) = -0.65 ; coefs(4) = -2.43
|
call spit_as_pgm_8(picz, trim(filename))
|
||||||
|
|
||||||
|
|
||||||
call compute_pickover(points, coefs)
|
|
||||||
call list_points3d(points, 2, 32000)
|
|
||||||
|
|
||||||
end program
|
end program
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
ASCFILE="nuage.asc"
|
ASCFILE="nuage.asc"
|
||||||
IMAGE="pickplot.png"
|
IMAGE="pick3d.png"
|
||||||
|
|
||||||
make pickover
|
make pickover
|
||||||
if [ $? -ne 0 ] ; then
|
if [ $? -ne 0 ] ; then
|
||||||
@ -27,7 +27,7 @@ local angle="$2"
|
|||||||
printf "== %s == %3d ==\n" $imgname $angle
|
printf "== %s == %3d ==\n" $imgname $angle
|
||||||
|
|
||||||
gnuplot << __EOC__
|
gnuplot << __EOC__
|
||||||
set term png size 1024,768
|
set term png size 800,480
|
||||||
set output "${imgname}"
|
set output "${imgname}"
|
||||||
|
|
||||||
set title "3D Pickover"
|
set title "3D Pickover"
|
||||||
@ -49,7 +49,7 @@ ddir="frames"
|
|||||||
rm $ddir/p???.png
|
rm $ddir/p???.png
|
||||||
|
|
||||||
idx=0
|
idx=0
|
||||||
for angle in $(seq 0 5 360)
|
for angle in $(seq 0 6 360)
|
||||||
do
|
do
|
||||||
|
|
||||||
fname=$(printf "%s/p%03d.png" $ddir $idx)
|
fname=$(printf "%s/p%03d.png" $ddir $idx)
|
||||||
|
@ -15,7 +15,7 @@ subroutine spit_as_pgm(pic, fname)
|
|||||||
integer :: ix, iy
|
integer :: ix, iy
|
||||||
real :: fk, fpix
|
real :: fk, fpix
|
||||||
|
|
||||||
write(0, '(1X, A)') "> spit_as_pgm to " // trim(fname)
|
! XXX print *, "> spit_as_pgm to ", fname
|
||||||
|
|
||||||
open(newunit=io, file=fname)
|
open(newunit=io, file=fname)
|
||||||
write (io, '(a2)') "P2"
|
write (io, '(a2)') "P2"
|
||||||
|
Loading…
Reference in New Issue
Block a user