Compare commits

...

5 Commits

Author SHA1 Message Date
tTh
c61251ad53 adding -ln 2022-01-21 14:43:52 +01:00
tTh
e7e3713972 calm down a non essential message 2022-01-11 10:00:29 +01:00
tTh
4c38ff032a fine tuning the 3d contrib 2022-01-09 09:32:39 +01:00
tTh
a8d1e18650 Ok, this writz is working 2022-01-08 21:51:31 +01:00
tTh
ccd324749e first external contrib 2022-01-08 17:48:18 +01:00
11 changed files with 222 additions and 4 deletions

8
.gitignore vendored
View File

@ -9,6 +9,8 @@ lib/*.gif
*.a
gmon.out
*.swp
*.pnm
*.fimg
essai
@ -88,4 +90,8 @@ experiment/muxplanes
experiment/movepixels
experiment/tcache
contrib/fimg2povhf
contrib/*.tga
contrib/pov.stderr
contrib/*.png
contrib/*.gif

View File

@ -38,6 +38,10 @@ apt install libv4l2-dev
apt install libcfitsio-dev
apt install libnetpbm-dev
```
Il est probable que j'en oublient. Ensuite, j'ai dans l'idée de construire
um met-packet à la sauce Debian pour installer facilement tout ce
qui sert à faire fonctionner ce kluge. Ensuite, j'irais voir du
coté de pkg-config.
Certains outils externes sont aussi utiles :

7
contrib/Makefile Normal file
View File

@ -0,0 +1,7 @@
DBGL = '-DDEBUG_LEVEL=1 -g '
fimg2povhf: fimg2povhf.c Makefile
gcc -Wall $(DBGL) $< -limage -lfloatimg -lm -o $@

12
contrib/README.md Normal file
View File

@ -0,0 +1,12 @@
# Contributions
## fimg2povhf
Need some external garbage, sorry.
Try to compile this really old code:
http://la.buvette.org/devel/libimage/libimage.html
Use the code, frtk !

116
contrib/fimg2povhf.c Normal file
View File

@ -0,0 +1,116 @@
/*
* convertir une image flottante en champ d'altitude
*
* nouveau 64 ernest renan - 20220108
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "tthimage.h"
#include "floatimg.h"
int verbosity;
/* ------------------------------------------------------------------ */
int This_is_the_real_conversion(FloatImg *fimg, Image_Desc *hf, int k)
{
int foo;
float minmax[6];
int x, y, h;
float rgb[6], cumul;
float maxi;
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( %p %p %d )\n", __func__, fimg, hf, k);
#endif
foo = fimg_get_minmax_rgb(fimg, minmax);
// fimg_print_minmax(minmax, "source");
maxi = 0.0;
for (y=0; y<fimg->height; y++) {
for (x=0; x<fimg->width; x++) {
foo = fimg_get_rgb(fimg, x, y, rgb);
/* non-magic nuabmer spotted */
cumul = 1.732 * (rgb[1] + rgb[3] + rgb[5]);
if (cumul > maxi) maxi = cumul;
h = (int)cumul;
foo = Image_hf15_plot(hf, x, y, h);
}
}
fprintf(stderr, "--- the critical maximum is %f\n", maxi);
return FULL_NUCKED;
}
/* ------------------------------------------------------------------ */
int Convertir_Fimg_to_Povhf(char *fimgname, char *hfname, int k)
{
FloatImg fimg;
Image_Desc *hf;
int wid, hei;
int foo;
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( %s %s %d )\n", __func__, fimgname, hfname, k);
#endif
foo = fimg_create_from_dump(fimgname, &fimg);
fprintf(stderr, "load of %s --> %d\n", fimgname, foo);
if (foo) {
return foo;
}
wid = fimg.width; hei = fimg.height; // nice alias
fprintf(stderr, " source picture size %dx%d\n", wid, hei);
hf = Image_alloc(wid, hei, IMAGE_RGB);
fprintf(stderr, "hf alloc -> %p\n", hf);
if (NULL == hf) {
return NULL_POINTER;
}
foo = This_is_the_real_conversion(&fimg, hf, k);
fprintf(stderr, "real conversion -> %d\n", foo);
foo = Image_TGA_save(hfname, hf, 0);
fprintf(stderr, "export as tga -> %d\n", foo);
return FULL_NUCKED;
}
/* ------------------------------------------------------------------ */
void help(int nu)
{
printf("usage :\n");
printf("\t$ fimg2povhf src.fimg dst.tga\n");
}
/* ------------------------------------------------------------------ */
int main(int argc, char *argv[])
{
int foo;
verbosity = 1;
// printf("%s: argc = %d\n", argv[0], argc);
if (3 != argc) {
help(0);
exit(0);
}
if (verbosity > 1) {
Image_print_version(3);
fimg_print_version(3);
}
foo = Convertir_Fimg_to_Povhf(argv[1], argv[2], 0);
fprintf(stderr, "retour conversion was %d\n", foo);
fprintf(stderr, "end\n\n");
return 0;
}
/* ------------------------------------------------------------------ */

31
contrib/raytrace.sh Executable file
View File

@ -0,0 +1,31 @@
#!/bin/bash
src="/dev/shm/foo.fimg"
dst="hf.tga"
TMPDIR=${HOME}/TMP
POVOPT="-w512 -h342 +q9 -a "
rm $TMPDIR/hf???.png
for idx in $(seq 0 60)
do
echo "========================== " $idx
grabvidseq -v \
-d /dev/video0 -s 640x480 \
-n 60 -p 1.0 \
-o ${src}
./fimg2povhf $src $dst
out=$(printf "%s/hf%03d.png" $TMPDIR $idx)
echo "raytracing " ${POVOPT} $out
povray -iscene.pov ${POVOPT} -o${out} 2> pov.stderr
# tail -15 pov.stderr
done
convert -delay 10 -colors 240 $TMPDIR/hf???.png foo.gif

41
contrib/scene.pov Normal file
View File

@ -0,0 +1,41 @@
/* scene demo conversion floatimg -> height field */
#version 3.7;
global_settings {
ambient_light rgb <0.07, 0.07, 0.07>
assumed_gamma 1.0
}
#include "colors.inc"
height_field {
tga "hf.tga"
smooth
pigment { color Orange*0.7 }
translate <-0.5, 0, -0.5>
// scale 2
translate y*0.002
}
camera {
location <-0.86, 4, -6.20>
look_at <0, 0, 0>
angle 14
}
plane {
<0, 1, 0>, 0
pigment {
hexagon
pigment { color Gray20 },
pigment { color Gray10 },
pigment { color Gray30 }
}
scale 0.27
}
light_source { <-9, 2, 3> color White }

View File

@ -5,7 +5,7 @@
COPT = -Wall -fpic -g -DDEBUG_LEVEL=1 -lm
DEPS = ../floatimg.h ../libfloatimg.a Makefile
LIBS = ../libfloatimg.a -ltiff -lpnglite -lcfitsio
LIBS = ../libfloatimg.a -ltiff -lpnglite -lcfitsio -lm
all: assemblage extracteur muxplanes movepixels

View File

@ -4,7 +4,7 @@
* http://la.buvette.org/photos/cumul
*/
#define FIMG_VERSION 164
#define FIMG_VERSION 166
/*
* in memory descriptor

View File

@ -63,7 +63,7 @@ if (fimg_images_not_compatible(src, dst)) {
return -98;
}
if (verbosity) {
if (verbosity > 1) {
fimg_show_filter("essai", filtr);
}

View File

@ -5,6 +5,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <fcntl.h> /* low-level i/o */
#include <unistd.h>