cgogn / CGoGN_2

n-dimensional Meshes with Combinatorial Maps
https://cgogn.github.io
GNU Lesser General Public License v2.1
20 stars 19 forks source link

IO for graphs + doo sabin subdivision #335

Closed untereiner closed 6 years ago

untereiner commented 6 years ago

Au fait j'ai la ligne 258 de masks.h qui ne passe pas à la compilation chez moi: In member function ‘cgogn::Dart cgogn::FilteredQuickTraversor<MAP>::const_iterator::operator*() const’: /home/lionel/Documents/developments/cgogn2/cgogn/cgogn/core/utils/masks.h:258:42: error: base operand of ‘->’ has non-pointer type ‘const value_type {aka const cgogn::Attribute_T<cgogn::Dart>}’ return qt_ptr_->qt_attributes_[orbit_]->operator[](index_);

En la remplaçant par return qt_ptr_->qt_attributes_[orbit_](this->operator[](index_)); ça va mieux. Vous n'avez pas eut ce problème ?

PS: gcc version 7.2.0

sylvainthery commented 6 years ago

Pour la classe FilteredQuickTraversor, elle n'est instanciée nulle part, j'ai fait un essai et c'est n'imp. l'appel au constructeur de const_iteratot n'a rien à voir avec sa définition ! Impossible que ce truc compile qqsoit le compilo

pierrekraemer commented 6 years ago

Ouais je suis en train d'essayer en utilisant la classe. Je vais corriger ça mais j'aurais pas le temps de le faire ce soir.. Mais la solution de Lionel me semble pas bonne. Est-ce que en attendant, tu peux annuler ta modif dans ce fichier ?

sylvainthery commented 6 years ago

Syndrome du commit -a ;)

untereiner commented 6 years ago

Du coup pourquoi j'ai un problème seulement maintenant ? D'ailleurs ce n'est même pas un commit -a ... c'est un commit spécifique. J'ai hésité avec remplacer la flèche par un . mais je ne comprend pas la différence ici. Je peux annuler la modif

sylvainthery commented 6 years ago

@untereiner c'est Pierre qui a fait un commit -a et a pushé des trucs pas finis ;) Pourquoi tu as l'erreur de compil alors que la classe n'est pas instanciée, mystère ? Je n'ai pas essayé gcc 7.2

untereiner commented 6 years ago

haaa :) je ne sais pas non plus pourquoi j'ai cette erreur. Mon stagiaire l'a aussi eut en compilant cgogn sur son archlinux avec gcc 7.2 😄

untereiner commented 6 years ago

Si vous êtes ok, acceptez la tel que sinon je vais rajouter des trucs qui n'auront plus rien à voir... et je préfère faire ça dans une autre pull request.

pierrekraemer commented 6 years ago

Concernant le sujet de base de la PR, est-ce qu'il ne manque encore pas l'implémentation de fonctions d'export pour les graph ?

untereiner commented 6 years ago

je n'ai effectivement pas encore écris les exports pour tous les formats.. est-ce que cela peut être fait dans un second temps ? tu préfères que je les fasses tous ?

pierrekraemer commented 6 years ago

Si tu préfères le faire plus tard, pas de souci. C'est juste qu'il ne faudrait pas finir pas oublier !

untereiner commented 6 years ago

Je viens de vérifier. Il y a deux classes. Je vais les faire là.

pierrekraemer commented 6 years ago

OK

untereiner commented 6 years ago

Voilà j'ai écris les exports au moins pour la géométrie et fais un peu de ménage.

pierrekraemer commented 6 years ago

C'est bon pour le merge ?

pierrekraemer commented 6 years ago

Il faut quand même faire attention, sur un algo global qui utilise un builder, un mask quelconque pourrait tout à fait laisser la carte dans un état invalide. Le seul type de mask que je vois qui pourrait fonctionner serait un mask qui filtre pour ne garder qu'une ou plusieurs composantes connexes en entier. Je ne sais pas si il ne vaut pas mieux laisser un tel algo tourner sur la carte entière (comme pour loop ou cc).

untereiner commented 6 years ago

ok c'est effectivement le seul mask qui pourrait fonctionner et que je voulais d'ailleurs écrire. J'enlève le commit et je te laisser merger la PR. Je fais comment pour travailler sur une composante connexe ?

pierrekraemer commented 6 years ago

Oui je m'en doutais.. je ne sais pas trop comment faire ça. Les masks qui permettent le parcours d'une CC sont soit un objet CellFilter (ensemble de fonctions de filtre), un FilteredQuickTraversal (QuickTraversal avec fonctions de filtre) ou un CellCache. Le seul problème est que rien ne permet de garantir a priori ce que parcourt un tel mask. De plus, ces masks ne seraient plus à jour à l'issue de l'algo, ce qui n'est pas grave, mais il faut penser à les mettre à jour : pour ceux basés sur des fonctions de filtre (probablement basées sur un marqueur), il faut marquer les nouveaux brins de la CC, pour un CellCache, il faut le reconstruire.

Sinon, il nous faut la possibilité de spliter une carte en plusieurs cartes contenant chacune une CC de la carte de départ.

untereiner commented 6 years ago

@pierrekraemer