1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Luận văn thạc sĩ VNU IMPLICITATION DE SURFACES RATIONNELLES

50 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

INSTITUT DE LA FRANCOPHONIE POUR L’INFORMATIQUE RAPPORT DE STAGE IMPLICITATION DE SURFACES RATIONNELLES Présenté pour l’obtention Du « Diplơme d’Etudes Professionnelles Approfondies » Préparé sous la direction de Bernard MOURRAIN, Chef du projet GALAAD - INRIA Présenté et soutenu publiquement Par Van Thoi TRAN Novembre 2004 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Remerciements J’adresse toute ma gratitude mon responsable de stage, Monsieur Bernard Mourrain, pour sa disponibilité, son soutien constant et son aide précieuse durant ce stage Je voudrais également remercier chaleureusement Laurent Busé pour l’aide permanente qu’il m’a prodigué Je dois encore remercier Grégory Gatellier pour sa collaboration serrée tout au long de mon stage Merci également Olivier Ruatta pour ses conseils utiles qu’il m’a donnés J’ai le plaisir de remercier Aurélie Richard, Monique Teillaud et Vu Van Thinh pour leur accueil, leur disponibilité et leur gentillesse pendant mon séjour en France J’exprime mon entière reconnaissance envers ma famille et mes amis pour leurs soutiens, leurs aides et leurs encouragements LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Implicitation de surfaces rationnelles Table des matières Table des matières Table des matières Résumé Abstract .6 Liste des figures Chapitre : INTRODUCTION .8 1.1 Problématique 1.2 Motivation .9 1.3 Environnement de stage 10 Chapitre : 2.1 RESULTATS PRELIMINAIRES 11 Surface rationnelle et équation implicite .11 2.2 Méthodes d’implicitation .12 2.2.1 Implicitation exacte 12 2.2.2 Implicitation approchée 13 Chapitre : METHODES D’IMPLICITATION 14 3.1 Elimination de variables avec le résultant 14 3.1.1 Construction de Macaulay 14 3.1.2 Lien avec le problème d’implicitation 18 3.1.3 Remarques 20 3.2 Implicitation et Bézoutiens 20 3.2.1 Bézoutiens 21 3.2.2 Application l’implicitation 23 3.3 Problème d’approximation 26 3.3.1 Principe de la méthode 26 3.3.2 Mesure de l’erreur 30 Chapitre : IMPLEMENTATION .33 4.1 Mise en œuvre 33 4.1.1 Partie d’implicitation 33 4.1.2 Partie de test .34 4.1.3 Partie de connexion 34 4.1.4 Partie de visualisation .34 Van Thoi TRAN -3- LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Implicitation de surfaces rationnelles Table des matières 4.2 Expériences numériques 35 4.2.1 Méthodes exactes 35 4.2.2 Méthode approchée 38 Chapitre : CONCLUSION 42 Annexe .43 Références .49 Van Thoi TRAN -4- LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Implicitation de surfaces rationnelles Résumé Résumé Le problème d'implicitation de courbes ou de surfaces rationnelles consiste en la détermination de l'équation implicite de telles courbes ou surfaces Calculer une équation implicite est un problème important en CAO (Conception Assistée par Ordinateur) et dans beaucoup de problèmes de géométrie combinatoire Alors plusieurs méthodes sont connues pour résoudre ce problème Dans ce rapport, on va faire un tour d'horizon de différentes méthodes d’implicitation de surfaces rationnelles : résultant, Bézoutiens et complexes d'approximation L’implémentation de ces méthodes est contribuée la bibliothèque C++ SYNAPS orientée vers le calcul symbolique/numérique Mots clés : implicitation, théorie de résultants, construction de Macaulay, bézoutiens, implicitation approchée Van Thoi TRAN -5- LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Implicitation de surfaces rationnelles Abstract Abstract The implicitization problem for rational curves or surfaces consists of the determination of implicit equation of any curves or surfaces Calculating an implicit equation is a significant problem in CAD (Computer-Aided Design) and in many problems of combinative geometric Then several methods are known to solve this problem In this report, we will make a review of various implicitization methods for rational surfaces : resultant, Bezoutiens and approximation complexes The implementation of these methods is contributed to the library C++ SYNAPS directed towards symbolic/numeric calculation Keywords : implicitization, resultant theory, Macaulay construction, bezoutiens, approximative implicitization Van Thoi TRAN -6- LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Implicitation de surfaces rationnelles Liste des figures Liste des figures Figure : Graphe de S _24 Figure : Affichage de S1 28 Figure : Forme approchée de S1 _29 Figure : Superposition de S1 et son approximation _30 Figure : Une mauvaise approximation de S1 _31 Figure : Approchée degré _39 Figure : Approchée degré _40 Figure : Mauvaise approximation degré _41 Van Thoi TRAN -7- LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Implicitation de surfaces rationnelles INTRODUCTION Chapitre : INTRODUCTION 1.1 Problématique Un objet algébrique peut être représenté classiquement par deux manières : la première est de donner son équation implicite, et la deuxième est d’en donner une paramétrisation Ces deux méthodes ont des avantages aussi que des inconvénients Par exemple, on a la facilité de représenter une surface sous forme paramétrée, mais plus difficile de déterminer si un point de l’espace appartient ou non cette surface Par contre, ce problème est très facile de résoudre par une simple substitution si l’on a l’équation implicite de cette surface De plus, l’équation implicite peut aider tracer une courbe ou une surface au voisinage d'une singularité, calculer une autointersection d'offsets ou bien encore calculer l'intersection de courbes ou de surfaces Cependant, trouver l’équation implicite n’est pas facile ! L’existante de deux mécanismes de représentation ci-dessus se pose le problème de convertir de l’une vers l’autre Tout objet algébrique donné par une paramétrisation rationnelle admet une équation implicite, et le problème qui consiste déterminer celle-ci est appelé problème d’implicitation Le problème inverse qui consiste trouver une représentation paramétrique d’un objet algébrique donné sous forme implicite est donc appelé problème de paramétrisation Alors nous ne nous intéressons qu’ici au problème d’implicitation qui est très important dans CAO (Conception Assistée par Ordinateur) et beaucoup d’autres problèmes de géométrie combinatoire Van Thoi TRAN -8- LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Implicitation de surfaces rationnelles INTRODUCTION Le problème d'implicitation dans le cas des courbes est simple et bien connu : un calcul de résultant multivarié de deux polynômes en une seule variable fournit toujours la réponse Par contre, le cas des surfaces est bien plus compliqué Plusieurs méthodes sont connues pour résoudre ce problème d'implicitation pour les surfaces rationnelles Alors elles le réduisent toutes en un problème d'élimination de variables Ce stage a donc pour but de faire une étude sur quelques méthodes d’implicitation, de les implémenter et de tester les codes obtenus sur des exemples concrets venant de CAO 1.2 Motivation Ce travail est réalisé dans le cadre du contrat européen GAIA (Application of approximate algebraic geometry in industrial computed aided design, IST 199929010 ; entre l’INRIA et ses partenaires : Université d’Olso, Université de Nice – Sophia Antipolis, SINTEF, société Think3), dont l’objectif est de construire une bibliothèque C++ nommée SYNAPS (SYmbolic and Numeric APplicationS)1 Cette bibliothèque, développée pour les systèmes d’UNIX, fournira une plateforme logique intégrée les fonctionnalités de plusieurs logiciels de calcul scientifique existants [12] dans cet environnement Jusqu’à présent, on a implémenté dans SYNAPS les modules suivants : • Input/Output : les entrées/sorties standardisées en format de Maple, LaTeX et VRML (connexion avec POV-Ray) • Arithmetic : une extension des classes arithmétiques basée sur les librairies GMP et MPFR • Linear algebra : les bases de l’algèbre linéaire : vecteur, matrice,… • Resultant : les bases de résultants univariés et multivariés Environnement de calcul symbolique / numérique Site Web http://www-sop.inria.fr/galaad/logiciels/synaps Van Thoi TRAN -9- LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Implicitation de surfaces rationnelles INTRODUCTION • Solvers : les méthodes de résolution pour les systèmes d’équations polynơmiales • Geometry : les classes géométriques de bases : représentation de courbes et surfaces algébriques, les calculs de l’intersection et de la topologie, … La contribution de ce stage au SYNAPS est visée la partie d’implicitation de courbes et de surfaces paramétriques Il s’agit d’un module nommé Implicit pour les calculs de l’équation implicite d’une représentation paramétrique 1.3 Environnement de stage Le projet GALAAD (Géométrie, Algèbre et Algorithmes), créé le 15 2001 février, est un projet commun entre l’INRIA Sophia Antipolis et le laboratoire J.A Dieudonné – UMR du CNRS Nº 6621, l’Université de Nice, Sophia Antipolis Le programme de recherche de cette équipe s’articule autour de la géométrie algébrique effective et de ses applications Son objectif est de développer des méthodes algorithmiques permettant de résoudre efficacement et de manière fiable les problèmes géométriques et algébriques rencontrés dans les domaines tels que la CAO, la robotique, la vision par ordinateur, la biologie moléculaire, … Sa démarche s’appuie sur les axes de recherche suivants : • La géométrie pour modéliser, comprendre, classifier • L’algèbre pour calculer, simplifier, résoudre, exploiter les structures • Le lien symbolique-numérique pour expérimenter, certifier, valider Le site Web du groupe : http://www-sop.inria.fr/galaad/ Van Thoi TRAN -10- LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Implicitation de surfaces rationnelles ⎧ p (t1 , t ) ⎪ ⎪ p (t , t ) S2 : ⎨ 1 ⎪ p (t1 , t ) ⎪ p (t , t ) ⎩ IMPLEMENTATION = 2t + t1 + 19 + 4t1 t + 7t + t1 2 = 2t1 + 13 + t1t + 7t1 t 2 = 2t + t1 + 15 + 4t1 t + 6t + t1 2 = 2t + t1 + 17 + 9t1 t + 7t + t1 2 Paramétrisation de degré 3, sans points base Résultat souhaité : équation de degré Résultat : Méthode Taille de la matrice Degré de l’équation Résultat Bezout 12 11 10.91s Macaulay 36 24 629.80s - La méthode bézoutienne retourne un multiple de l’équation implicite de degré 11 - La taille de la matrice de Macaulay est assez grosse C’est pourquoi le temps de calcul dans ce cas-là est grand De plus, l’équation de degré 24 que l’on a obtenue n’est pas une bonne solution o Exemples : ⎧ p (t , t ) ⎪ ⎪ p (t , t ) S3 : ⎨ ⎪ p (t , t ) ⎪ p (t , t ) ⎩ = 3t1 + 4t1 t + 5t + 7t1 + 11 + 9t1t + t = t1 2 = t2 = 2t + 3t1 t + 7t + 9t1 + 11 + 7t1t 2 Paramétrisation de degré 4, sans point base Résultat souhaité : équation de degré 16 Van Thoi TRAN -36- LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Implicitation de surfaces rationnelles IMPLEMENTATION Résultat : Méthode Taille de la matrice Degré de l’équation Résultat Bezout 22 22 1007.74s Macaulay 66 // 1297s - A cause de grand degré de la paramétrisation (4,4), la matrice bézoutienne deviendra assez grosse, et le processus dure longtemps : près de 18 minutes - La taille de la matrice obtenue est énormément trop grande Alors le calcul de la matrice de Macaulay devenait coûteux Après 23 minutes de l’exécution, ce processus consomme plus d’un giga-octets de mémoire de la machine de test Par conséquent, il a été automatiquement coupé par le système ! o Exemples : ⎧ p (t , t ) ⎪ ⎪ p (t , t ) S4 : ⎨ ⎪ p (t , t ) ⎪ p (t , t ) ⎩ = 51 − 57t1 + 6t1 + 6t 2 = 14004 − 7632t − 14004t1 + 7716t1t − 84t1 t 2 = 1692 − 972t − 1692t1 + 1056t1t − 84t1t 2 = 4824 − 3024t − 4824t1 + 3360t1t − 84t1t − 252t1 t 2 Paramétrisation de degré 2, avec points bases Résultat souhaité : équation de degré Résultat : Méthode Taille de la matrice Degré de l’équation Résultat Bezout 0.04s Macaulay 45 NULL 19.88s La méthode de Macaulay donne NULL cause de la présence de points bases pour la paramétrisation Van Thoi TRAN -37- LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Implicitation de surfaces rationnelles IMPLEMENTATION En observant ces résultats, on voit bien que la méthode de Macaulay échoue dans la plupart de cas, soit par cause de points bases, soit par grosse de calcul Surtout elle est toujours moins efficace que le bézoutien 4.2.2 Méthode approchée Je reprends ici la surface S1 : ⎧ p (t1 , t ) ⎪ p (t , t ) ⎪ S1 : ⎨ 1 ⎪ p (t1 , t ) ⎪⎩ p3 (t1 , t ) = = 3t1 t + 3t − t 2 = 3t1t + 3t1 − t1 = 3t − 3t1 3 Paramétrisation de dégré o Premier test : * U1 = { (-0.1,0), (0.3,0.5), (0.3,-0.5), (-0.5,0.1), (0.6,-0.2), (-0.2,0.6), (-0.2,-0.2), (0.5,0.5), (-0.5,0.2), (0.7,0.5), (0.8,-0.4), (-0.4,-0.4) } * q1 = { 1, 2, } * Résultat : équation de degré Van Thoi TRAN -38- LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Implicitation de surfaces rationnelles IMPLEMENTATION Figure : Approchée degré Pour ce test, on voit bien que les deux images sont bien coïncidées Alors on a de bons choix de points d’approximation o Deuxième test : * U2 = { (-0.1, 0), (0.3, 0.5), (0.3, -0.5), (-0.5, 0.1), (0.6, -0.2), (-0.2, 0.6), (-0.2, -0.2), (0.5, 0.5), (-0.5, 0.2), } * q2 = { 1, 1, } * Résultat : équation de degré Van Thoi TRAN -39- LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Implicitation de surfaces rationnelles IMPLEMENTATION Figure : Approchée degré Même si le degré de l’équation implicite est petit, la forme d’affichage est assez bien o Troisième test : * U3 = { (-0.1, 0), (0.3, 0.5), (0.3, -0.5), (-0.5, 0.1), (0.6, -0.2), (-0.2, 0.6), (-0.2, -0.2), (-0.1, 0.3), (-0.5, 0.2), (0.7, -0.1), (0.2, -0.4), (-0.4, -0.4)} * q3 = { 1, 2, } * Résultat : équation de degré Van Thoi TRAN -40- LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Implicitation de surfaces rationnelles IMPLEMENTATION Figure : Mauvaise approximation degré On retrouve ici l’équation de degré car les degrés d’approximation utilisés sont les mêmes que le premier cas Pourtant, en modifiant quelques points dans la région choisie, la surface obtenue n’est plus de forme de celle d’origine Alors dans ce cas, il est nécessaire d’une mesure d’erreur afin de trouver les bons choix de région d’approximation Van Thoi TRAN -41- LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Implicitation de surfaces rationnelles CONCLUSION Chapitre : CONCLUSION On a réussi trouver l’équation implicite d’une surface rationnelle avec les méthodes présentées dans le troisième chapitre Néanmoins, il existe ici quelques limitations qui nous conduisent des perspectives d’un travail futur En analysant les résultats obtenus, on peut trouver facilement que la méthode de Macaulay n’est pas une solution acceptable pour le problème d’implicitation cause de ses limitations d’applications dans le cas de point base et de gros calcul Cela explique pourquoi cette méthode est éviter Le bézoutien, grâce sa capacité de résoudre les problèmes avec points bases, peut être une très bonne approche De plus, le temps de calcul dans ce cas de bézoutien est également réduit Malheureusement, je n’ai pas encore réussi implémenter complètement son algorithme d’implicitation abordé dans le troisième chapitre En effet, l’implémentation actuelle de bézoutien dans SYNAPS ne nous donne pas exactement l’équation implicite Alors il est nécessaire une amélioration de codes sources pour cet algorithme-là D’un autre côté, le problème d’approximation n’est pas encore bien résolu malgré quelques bons résultats avec l’évaluation A cause des erreurs qui viennent avec les points et les degrés donnés, cette méthode retourne souvent des mauvaises solutions C’est pourquoi il faut mettre ici un mécanisme efficace pour le choix des points dans l’espace des paramètres, ou bien encore trouver une autre approche pour construire la matrice d’évaluation Van Thoi TRAN -42- LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Implicitation de surfaces rationnelles Annexe Annexe Je mets ici quelques fichiers de codes sources du module de visualisation et leurs exemples d’utilisations Fichier Double.mmh : définition du type foreign "C++" { Double: Type == "double"; Double_(i: Int): Double == "double(i)"; Int_(d: Double): Int == "int(d)"; assign (v : Variable, w: Int): Double == "set(v,double(w)); return v"; assign (v : Variable, s: String): Double == "set(v,atof(s));return v"; new (v : LiteralFloat) : Double == "as_double(v)"; infix + (v : Double, w: Double): Double == "v+w"; infix + (v : Double, w: Int): Double == "v+w"; infix + (v : Int, w: Double): Double == "v+w"; infix - (v : Double, w: Double): Double == "v-w"; infix - (v : Double, w: Int): Double == "v-w"; infix - (v : Int, w: Double): Double == "v-w"; infix - (w: Double): Double == "-w"; infix * (v : Double, w: Double): Double == "v*w"; infix * (v : Double, w: Int): Double == "v*w"; infix * (v : Int, w: Double): Double == "v*w"; infix / (v : Double, w: Double): Double == "v/w"; infix / (v : Double, w: Int): Double == "v/w"; infix / (v : Int, w: Double): Double == "v/w"; infix / (v : Int, w: Int): Double == "double(v)/w"; } Fichier viewer.mmh : fonction d’affichage foreign "C++" { preamble Van Thoi TRAN -43- LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Implicitation de surfaces rationnelles Annexe /" #include #include "axel/viewer/geomview.H" "/; Scene : Type == "geomview::output"; scene(s: String) : Scene == "geomview::output(s)"; view (sc : Scene) : Int == "sc.view();return 1"; init (sc : Scene) : Int == "sc.init();return 1"; } Fichier point.mmh : définition du point foreign "C++" { preamble /" #include "axel/affine/point.H" #include "axel/viewer/geomview_point_set.H" "/; use "viewer"; Point : Type =="affine::point"; point(m: Int, s: String): Point == "affine::point(m,s)"; print(sc:Scene, pt:Point):Int == "geomview::print(sc,pt,0.1,1,0,0);return 1"; } Fichier pointset.mmh : définition d’un ensemble de points foreign "C++" { preamble /" #include "axel/affine/point_set.H" #include "axel/viewer/geomview_point_set.H" "/; use "point"; use "viewer"; PointSet : Type =="affine::point_set"; pointset(p: Point) : PointSet == "affine::point_set(p)"; infix + (ps: PointSet,pt: Point): PointSet := "affine::point_setr(ps); r.insert(pt);return r"; infix + (ps1: PointSet,ps2: PointSet): PointSet := "affine::point_setr(ps1); for(affine::point_set::const_iterator it=ps2.begin(); it !=ps2.end(); it++) r.insert(*it); return r"; Van Thoi TRAN -44- LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Implicitation de surfaces rationnelles Annexe view(s: PointSet):Int == " geomview::output g_out(\"mmx.gmv\"); geomview::print(g_out,s); g_out.view(); return 1"; infix

Ngày đăng: 06/12/2022, 15:42

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN