Compare commits
No commits in common. "b861e8c86be9958e451e0d0ce9d2a0a64d14fa6c" and "6f254b6ff4245ab47df801d17e1c567b1b1bfeaa" have entirely different histories.
b861e8c86b
...
6f254b6ff4
5
.gitignore
vendored
5
.gitignore
vendored
@ -5,12 +5,9 @@ libbubulles.a
|
|||||||
tbb
|
tbb
|
||||||
gmon.out
|
gmon.out
|
||||||
dummy-file
|
dummy-file
|
||||||
toto
|
|
||||||
|
|
||||||
tools/*.obj
|
tools/*.obj
|
||||||
! tools/minimal.obj
|
|
||||||
tools/read_obj
|
tools/read_obj
|
||||||
tools/*.xyz
|
tools/*.xyz
|
||||||
tools/*.asc
|
tools/*.asc
|
||||||
tools/toto
|
|
||||||
tools/core
|
|
||||||
|
2
Makefile
2
Makefile
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
CC = gcc
|
CC = gcc
|
||||||
|
|
||||||
OPT = -Wall -g -pg -DDEBUG_LEVEL=0 -DMUST_ABORT=0
|
OPT = -Wall -g -pg -O3 -DDEBUG_LEVEL=0 -DMUST_ABORT=0
|
||||||
|
|
||||||
libbubulles.a: bubulles.o edges.o
|
libbubulles.a: bubulles.o edges.o
|
||||||
ar r $@ $?
|
ar r $@ $?
|
||||||
|
12
bubulles.c
12
bubulles.c
@ -84,7 +84,7 @@ fprintf(stderr, ">>> %s ( %p %d )\n", __func__, bbl, k);
|
|||||||
|
|
||||||
if (NULL == bbl->bbs) {
|
if (NULL == bbl->bbs) {
|
||||||
fprintf(stderr, "%s : array ptr is null\n", __func__);
|
fprintf(stderr, "%s : array ptr is null\n", __func__);
|
||||||
#if MUST_ABORT
|
#ifdef MUST_ABORT
|
||||||
abort();
|
abort();
|
||||||
#endif
|
#endif
|
||||||
return 1;
|
return 1;
|
||||||
@ -108,7 +108,7 @@ fprintf(stderr, ">>> %s ( %p %d )\n", __func__, where, idx);
|
|||||||
if ( (idx < 0) || (idx > where->fidx) ) {
|
if ( (idx < 0) || (idx > where->fidx) ) {
|
||||||
fprintf(stderr, "%s : idx %d out of range on %p\n",
|
fprintf(stderr, "%s : idx %d out of range on %p\n",
|
||||||
__func__, idx, where);
|
__func__, idx, where);
|
||||||
#if MUST_ABORT
|
#ifdef MUST_ABORT
|
||||||
abort();
|
abort();
|
||||||
#endif
|
#endif
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -186,7 +186,7 @@ int peek_bubulle(BBList *from, Bubulle *to, int idx)
|
|||||||
|
|
||||||
if (NULL==from) {
|
if (NULL==from) {
|
||||||
fprintf(stderr, "in %s, *from is null\n", __func__);
|
fprintf(stderr, "in %s, *from is null\n", __func__);
|
||||||
#if MUST_ABORT
|
#ifdef MUST_ABORT
|
||||||
abort();
|
abort();
|
||||||
#endif
|
#endif
|
||||||
return -5;
|
return -5;
|
||||||
@ -216,7 +216,7 @@ Bubulle *ar;
|
|||||||
|
|
||||||
if (NULL == bbl) {
|
if (NULL == bbl) {
|
||||||
fprintf(stderr, "in %s, *bbl is NULL\n", __func__);
|
fprintf(stderr, "in %s, *bbl is NULL\n", __func__);
|
||||||
#if MUST_ABORT
|
#ifdef MUST_ABORT
|
||||||
abort();
|
abort();
|
||||||
#endif
|
#endif
|
||||||
return -5;
|
return -5;
|
||||||
@ -261,7 +261,7 @@ int idx;
|
|||||||
|
|
||||||
if (NULL == what) {
|
if (NULL == what) {
|
||||||
fprintf(stderr, "SHIT HAPPEN IN %s\n", __func__);
|
fprintf(stderr, "SHIT HAPPEN IN %s\n", __func__);
|
||||||
#if MUST_ABORT
|
#ifdef MUST_ABORT
|
||||||
abort();
|
abort();
|
||||||
#endif
|
#endif
|
||||||
return -5;
|
return -5;
|
||||||
@ -337,7 +337,7 @@ int print_bbox(BBox *bbox, int k)
|
|||||||
|
|
||||||
if (NULL==bbox) {
|
if (NULL==bbox) {
|
||||||
fprintf(stderr, "in %s, *bbox is NULL\n", __func__);
|
fprintf(stderr, "in %s, *bbox is NULL\n", __func__);
|
||||||
#if MUST_ABORT
|
#ifdef MUST_ABORT
|
||||||
abort();
|
abort();
|
||||||
#endif
|
#endif
|
||||||
return -5;
|
return -5;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
/* --------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------- */
|
||||||
|
|
||||||
#define LIBBB_VERSION 63
|
#define LIBBB_VERSION 61
|
||||||
|
|
||||||
#define SZ_BUBULLE_TEXT 81 /* arbitrary value */
|
#define SZ_BUBULLE_TEXT 81 /* arbitrary value */
|
||||||
|
|
||||||
|
28
edges.c
28
edges.c
@ -1,6 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* edges.c
|
* edges.c
|
||||||
* a part of libbubulle from tTh
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -16,9 +15,7 @@ EdgeList * alloc_edgelist(char *name, int sz, int flags)
|
|||||||
EdgeList *elptr;
|
EdgeList *elptr;
|
||||||
AnEdge *array;
|
AnEdge *array;
|
||||||
|
|
||||||
#if DEBUG_LEVEL
|
|
||||||
fprintf(stderr, ">>> %s ( '%s' %d 0x%X )\n", __func__, name, sz, flags);
|
fprintf(stderr, ">>> %s ( '%s' %d 0x%X )\n", __func__, name, sz, flags);
|
||||||
#endif
|
|
||||||
|
|
||||||
if (NULL==(elptr = calloc(1, sizeof(EdgeList)))) {
|
if (NULL==(elptr = calloc(1, sizeof(EdgeList)))) {
|
||||||
fprintf(stderr, "no mem available in %s\n", __func__);
|
fprintf(stderr, "no mem available in %s\n", __func__);
|
||||||
@ -47,9 +44,8 @@ return elptr;
|
|||||||
/* --------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------- */
|
||||||
int free_edgelist(EdgeList *list, int k)
|
int free_edgelist(EdgeList *list, int k)
|
||||||
{
|
{
|
||||||
#if DEBUG_LEVEL
|
|
||||||
fprintf(stderr, ">>> %s ( %p 0x%X )\n", __func__, list, k);
|
fprintf(stderr, ">>> %s ( %p 0x%X )\n", __func__, list, k);
|
||||||
#endif
|
|
||||||
|
|
||||||
if (k) {
|
if (k) {
|
||||||
fprintf(stderr, "%s: k must be 0, was %d\n", __func__, k);
|
fprintf(stderr, "%s: k must be 0, was %d\n", __func__, k);
|
||||||
@ -135,39 +131,31 @@ return 0; /* NOT FOUND */
|
|||||||
int print_edgelist_desc(EdgeList *list, int k)
|
int print_edgelist_desc(EdgeList *list, int k)
|
||||||
{
|
{
|
||||||
|
|
||||||
fprintf(stderr, "------- edgelist '%s' at %p\n", list->name, list);
|
fprintf(stderr, "--- edgelist '%s' at %p\n", list->name, list);
|
||||||
|
|
||||||
if (k) {
|
if (k) {
|
||||||
fprintf(stderr, "%s: k must be 0, was %d\n", __func__, k);
|
fprintf(stderr, "%s: k must be 0, was %d\n", __func__, k);
|
||||||
return k;
|
return k;
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(stderr, "\tarray @ %p\n", list->edges);
|
fprintf(stderr, " array @ %p\n", list->edges);
|
||||||
fprintf(stderr, "\tsize %8d\n", list->size);
|
fprintf(stderr, " size %8d\n", list->size);
|
||||||
fprintf(stderr, "\tnext free %8d\n", list->fidx);
|
fprintf(stderr, " next free %8d\n", list->fidx);
|
||||||
fprintf(stderr, "\tmagic 0x%08lX\n", list->magic);
|
// fprintf(stderr, " magic 0x%08X\n", list->magic);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* --------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------- */
|
||||||
int print_the_edges(FILE *fp, EdgeList *list, int k)
|
int print_the_edges(EdgeList *list, int k)
|
||||||
{
|
{
|
||||||
int foo;
|
int foo;
|
||||||
|
|
||||||
#if DEBUG_LEVEL
|
|
||||||
fprintf(stderr, ">>> %s ( %p %d )\n", __func__, list, k);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (k) {
|
if (k) {
|
||||||
fprintf(stderr, "In %s, k must be 0, was %d\n", __func__, k);
|
fprintf(stderr, "In %s, k must be 0, was %d\n", __func__, k);
|
||||||
return k;
|
return k;
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(stderr, " list.fidx = %d\n", list->fidx);
|
|
||||||
|
|
||||||
for (foo=0; foo<list->fidx; foo++) {
|
for (foo=0; foo<list->fidx; foo++) {
|
||||||
fprintf(fp, "%6d\t\t%5d %5d\n", foo,
|
printf("%d\t\t%5d %5d\n", foo, list->edges[foo].A, list->edges[foo].B);
|
||||||
list->edges[foo].A, list->edges[foo].B);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
|
4
edges.h
4
edges.h
@ -1,13 +1,11 @@
|
|||||||
/*
|
/*
|
||||||
* edges.h
|
* edges.h
|
||||||
* a part of libbubulle from tTh
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* --------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------- */
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int A, B;
|
int A, B;
|
||||||
short burz;
|
|
||||||
} AnEdge;
|
} AnEdge;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -29,6 +27,6 @@ int push_a_missing_edge(EdgeList *list, int p0, int p1);
|
|||||||
int is_edge_in_list(EdgeList *list, int p0, int p1);
|
int is_edge_in_list(EdgeList *list, int p0, int p1);
|
||||||
|
|
||||||
int print_edgelist_desc(EdgeList *list, int k);
|
int print_edgelist_desc(EdgeList *list, int k);
|
||||||
int print_the_edges(FILE *file, EdgeList *list, int k);
|
int print_the_edges(EdgeList *list, int k);
|
||||||
|
|
||||||
/* --------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------- */
|
||||||
|
21
tbb.c
21
tbb.c
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
|
||||||
#include "bubulles.h"
|
#include "bubulles.h"
|
||||||
#include "edges.h"
|
#include "edges.h"
|
||||||
|
|
||||||
@ -27,20 +27,19 @@ print_edgelist_desc(list, 0);
|
|||||||
foo = push_an_edge(list, 13, 37);
|
foo = push_an_edge(list, 13, 37);
|
||||||
fprintf(stderr, " push edge -> %d\n", foo);
|
fprintf(stderr, " push edge -> %d\n", foo);
|
||||||
foo = push_an_edge(list, 24, 36);
|
foo = push_an_edge(list, 24, 36);
|
||||||
fprintf(stderr, " push edge -> %d\n", foo);
|
|
||||||
|
|
||||||
foo = print_the_edges(stdout, list, 0);
|
foo = print_the_edges(list, 0);
|
||||||
|
|
||||||
for (idx=0; idx<k; idx++) {
|
for (idx=0; idx<k; idx++) {
|
||||||
e0 = idx*7; e1 = 5-idx;
|
e0 = idx*7; e1 = 5-idx;
|
||||||
foo = push_an_edge(list, e0, e1);
|
foo = push_an_edge(list, e0, e1);
|
||||||
if (foo) {
|
if (foo) {
|
||||||
fprintf(stderr, "push %d (%d, %d) -> %d\n", idx, e0, e1, foo);
|
fprintf(stderr, "push (%d, %d) -> %d\n", e0, e1, foo);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foo = print_the_edges(stdout, list, 0); puts("");
|
foo = print_the_edges(list, 0);
|
||||||
|
|
||||||
foo = free_edgelist(list, 0);
|
foo = free_edgelist(list, 0);
|
||||||
fprintf(stderr, " free list -> %d\n", foo);
|
fprintf(stderr, " free list -> %d\n", foo);
|
||||||
@ -60,7 +59,7 @@ int e0, e1;
|
|||||||
|
|
||||||
fprintf(stderr, "============== %s %7d ===========\n", __func__, k);
|
fprintf(stderr, "============== %s %7d ===========\n", __func__, k);
|
||||||
|
|
||||||
list = alloc_edgelist("gloubigoulba", k, 0);
|
list = alloc_edgelist("BIG!", k, 0);
|
||||||
if (NULL == list) {
|
if (NULL == list) {
|
||||||
fprintf(stderr, "%s: epic fail\n", __func__);
|
fprintf(stderr, "%s: epic fail\n", __func__);
|
||||||
abort();
|
abort();
|
||||||
@ -76,7 +75,7 @@ for (idx=0; idx<k; idx++) {
|
|||||||
|
|
||||||
print_edgelist_desc(list, 0);
|
print_edgelist_desc(list, 0);
|
||||||
|
|
||||||
foo = print_the_edges(stdout, list, 0); puts("");
|
foo = print_the_edges(list, 0);
|
||||||
|
|
||||||
foo = free_edgelist(list, 0);
|
foo = free_edgelist(list, 0);
|
||||||
fprintf(stderr, " %s: free list -> %d\n", __func__, foo);
|
fprintf(stderr, " %s: free list -> %d\n", __func__, foo);
|
||||||
@ -190,8 +189,6 @@ fprintf(stderr, "*** Bubulles Testing %s %s\n\n", __DATE__, __TIME__);
|
|||||||
|
|
||||||
bubulles_version(0);
|
bubulles_version(0);
|
||||||
|
|
||||||
srand(getpid()); /* INIT RANDOM */
|
|
||||||
|
|
||||||
#if (0)
|
#if (0)
|
||||||
test_alloc_free(5);
|
test_alloc_free(5);
|
||||||
test_push_pop(20000);
|
test_push_pop(20000);
|
||||||
@ -200,9 +197,9 @@ foo = test_peek_poke(5000);
|
|||||||
fprintf(stderr, "test peek/poke -> %d\n", foo);
|
fprintf(stderr, "test peek/poke -> %d\n", foo);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// XXX foo = essai_des_edges_A(25);
|
foo = essai_des_edges_A(25);
|
||||||
// XXX fprintf(stderr, "test A des edges -> %d\n", foo);
|
fprintf(stderr, "test A des edges -> %d\n", foo);
|
||||||
foo = essai_des_edges_B(5000);
|
foo = essai_des_edges_B(10000);
|
||||||
fprintf(stderr, "test B des edges -> %d\n", foo);
|
fprintf(stderr, "test B des edges -> %d\n", foo);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
4
tools/.gitignore
vendored
4
tools/.gitignore
vendored
@ -1,4 +0,0 @@
|
|||||||
|
|
||||||
*.vertices
|
|
||||||
*.edges
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
BBFUNCS = ../libbubulles.a
|
BBFUNCS = ../libbubulles.a
|
||||||
|
|
||||||
OPT = -Wall -g -pg -DDEBUG_LEVEL=0 -DMUST_ABORT=0
|
OPT = -Wall -g -DDEBUG_LEVEL=1 -DMUST_ABORT
|
||||||
|
|
||||||
read_obj: read_obj.c Makefile importobj.o $(BBFUNCS)
|
read_obj: read_obj.c Makefile importobj.o $(BBFUNCS)
|
||||||
gcc $(OPT) $< importobj.o $(BBFUNCS) -o $@
|
gcc $(OPT) $< importobj.o $(BBFUNCS) -o $@
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
|
|
||||||
# Importer des fichiers .OBJ
|
# Importer des fichiers .OBJ
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
v -1.177934647 -6.833468914 -73.19773865
|
v -1.177934647 -6.833468914 -73.19773865
|
||||||
vn -0.1279897094 -0.4501263499 -0.8837448359
|
vn -0.1279897094 -0.4501263499 -0.8837448359
|
||||||
@ -12,10 +11,10 @@ vn -0.05844723806 -0.09480132163 -0.993778944
|
|||||||
Première étape : en lisant les vertices, nous saurons positionner
|
Première étape : en lisant les vertices, nous saurons positionner
|
||||||
nos bubulles.
|
nos bubulles.
|
||||||
|
|
||||||
Attention, mon parser EXIGE des fichiers Unix bien conformés :
|
Seconde étape : bien comprendre à quoi correspondent les
|
||||||
c'est-à-dire que la dernière ligne du .obj DOIT être terminée
|
lignes `vn` ? Des normales ?
|
||||||
par un newline !
|
|
||||||
|
|
||||||
|
Et troisème étape, que faire des vertices ?
|
||||||
|
|
||||||
Quatrième étape : aller vivre à la campagne ?
|
Quatrième étape : aller vivre à la campagne ?
|
||||||
|
|
||||||
|
@ -16,10 +16,6 @@ extern int verbosity;
|
|||||||
/* --------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------- */
|
||||||
|
|
||||||
#define LINE_SZ 666
|
#define LINE_SZ 666
|
||||||
|
|
||||||
static BBList *bublist;
|
|
||||||
static EdgeList *edges;
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------- */
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -27,14 +23,13 @@ typedef struct {
|
|||||||
int id;
|
int id;
|
||||||
} Tokens;
|
} Tokens;
|
||||||
|
|
||||||
enum token_id { T_comment=1, T_vertice, T_group, T_face, T_vt };
|
enum token_id { T_comment=1, T_vertice, T_group, T_face };
|
||||||
|
|
||||||
Tokens TokenList[] = {
|
Tokens TokenList[] = {
|
||||||
{ "#", T_comment },
|
{ "#", T_comment },
|
||||||
{ "v", T_vertice },
|
{ "v", T_vertice },
|
||||||
{ "g", T_group }, // to be verified !
|
{ "g", T_group }, // to be verified
|
||||||
{ "f", T_face },
|
{ "f", T_face },
|
||||||
{ "vt", T_vt }, // c'est quoi ce truc ?
|
|
||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -42,8 +37,8 @@ static int type_of_the_line(char *text)
|
|||||||
{
|
{
|
||||||
Tokens *token;
|
Tokens *token;
|
||||||
|
|
||||||
#if DEBUG_LEVEL > 1
|
#if DEBUG_LEVEL
|
||||||
fprintf(stderr, "%s is searching for '%s'\n", __func__, text);
|
fprintf(stderr, "%s is searching '%s'\n", __func__, text);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (token=TokenList; token->token; token++) {
|
for (token=TokenList; token->token; token++) {
|
||||||
@ -56,7 +51,7 @@ for (token=TokenList; token->token; token++) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
/* --------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------- */
|
||||||
int parse_vertice(char *cptr, float *px, float *py, float *pz)
|
static int parse_vertice(char *cptr, float *px, float *py, float *pz)
|
||||||
{
|
{
|
||||||
float x, y, z;
|
float x, y, z;
|
||||||
int foo;
|
int foo;
|
||||||
@ -76,66 +71,17 @@ if (3 == foo) {
|
|||||||
return foo;
|
return foo;
|
||||||
}
|
}
|
||||||
/* --------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------- */
|
||||||
/* new Mon 27 Mar 2023 12:08:18 AM CEST */
|
int try_to_read_an_OBJ_file(char *infname, char *outfname, int notused)
|
||||||
int parse_face(char *cptr, int phy)
|
|
||||||
{
|
|
||||||
int ix, foo;
|
|
||||||
int fa, fb;
|
|
||||||
|
|
||||||
#if DEBUG_LEVEL
|
|
||||||
fprintf(stderr, ">>> %s ( '%s' %d )\n", __func__, cptr, phy);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
for (ix=0; ix<3; ix++) {
|
|
||||||
cptr = strtok(NULL, " ");
|
|
||||||
if (NULL == cptr) {
|
|
||||||
fprintf(stderr, "incomplete face in %s\n", __func__);
|
|
||||||
return -4;
|
|
||||||
}
|
|
||||||
if (2 != sscanf(cptr, "%d/%d", &fa, &fb)) {
|
|
||||||
fprintf(stderr, "%s: err sscanf\n", __func__);
|
|
||||||
exit(1);
|
|
||||||
return -3;
|
|
||||||
}
|
|
||||||
// XXX fprintf(stderr, " %d got %d %d\n", ix, fa, fb);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* yes, i've found 0-lenght edges, wtf ?
|
|
||||||
*/
|
|
||||||
if (fa == fb) {
|
|
||||||
// fprintf(stderr, "'%s' dublicate\n", cptr);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
foo = push_a_missing_edge(edges, fa, fb);
|
|
||||||
if (foo) {
|
|
||||||
fprintf(stderr, "%s: disaster #%d\n", __func__, foo);
|
|
||||||
#if MUST_ABORT
|
|
||||||
fflush(stderr), abort();
|
|
||||||
#endif
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#if DEBUG_LEVEL
|
|
||||||
fprintf(stderr, "<<< %s\n", __func__);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
/* --------------------------------------------------------------------- */
|
|
||||||
int try_to_read_an_OBJ_file(char *infname, char *file_vert, char *file_edges,
|
|
||||||
int notused)
|
|
||||||
{
|
{
|
||||||
FILE *fpin;
|
FILE *fpin;
|
||||||
char line[LINE_SZ+1], *cptr;
|
char line[LINE_SZ+1], *cptr;
|
||||||
float x, y, z;
|
float x, y, z;
|
||||||
int foo, nbre, tokenid;
|
int foo, nbre, tokenid, fa, fb, ix;
|
||||||
|
BBList *bublist;
|
||||||
Bubulle bubulle;
|
Bubulle bubulle;
|
||||||
|
|
||||||
|
|
||||||
#if DEBUG_LEVEL
|
#if DEBUG_LEVEL
|
||||||
fprintf(stderr, ">>> %s ( '%s' %d )\n\n", __func__, infname, notused);
|
fprintf(stderr, ">>> %s ( '%s' %d )\n", __func__, infname, notused);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (NULL==(fpin=fopen(infname, "r"))) {
|
if (NULL==(fpin=fopen(infname, "r"))) {
|
||||||
@ -143,22 +89,13 @@ if (NULL==(fpin=fopen(infname, "r"))) {
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
bublist = alloc_bubulles(infname, 500000, 0);
|
bublist = alloc_bubulles(infname, 800000, 0);
|
||||||
if (NULL==bublist) {
|
if (NULL==bublist) {
|
||||||
fprintf(stderr, "in %s, no mem for bubls, aborting...\n", __func__);
|
fprintf(stderr, "err in %s, aborting...\n", __func__);
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
print_bublist_desc(bublist, 0);
|
print_bublist_desc(bublist, 0);
|
||||||
|
|
||||||
edges = alloc_edgelist("krkrkr", 200000, 0);
|
|
||||||
if (NULL==edges) {
|
|
||||||
fprintf(stderr, "no mem for edges in %s, aborting...\n", __func__);
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
print_edgelist_desc(edges, 0);
|
|
||||||
|
|
||||||
fprintf(stderr, "\n***********************************\n");
|
|
||||||
|
|
||||||
nbre = 0;
|
nbre = 0;
|
||||||
while(NULL!=(cptr=fgets(line, LINE_SZ, fpin))) {
|
while(NULL!=(cptr=fgets(line, LINE_SZ, fpin))) {
|
||||||
|
|
||||||
@ -169,7 +106,7 @@ while(NULL!=(cptr=fgets(line, LINE_SZ, fpin))) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
line[strlen(line)-1] = '\0'; /* kill the newline */
|
line[strlen(line)-1] = '\0'; /* kill the newline */
|
||||||
if (verbosity>1) fprintf(stderr, "line read ==|%s|==\n", line);
|
if (verbosity>1) fprintf(stderr, "line read ===%s===\n", line);
|
||||||
|
|
||||||
cptr = strtok(line, " ");
|
cptr = strtok(line, " ");
|
||||||
if (NULL == cptr) {
|
if (NULL == cptr) {
|
||||||
@ -190,52 +127,49 @@ while(NULL!=(cptr=fgets(line, LINE_SZ, fpin))) {
|
|||||||
case T_vertice:
|
case T_vertice:
|
||||||
x = y = z = 0.0;
|
x = y = z = 0.0;
|
||||||
foo = parse_vertice(cptr, &x, &y, &z);
|
foo = parse_vertice(cptr, &x, &y, &z);
|
||||||
if (3!=foo) {
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
bubulle.p.x = x;
|
bubulle.p.x = x;
|
||||||
bubulle.p.y = y;
|
bubulle.p.y = y;
|
||||||
bubulle.p.z = z;
|
bubulle.p.z = z;
|
||||||
if (verbosity > 1) niceprint_bubulle(&bubulle, 0);
|
if (verbosity > 1) niceprint_bubulle(&bubulle, 0);
|
||||||
foo = push_bubulle(bublist, &bubulle);
|
|
||||||
if (foo) {
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_group:
|
case T_group:
|
||||||
cptr = strtok(NULL, " ");
|
cptr = strtok(NULL, " ");
|
||||||
fprintf(stderr, "\tGroup: %s\n", cptr);
|
fprintf(stderr, "Group: %s\n", cptr);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_face:
|
case T_face:
|
||||||
foo = parse_face(cptr, 0);
|
fprintf(stderr, "Face A: %s\n", cptr);
|
||||||
if (foo) fprintf(stderr, " '%s' parse face -> %d\n",
|
for (ix=0; ix<3; ix++) {
|
||||||
cptr, foo);
|
cptr = strtok(NULL, " ");
|
||||||
|
fprintf(stderr, "Piste %d: %s\n", ix, cptr);
|
||||||
|
if (2==sscanf(cptr, "%d/%d", &fa, &fb))
|
||||||
|
fprintf(stderr, " %d %d %d\n", foo, fa, fb);
|
||||||
|
else
|
||||||
|
return -3;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// fprintf(stderr, "\ttoken %d ?\n", tokenid);
|
// fprintf(stderr, "token %d ?\n", tokenid);
|
||||||
continue; /* wtf ? */
|
continue; /* wtf ? */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foo = push_bubulle(bublist, &bubulle);
|
||||||
|
if (foo) {
|
||||||
|
fprintf(stderr, "*** %s: error %d on push\n", __func__, foo);
|
||||||
|
exit(1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
nbre++;
|
nbre++;
|
||||||
}
|
}
|
||||||
fclose(fpin);
|
fclose(fpin);
|
||||||
|
|
||||||
fprintf(stderr, "\n***********************************\n");
|
|
||||||
|
|
||||||
if(verbosity) {
|
if(verbosity) {
|
||||||
fprintf(stderr, "in %s, %d vertices loaded\n", __func__, bublist->fidx);
|
fprintf(stderr, "%s : %d vertices loaded\n", __func__, nbre);
|
||||||
}
|
}
|
||||||
|
|
||||||
print_bublist_desc(bublist, 0);
|
bubulles_to_data(outfname, NULL, bublist, 0);
|
||||||
bubulles_to_data(file_vert, NULL, bublist, 0);
|
|
||||||
free_bubulles(bublist, 0);
|
|
||||||
|
|
||||||
print_edgelist_desc(edges, 0);
|
|
||||||
print_the_edges(stdout, edges, 0);
|
|
||||||
free_edgelist(edges, 0);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
g minimal
|
|
||||||
v 0 0 0
|
|
||||||
v 1 0 0
|
|
||||||
v 0 1 0
|
|
||||||
v 0 0 1
|
|
||||||
f 1/2, 2/3, 3/1
|
|
||||||
f 0/1, 0/1, 0/2
|
|
@ -4,33 +4,23 @@
|
|||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <libgen.h> // for basename(3)
|
|
||||||
|
|
||||||
#include "../bubulles.h"
|
#include "../bubulles.h"
|
||||||
|
|
||||||
int try_to_read_an_OBJ_file(char *fname,
|
int try_to_read_an_OBJ_file(char *fname, char *outfname, int notused);
|
||||||
char *outfname, char *file_edges,
|
int verbosity;
|
||||||
int notused);
|
|
||||||
|
|
||||||
|
|
||||||
int verbosity = 0;
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int foo;
|
int foo;
|
||||||
char *fname; /* see manpage basename(3) */
|
|
||||||
|
|
||||||
if (2 != argc) {
|
if (2 != argc) {
|
||||||
bubulles_version(1);
|
bubulles_version(1);
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
verbosity = 0;
|
verbosity = 1;
|
||||||
|
|
||||||
fname = basename(argv[1]);
|
foo = try_to_read_an_OBJ_file(argv[1], "bubulles.asc", 0);
|
||||||
fprintf (stderr, "input fname is '%s'\n", fname);
|
|
||||||
|
|
||||||
foo = try_to_read_an_OBJ_file(argv[1], "bulles.vertices", "bulles.edges", 0);
|
|
||||||
fprintf(stderr, "try to read '%s' -> %d\n", argv [1], foo);
|
fprintf(stderr, "try to read '%s' -> %d\n", argv [1], foo);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user