VTK : la visualisation scientifique et au delà !

Posté par  (site Web personnel) . Édité par Ysabeau, Benoît Sibaud, Pierre Jarillon et palm123. Modéré par Ysabeau. Licence CC By‑SA.
121
4
fév.
2021
Science

VTK est une bibliothèque libre incontournable de la visualisation scientifique, pourtant peu citée sur LinuxFr. Rattrapons le retard !

Logo de VTK

VTK est en quelque sorte le couteau suisse de la visualisation scientifique. La suite de cet article vous donnera un aperçu de ses domaines d’utilisation en s’appuyant sur de nombreux exemples abondamment illustrés.

Sommaire

Visualisation Scientifique

Le domaine d’application premier de VTK est la visualisation scientifique. C’est une discipline très large qui couvre les représentations possibles de données issues du domaine scientifique dans le but de les rendre interprétables par des humains :

  • résultats de simulations : météo, astrophysique, fluides…

source : wikimedia

  • mesures venant de capteurs : imagerie médicale, inspection des sols…

Tomographie par émission monophotonique d’une souris, source : wikimedia

  • données créées ex-nihilo : équation mathématique, données historiques ou géographiques…

source : wikimedia

Une particularité de cette visualisation est de rendre les données compréhensibles pour l’utilisateur dans un but d’analyse. Être capable de représenter ces données d’une façon simple est en général assez complexe ! Elles doivent être transformées, simplifiées, projetées sur des primitives géométriques (points, lignes, surfaces, etc.), colorées, combinées, superposées, etc.

De plus ces données sont souvent brutes et peuvent être de taille considérable, de l’ordre du gigaoctet ou du téraoctet, et nécessitent en général plusieurs traitements lourds pour en extraire des informations pertinentes pour l’observateur. Pour des questions de performance ces transformations doivent pouvoir s’exécuter en parallèle en utilisant un maximum de ressources disponibles : CPU, GPU, grappe de serveurs, etc.

En 1993, seuls quelques logiciels propriétaires étaient capables de répondre à toutes ces contraintes. Comme nous allons le voir par la suite, la publication de VTK sous une licence libre, donc gratuite, lui a permis de devenir rapidement une solution de référence pour des utilisateurs assez divers.

Historique

VTK est l’acronyme de Visualization Toolkit, soit littéralement boîte à outils de visualisation en français. Cette bibliothèque est à l’origine un logiciel accompagnant le livre The Visualization Toolkit: An Object-Oriented Approach to 3D Graphics écrit par trois chercheurs, Will Schroeder, Ken Martin et Bill Lorensen, travaillant à l’époque, en 1993, chez General Electric R&D. Leur propos était de collaborer avec d’autres chercheurs et de développer des outils communs pour créer des applications avancées de visualisation de données. Leur employeur les autorisa à publier ce livre écrit sur leur temps libre ainsi que le code source sous une licence libre.

VTK text book

Au début utilisé principalement en interne par General Electric pour le domaine médical, la bibliothèque rencontra rapidement du succès dans l’univers de la recherche scientifique. Ceci amena deux des auteurs du livre à créer la société Kitware en 1998 pour répondre aux demandes des utilisateurs et contributeurs que ce soit des laboratoires de recherche ou des entreprises.

Au cours de son développement, les applications utilisant VTK se sont diversifiées comme le traitement d’image, la vision par ordinateur ou l’analyse de données.

Le livre en est aujourd’hui à sa quatrième édition, et VTK est en version 9.0 avec une version majeure tous les 2 à 3 ans. Cette dernière version amène de nombreuses nouveautés, dont les plus visibles sont :

  • rendu physique réaliste, comparaison entre un matériau non métallique à gauche et un autre métallique à droite

  • l’occlusion ambiante, qui améliore la perception de profondeur

  • éléments de maillage de type Bézier

Ces nouvelles fonctionnalités permettent des rendus réalistes modernes comme vous pouvez le constater parcourant la chaîne vidéo de Kitware :

Theatre Simulation Video

Singapore Test Case Video

Satellite Intercept Video

Kitware

Petite parenthèse sur Kitware, cette entreprise assez particulière qui développe VTK.

Logo de Kitware

Vous connaissez peut-être déjà Kitware pour ses nombreux autres logiciels libres : CMake, CDash, ITK, Paraview… qui naviguent tous autour de l’univers de la visualisation et du développement logiciel de grande ampleur.

Kitware est une société américaine, avec une succursale à Lyon en France, d’environ 150 personnes qui développe les outils sus-cité et en propose la maintenance ainsi que des formations et des développements spécifiques. Fait rare, son CEO, Lisa Avila, est une femme et l’équipe dirigeante est aussi partiellement féminine. Autre point positif, l’entreprise est détenue à 100% par ses employés depuis peu. D’ailleurs dans un article récent on apprend que l’entreprise a du mal à recruter. Les profils recherchés, techniquement pointus, amènent Kitware à rentrer en concurrence avec les géants américains de l’informatique comme Google ou Amazon.

Comme beaucoup d’entreprises qui développent des logiciels libres, le modèle économique de Kitware semble être un mélange entre du développement spécifique de niche autour de leurs outils, et de la formation couplé à de la maintenance pour utilisateurs avancés. De plus, en parcourant leur blog on peut constater que Kitware participe à beaucoup de projets de recherche américains et européens. Comme l’explique Lisa Avila dans cet article, chaque client a des besoins très spécifiques ce qui demande beaucoup d’accompagnement commercial avec un suivi financier efficace pour garantir la pérennité des projets de recherche.

Principes de fonctionnement de VTK

Passons à la technique !

Le cœur de VTK est développé en C++, mais il existe de nombreux portages et il est ainsi possible de s’en servir en Tcl, Python, Jupyter (via Paraview Jupyter Kernel), Visual Basic, C# (via ActiViz), Java, Javascript (via vtk.js), Unity… et j’en oublie sûrement !

VTK utilise la programmation orientée objet, c’est-à-dire que chaque concept ou action est représentée par un objet. Un objet regroupe les données spécifiques à sa tâche et des actions qui peuvent s’appliquer sur ces données, tout en interdisant le reste du programme d’y accéder. C’est le principe de l’encapsulation, très populaire dans les langages C++, Java, C#…

À noter que VTK défini aussi son propre format de stockage de donnée dont les fichiers ont en général l’extension .vtk ou l’une de ses variantes (vtu, vti, vtp…). Avec le temps, le format a évolué et on trouve aujourd’hui à la fois l’ancienne version texte brut, aujourd’hui obsolète, ou la version plus moderne en XML. Cette dernière peut contenir des données binaires en plus des balises XML, ce qui permet d’accélérer le chargement, ainsi que la possibilité de lecture et écriture en parallèle de plusieurs sections d’un même fichier.

Pipeline

VTK fonctionne en pipeline configurable. Cela signifie que les données vont subir plusieurs transformations ou actions jusqu’à leurs multiples représentations finales. En simplifiant, on peut dire VTK défini deux familles d’objets : les objets de données et les objets de traitement sur celles-ci, appelés process en anglais.

Il existe ainsi trois type de processus :

  • les sources qui ne prennent rien en entrée mais qui produisent une sortie

illustation source

  • les filtres qui acceptent des données en entrée et en produisent en sortie

illustation file

  • les puits (sink en anglais) qui ont besoin de données en entrée mais ne produisent rien en sortie. Même s’ils n’ont pas de flux de sortie au sens du pipeline, cela n’empêche pas d’effectuer des actions d’entrée/sortie système comme de l’affichage ou l’écriture dans un fichier.

illustation puit

Notez que sur les illustrations ci-dessus, une seule flèche est représentée par simplification alors qu’un processus peut accepter et générer plusieurs données.

Donc en combinant différents processus on obtient une succession d’étapes qui permettent à partir d’une source de donnée brute d’arriver à de multiples représentations graphiques.

L’utilisation d’un pipeline permet aussi une mise jour automatique du rendu quand un paramètre change. Si la source change, tout doit être recalculé, mais si seul un paramètre d’un filtre change, seules les étapes en aval seront mises à jour.

Il existe plusieurs centaines de filtres disponibles dans VTK, couvrant de nombreux besoins. Nous allons en voir quelques-uns dans les exemples suivants.

Quelques exemples

Jouons avec une quadrique

Exemple concret adapté du VTK TextBook, imaginons qu’on souhaite explorer la quadrique suivante :

Notre fonction associe une valeur à tout point de l’espace à 3 dimensions. Pour la représenter nous allons générer et afficher des surfaces de niveau et des lignes de niveau, ce qui revient mathématiquement à dessiner l’ensemble des points (x,y,z) pour lesquels F(x,y,z) = K avec K une constante.

Construisons notre pipeline qui doit contenir une source, des filtres et pour finir un système de rendu.

Première étape : la source, qui est de type vtkQuadric, un objet bien pratique qui représente une quadrique.

On échantillonne cette source avec un vtkSampleFunction pour obtenir un ensemble discret de points, que l’on va ensuite passer dans un filtre de contour vtkContourFilter qui extrait des surfaces dont les points ont la même valeur. À cette étape les surfaces ne sont que des objets mathématiques sans réalité physique. Il faut donc utiliser un vtkPolyDataMapper pour les associer à des primitives graphiques dans le but de leur affichage. Dans notre cas ces primitives sont des triangles colorés en fonction de la valeur des points des différentes surfaces.

Dernière étape, il faut placer nos primitives dans la scène 3D via un acteur vtkActor lié à la fenêtre graphique, elle-même combinaison de plusieurs objets : vtkRenderer, vtkRenderWindow, vtkRenderWindowInteractor… Le concept d’acteur permet d’ajouter des transformations spatiales (translation/rotation/homothétie/etc.) à des primitives indépendamment de l’espace de rendu.

Si on représente graphiquement notre pipeline, elle ressemble à ça :

iso surface pipeline

Et le résultat :

Affichage des surfaces de niveau

On observe ainsi les différentes surfaces de niveau colorées.

Complexifions maintenant en superposant d’autres visualisations de cette même source.

Pour extraire et afficher des lignes de niveau sur plusieurs plans, nous allons utiliser un extracteur de volume vtkExtractVOI qui permet de travailler sur un sous-ensemble d’échantillons. Dans notre cas ces échantillons seront situés sur un plan. La suite est similaire à la visualisation précédente en utilisant un filtre de contour qui va cette fois-ci extraire des segments au lieu des surfaces. Les primitives graphiques vont ainsi être des lignes et on utilisera aussi un acteur vtkActor pour placer le dessin dans la même fenêtre de rendu.

Dans la représentation graphique du pipeline, on trouve ainsi deux branches qui partent de la même source et finissent dans la même scène de rendu mais en passant par des filtres différents : l’une pour les surfaces de niveau, l’autre pour les lignes de contours.

Iso surfaces et iso lignes pipeline

résultat :

Iso surfaces et iso lignes résultat

Mais on n’y voit rien ! C’est à cause des représentations superposées. On peut alors soit jouer sur la transparence pour rendre les lignes visibles, soit les déplacer dans le rendu final grâce à l’objet « acteur » associé :

Iso surfaces et iso lignes résultat

Et en rajoutant une boîte englobante pour mieux se situer dans l’espace :

Iso surfaces et iso lignes résultat

Rendu volumique

Exemple un peu plus avancé, nous allons travailler sur une source volumique qui contient des informations pour chaque voxel d’un espace 3D. C’est le cas typique de données venant d'imagerie par résonance magnétique (IRM). Pour se représenter les choses, on peut utiliser l’analogie d’un grand Rubik's cube avec une valeur associée à chaque case.

Analogie du Rubik's cube

Voici la version Rubik's cube de nos données :

Version brute

Difficile de comprendre ce qu’il y a à l’intérieur !

Si on reprend les méthodes décrites dans l’exemple précédent, on peut imaginer plusieurs façons de visualiser ces données :

  • projeter la valeur de chaque voxel sur un point de l’espace 3D, comme l’image rubik's cube ci-dessus
  • afficher des lignes de contours ou des surfaces de contours

Iso-surface pour V=1000

Iso-surface pour V=2000

Mais comme on le voit dans les captures d’écran ci-dessus, les surfaces comportent des trous car les différentes parties (peau, crâne, etc.) sont représentés par une plage de valeur et non plus par une seule valeur. On peut évidemment superposer plusieurs surfaces, mais il est toujours difficile de percevoir l’intérieur du modèle, ce qui est pourtant le but recherché en imagerie médicale (recherche de tumeur par exemple) :

Iso-surfaces superposées

La solution ? Utiliser le lancer de rayon (raycasting) !

L’idée est de faire partir un rayon pour chaque pixel de l’image de rendu. Ce rayon va traverser notre volume voxélisé et recueillir des informations à chaque cube traversé. Il suffira ensuite de se servir de ces informations pour définir la couleur du pixel de l’image.

Il existe de nombreuses façons de faire ce dernier calcul en fonction de ce que l’utilisateur souhaite afficher. On peut citer :

  • utiliser la moyenne des valeurs des cubes traversés ;
  • utiliser la valeur maximale des cubes traversés, abrégé MIP pour maximum intensity projection ;
  • utiliser la valeur minimale des cubes traversés, abrégé MinIP pour minimum intensity projection ;
  • somme des valeurs traversées ;
  • intégrale des valeurs traversées ;
  • etc.

Dans cet exemple nous allons utiliser la valeur maximale grâce au filtre vtkFixedPointVolumeRayCastMapper. Voici notre pipeline :

Ray casting pipeline

Elle commence par reader qui ne prend rien en entrée mais agit sur le système en lisant le fichier, puis on utilise un VolumeRayCastMapper qui va se charger de faire le lancer de rayon et le calcul MIP. On le passe ensuite à l’objet vtkVolume qui est le pendant volumique du vtkActor utilisé pour les primitives géométriques.

Le résultat :

Résultat MIP

Ça y est on commence à voir l’intérieur et l’extérieur. La couleur d’un pixel est donc la valeur maximale du matériau traversé, en gros le matériau le plus dense (les os et les dents dans notre cas). Mais il est encore difficile de situer chacun des éléments dans l’espace, ce qui est l’inconvénient majeur de la méthode MIP. On peut contourner ce problème en créant une animation :

Animation MIP

Il est ensuite possible de colorer les différents pixels grâce à une fonction qui va associer chaque valeur à une couleur, appelée fonction de transfert. Si on connaît la plage de valeur de chaque élément à faire ressortir, on peut lui associer des couleurs similaires. Ici les dents en rouge, les os en jaune et la peau en bleu :

MIP coloré

Autres types de rendu

Ces exemples simples ont permis de découvrir toute la souplesse et la puissance de l’architecture en pipeline de VTK. Il existe de nombreux autres filtres qui répondent aux besoins de la visualisation de données scientifiques. Citons les grandes catégories :

  • la coloration, c’est-à-dire associer une plage de valeur à un ensemble de couleurs :

exemple de différentes échelles de couleur

  • création de contours (lignes, surface…)

exemple contours

  • affichage de symboles (glyphs)

exemple glyphs

  • affichage de lignes de courant (streamlines)

exemple lignes de courant

  • découpage de volume

exemple découpage de volume

  • déformation de maillages

exemple déformation de maillages

  • travail sur des images

exemple de modification d’image

  • rendu volumique

Rendu volumique

  • rendu géographique
  • affichage de graphes
  • analyse de données (Big Data)

Et, s’il vous manque des outils, le code ouvert et l’architecture modulaire de VTK permettent de les développer, soit vous-même, soit via un prestataire tel que Kitware. Vous pouvez aussi en discuter sur le forum de VTK ou encore participer directement au développement (rapport de bug, discussion, proposition de nouvelle fonctionnalité…) sur l'instance gitlab dédiée.

Conclusion

VTK est donc une boîte à outils très puissante dédiée à la visualisation de données. Cette présentation n’a fait qu’effleurer les fonctionnalités de base pour illustrer l’utilisation du pipeline, et je vous encourage à aller consulter les exemples pour un panorama plus complet.

Pour finir, si vous ne développez pas des applications de visualisation scientifique, il se peut qu’associer les filtres à la main via un langage de programmation vous paraisse assez laborieux. C’est pour cela que Kitware a développé une application qui s’appuie sur VTK et permet de manipuler très facilement le pipeline : Paraview.

Mais ce sera pour une prochaine dépêche !

Aller plus loin

  • # Super article

    Posté par  . Évalué à 9 (+8/-0).

    J'adore, c'était très agréable à lire. Je ne savais pas qui était derrière Cmake, j'imaginais un projet opensource comme n'importe quel autre ^

    En tout cas c'est très intéressant de voir comment fonctionne VTK, cette approche en couche me plaît beaucoup et on sent bien que ça en fait un outils puissant.

    Petite question, ça peut cracher un modèle 3D, genre collada ou obj ?

    • [^] # Re: Super article

      Posté par  . Évalué à 3 (+3/-0).

      Salut,
      Je ne connais pas collada (en tout cas, pas plus qu'une lecture rapide de https://www.khronos.org/collada/), mais VTK supporte une floppée de modèle de données (lire topologie + géométrie), depuis des représentations très structurées (style bitmaps 3D) à des choses de type liste de vertex.
      Détails ici: https://kitware.github.io/vtk-examples/site/VTKBook/05Chapter5/

      Avec n'importe lequel des wrappers de la librairie VTK, on peut manipuler ces données, spécifier des vues (position de caméra et éclairage), etc… Reste à trouver le bon intermédiaire pour convertir tout ça en collada par exemple (ce que VTK ne sait a priori pas faire native, du moins à ma connaissance)

    • [^] # Re: Super article

      Posté par  (site Web personnel) . Évalué à 3 (+2/-0).

      Pas sûr que VTK gère le collada, mais il en gère pas mal d’autres qui pourraient te satisfaire (vrml, x3D, POV…), il faut regarder dans le user guide chapitre 12.4.

      Il semble aussi que VTK sait lire et écrire le format glTF sensé remplacer le collada :
      https://blog.kitware.com/introducing-gltf-2-0-support-in-vtk-and-paraview/

    • [^] # Re: Super article

      Posté par  . Évalué à 6 (+4/-0).

      Je rebondis, la news est super et la présentation de KitWare donne envie de postuler ! (Dans les autres structures qui font rêver, Igalia, une coopérative catalane dont certain-e-s membres travaillent sur des projets passionnants.)

      • [^] # Re: Super article

        Posté par  . Évalué à 3 (+3/-0). Dernière modification le 08/02/21 à 15:00.

        Je rejoins le clan des félicitants ! Bravo pour la clarté.

        Petite précision : l'entreprise américaine est détenue par les employés. La branche française n'est pas concernée =)

    • [^] # Re: Super article

      Posté par  . Évalué à 2 (+4/-2).

      Je ne suis pas sur que cmake soit un logiciel dont il faille se vanter.
      C'est le pire build systeme que je connais.
      Celui qui m'a fait perdre le plus de temps, celui qui m'embete le plus a chaque fois que je suis oblige d'y toucher.
      Et enfin, celui dont le seul argument de vente est: "ca marche sous MS windaube"

      • [^] # Re: Super article

        Posté par  (site Web personnel) . Évalué à 8 (+6/-0).

        C'est le pire build systeme que je connais.

        Normal, c'est pas un système de build. C'est un builder de système de build.

        Celui qui m'a fait perdre le plus de temps, celui qui m'embete le plus a chaque fois que je suis oblige d'y toucher.

        Ta non maitrise d'un système ne signifie pas que ledit système est pourri.

        Et enfin, celui dont le seul argument de vente est: "ca marche sous MS windaube"

        Roh le vilain troll… On n'est pas vendredi pourtant.

        Simplification (enfin pour pour certains a priori), de belles sorties colorées avec barre de progression quand on génère des Makefiles ont séduit plus d'un linuxien !

        • [^] # Re: Super article

          Posté par  . Évalué à 0 (+2/-2). Dernière modification le 12/02/21 à 08:56.

          Si on est force de compiler du c++ avec tout un bouzin en Python, scons est une bien meilleure alternative a cmake.
          En resume:
          scons >> cmake.

          PS: se lit "scons est tres superieure a cmake"

          • [^] # Re: Super article

            Posté par  . Évalué à 4 (+4/-0).

            J'ai jamais utilisé scons, tu aurais un argumentaire ?

            CMake est plein de défauts c'est sûr (entre autres la prise en main), mais il en reste sacrément puissant pour certains cas, particulièrement les gros projets avec moultes dépendances, options, l'intégration de la gestion des tests, et du multiplateforme à supporter.

          • [^] # Re: Super article

            Posté par  (site Web personnel) . Évalué à 5 (+3/-0).

            En resume:
            scons >> cmake.

            Tu résumes une phrase de 22 mots en 2. Il ne suffit pas d'affirmer une chose pour qu'elle soit vraie.

            Pour l'instant, j'ai plus l'impression que tu es déçu que ce ne soit pas de ton logiciel préféré dont on parle.

            Je ne demande qu'à être convaincu. Fournis nous des exemples, montre nous, avec de véritables cas d'usage, que scons est meilleur que CMake (note : perso, n'ayant jamais utilisé scons, je n'en sais absolument rien, c'est peut être vrai, comme c'est peut être faux, ou tout simplement différent).

            Montre nous les lacunes de CMake là où scons le torche. En bref, prouve-le, au lieu de simplement faire des affirmations sans aucun fondement.

      • [^] # Re: Super article

        Posté par  . Évalué à 2 (+1/-0).

        A l epoque de sa sortie il n existait que Make ou du moins aucun autre ne s'en distinguait. CMake permettait de créer facilement un système compilant sur n importe quel Linux, sous Mac et sous Windows. Cela a permis à de petit programme C de marcher sur d autres OS sans s en soucier vraiment.

      • [^] # Re: Super article

        Posté par  . Évalué à 5 (+3/-0).

        Celui qui m'a fait perdre le plus de temps, celui qui m'embete le plus a chaque fois que je suis oblige d'y toucher.

        Plus que les autotools ? Tu es un habitué de la syntaxe m4 ?

        Plus que les builds visual studio et xcode ?

        Parceque c'est à ça qu'il faut le comparer pour comprendre son intérêt. Il est arrivé bien avant scons et résout des problèmes différents, il s'est en plus enrichi avec des outils de packaging.

        Mais du coup toi tu veux scons ? Pourquoi lui et pas ninja, meson, bazel, gradle,… ?

        Reprocher à un projet son logiciel de build c'est comme reprocher le langage, si t'a pas d'arguments (non le fait que tu ne sache pas t'en servir n'en ai pas un et la compatibilité sur d'autres environnement, ne t'en déplaise, peut être t'es important pour le projet. Dis toi que c'est peut être ta plate-forme qui est celle qu'ils s'embêtent à supporter) ce n'est que du bruit et ça n'estque ddu troll.

        cmake marche très bien et il est bien répendu. Des systèmes plus récents pourquoi pas, mais scons n'a pas eu le temps d'être établi qu'il s'est fait surclasser par différents outils. Il est important d'attendre encore un peu :-)

  • # Sur les quadriques

    Posté par  . Évalué à 2 (+2/-1).

    Je ne connaissais pas les quadriques, c'est pas la version française qui m'aurait aidé. La version anglaise est bien mieux rédigée. C'est une bonne pratique de lire au moins ces deux versions de Wikipedia, même en mathématiques pures. D'habitude la différence de qualité n'est pas aussi marquée (la fr se défend bien sur les maths).

    Voilà, c'était le jour du commentaire pas (très) constructif.

    • [^] # Re: Sur les quadriques

      Posté par  (site Web personnel) . Évalué à 2 (+1/-0).

      Peux tu préciser ce que tu reproches à l'article français de Wikipédia ? Car l'introduction apporte pourtant une définition assez claire de ce qu'est une quadrique :

      En mathématiques, et plus précisément en géométrie euclidienne, une quadrique, ou surface quadratique, est une surface de l'espace euclidien de dimension 3, lieu des points vérifiant une équation cartésienne de degré 2

      Ax^2+By^2+Cz^2+2Dyz+2Exz+2Fxy+Gx+Hy+Iz+J=0

      les coefficients A à J étant réels, avec A, B, C, D, E, F non tous nuls.

      • [^] # Re: Sur les quadriques

        Posté par  . Évalué à 9 (+8/-0). Dernière modification le 06/02/21 à 17:32.

        Tu vois, toi aussi tu te fais avoir. Ce n'est pas la définition d'une quadrique, c'est un cas particulier.

        Plus généralement, on peut considérer les quadriques dans le cadre des espaces affines, de dimension 3 ou plus. Ce sont alors des hypersurfaces, lieu d'annulation (en) d'un polynôme de degré 2. On peut également les étudier dans le cadre de la géométrie projective, qui simplifie et unifie complètement les résultats. On peut enfin prendre un autre corps de base que celui des réels.

        C'est laborieux, on présente un cas particulier qui n'est pas des plus simples, puis après on explique qu'on peut généraliser, en dimension, puis en changeant le corps. Les coniques ne sont pas des quadriques selon la version fr, sans justification particulière.

        In mathematics, a quadric or quadric surface (quadric hypersurface in higher dimensions), is a generalization of conic sections (ellipses, parabolas, and hyperbolas).

        Là j'intuite direct ce que c'est et l'intérêt que j'attends de la notion. Les coniques, ça parle et il y a moins besoin de perdre du temps dessus (sauf si tu connais pas auquel cas tu te rapportes à l'article ad-hoc). Le non-mathématicien a accès à la notion sans trop y connaître. En 1 phrase et sans équation.

        It is a hypersurface (of dimension D) in a (D + 1)-dimensional space, and it is defined as the zero set of an irreducible polynomial of degree two in D + 1 variables (D = 1 in the case of conic sections).

        Là on a direct la définition en langue courante et sans trop sacrifier à la rigueur (il eut fallut nous dire de quel espace on parle, mais la française introduit un espace euclidien à tort). C'est le mathématicien qui sera satisfait cette fois car il comprend tout de suite en quoi consiste la généralisation de la 1ère phrase.

        When the defining polynomial is not absolutely irreducible, the zero set is generally not considered a quadric, although it is often called a degenerate quadric or a reducible quadric.

        Bon là c'est un détail technique, à voir si ça a sa place si tôt.

        formule2_quadrique_anglaise

        On a déjà deux variantes d'écriture donnée, bien plus condensées, beaucoup moins relou à lire (surtout l'écriture matricielle que je cite) parce que ce sont des choses connues (tout de suite: formes, linéaire et quadratique). Si tu ne connais pas ton algèbre linéaire ça va te sembler incompréhensible, néanmoins la première formule doit permettre de s'en sortir.

        La version anglaise fait plus pro/universitaire/moderne, la version française fait très lycéen. C'est bien simple j'ai pas bien pigé l'intérêt du truc sur la française (alors que j'ai étudié la relativité restreinte! cf. hyperboloïde), par réflexe je suis allé sur l'anglaise, et là en 3 phrases et deux équations j'ai tout de suite percuté tout simplement parce que j'ai pu faire le lien avec le reste de mes connaissances mathématiques.

    • [^] # Re: Sur les quadriques

      Posté par  . Évalué à 4 (+3/-1).

      . D'habitude la différence de qualité n'est pas aussi marquée (la fr se défend bien sur les maths).

      Franchement je ne sais pas si j'ai une malchance particulière mais que ce soit pour les mathématiques ou la musique je trouve que la wikipédia française comme anglaise ont tendance à présenter de façon complexe et confuse beaucoup de notions qui peuvent aussi être présentées de façon claire.

      Il y a des explications à cela, qui sont presque la plupart des absences de choix éditoriaux: public pas très clair (mathématicien ou généraliste) approche historique ou non pour expliquer une notion? etc. Manque de cohérence (forcément, vu que ce n'est pas un cours!)

      Pour les mathématiques je n'utilise presque jamais wikipédia, si ma bibliothèque me fait défaut je cherche simplement un cours de fac en ligne, voire dans certain cas des mémoires de master.

      Si on a un bagage mathématique plus léger et qu'on a besoin d'un petit dépannage (par exemple si on se demande ce qu'est une quadrique) je n'ai pas de proposition plus réaliste que de regarder wikipédia mais ce n'est pas une source particulièrement agréable.

  • # pyvista

    Posté par  (site Web personnel) . Évalué à 3 (+2/-0).

    Je voulais juste faire un peu de pub à pyvista qui est une surcouche qui m'a rendu la vie avec VTK un peu plus simple pendant ma thèse. Oui, VTK a des bindings python, mais pas intuitifs du tout à utiliser pour qui n'est pas familier avec le C++. Pour faire du quick and dirty comme on a souvent besoin de faire en recherche, pyvista est votre ami!

    • [^] # Re: pyvista

      Posté par  (site Web personnel) . Évalué à 2 (+1/-0). Dernière modification le 04/03/21 à 16:01.

      Leur slogan est "VTK for humans" :-)

      Effectivement il semble que la complexité de la gestion de la pipeline est cachée derrière une façade, ce qui doit permettre d’effectuer des rendus "classiques" assez rapidement et de façon plus "pythonesque".

      Super découverte, merci pour le partage !

      • [^] # Re: pyvista

        Posté par  (site Web personnel) . Évalué à 2 (+1/-0).

        En dehors des rendus, j'apprécie particulièrement que toutes les données (coordonnées, valeurs scalaires associées aux points ou aux cellules) soient directement accessibles comme des arrays numpy. Ça rend la manipulation de données beaucoup plus digestes pour un habitué numpy comme moi.

        Exemple, en pyvista: mesh.point_arrays["nomdesvaleurs"] *= 2 vs en VTK mesh.getPointArrays().getArray("nomdesvaleurs").getData().… euh non en fait je sais plus de tête comment on fait, justement. ☺

    • [^] # Re: pyvista

      Posté par  (site Web personnel) . Évalué à 3 (+1/-0).

      Les binding python de VTK, c'est ce qu'on utilise dans preview-generator pour proposer une prévisualisation des modèles 3D.

      C'est du code qui a été écrit par un contributeur durant PyConFr 2019 à Bordeaux ; effectivement le code n'est pas forcément accessible au « quidam lambda »

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.