Le fichier PolyedresII.mac

Pour proposer des idées, ou simplement discuter

Le fichier PolyedresII.mac

Messagepar Alphonse Capriani » 19 Juil 2009 02:07

Le fichier PolyedresII.mac est un fichier composé de nombreuses macros permettant la création de polyèdres variés convexes ou non.

Le fichier et la doc (aide mémoire) est disponible ici : (Dernière mise à jour : 17 juin 2010)

PolyedresII.zip

Voici des exemples des différents types de solides réalisables avec ce fichier :

Polyèdres uniformes







[center]Image
Image
Image
Solides de PlatonSolides de Kepler-PoinsotSolides d'Archimède
Image
Image
Image
Polyèdres non convexes à faces convexesPolyèdres non convexes à faces non convexesPrismes et antiprismes uniformes
[/center]

Solides de Johnson

Image
Hébesphénorotonde triangulaire


Duaux des polyèdres uniformes


ImageImageImage
Solides de CatalanDuaux uniformesDiamants et antidiamants


Stellations


ImageImage
Stellations de l'icosaèdreStellations du cuboctaèdre
Dernière édition par Alphonse Capriani le 28 Mai 2019 13:17, édité 12 fois.
Ya Ba Da Ba Dooo!!!
Avatar de l’utilisateur
Alphonse Capriani
 
Messages: 576
Inscription: 18 Juil 2009 19:10
Localisation: East Harlem - NY

Re: Le fichier PolyedresII.mac

Messagepar P.Fradin » 19 Juil 2009 09:45

Bonjour Alphonse,

Je pense que tu as oublié de mettre le lien vers le fichier en haut de ton message! Je ne sais pas si tu l'avais vu, mais j'avais déjà récopié dans la rubrique Géométrie de l'espace ton dernier message de l'ancien forum (exemples avec PolyedresII.mac), ce n'est pas gênant. Mais de toutes façons, ton fichier devrait être inclus dans la prochaine version de TeXgraph, partir de ce moment il ne devrait plus être dans la rubrique Macros à télécharger.

Auparavant, il faudra que je jette un oeil dans le code car il y a quelques changements, comme par exemple:

  • macro prodvec devient commande Prodvec
  • macro prodscal devient commande Prodscal
  • macro norm devient commande Norm

PS: c'est moi qui vois mal ou il y a un souscis:
  • dans le solide u46, facettes jaunes et facettes vertes, les arêtes se croisent au dessus la bleue?
  • dans le solide du64 on voit des petits morceaux d'arêtes (comme des hachures), c'est du à l'épaisseur de l'arête?
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04

Re: Le fichier PolyedresII.mac

Messagepar Alphonse Capriani » 20 Juil 2009 10:35

Salut Patrick!!

P.Fradin a écrit:e pense que tu as oublié de mettre le lien vers le fichier en haut de ton message!

Euh... En fait, c'est que mon fichier était pas près quand j'ai posté le message. Je comptais éditer le message pendant le week-end, mais j'ai oublié!!
Je ramène le fichier en question demain et je mets le lien aussitot, promis!! ;)

P.Fradin a écrit:Je ne sais pas si tu l'avais vu, mais j'avais déjà récopié dans la rubrique Géométrie de l'espace ton dernier message de l'ancien forum (exemples avec PolyedresII.mac), ce n'est pas gênant.
Ooops!! J'avais pas vu!! :roll:

P.Fradin a écrit:Mais de toutes façons, ton fichier devrait être inclus dans la prochaine version de TeXgraph, partir de ce moment il ne devrait plus être dans la rubrique Macros à télécharger.
Ok d'ac! Elle est prévue pour quand la prochaine version officielle? Parce que pour l'instant, il reste pas mal de truc à corriger dans le fichier...

P.Fradin a écrit:Auparavant, il faudra que je jette un oeil dans le code car il y a quelques changements, comme par exemple:

* macro prodvec devient commande Prodvec
* macro prodscal devient commande Prodscal
* macro norm devient commande Norm

Ces changements de noms sont dans la version actuelle de TeXgraph? J'ai pas fais les modifications dans mon fichier et pourtant ca pose pas de problème chez moi!!

Il faudrait aussi que tu change le type d'encodage du fichier : j'ai jamais réussi à le convertir en UTF8...

P.Fradin a écrit:PS: c'est moi qui vois mal ou il y a un souscis:

* dans le solide u46, facettes jaunes et facettes vertes, les arêtes se croisent au dessus la bleue?
* dans le solide du64 on voit des petits morceaux d'arêtes (comme des hachures), c'est du à l'épaisseur de l'arête?

Concernant le solide U46, c'est tout à fait normal. Pour mieux comprendre comment est construit le solide, je pense qu'il est utile de bien percevoir la manière dont sont agencées les faces au niveau d'un sommet. Après, c'est pour tous les sommets pareil. Je te l'accorde, ces polyèdres sont sévèrement tordus et parfois difficile à comprendre la manière dont ils sont construit.

Pour le DU64, Les petits morceaux d'arêtes sont en effet dûs à l'épaisseur des trait! Je trouve pas ca gênant : au contraire, ca permet d'avoir une meilleur idée de la manière dont s'intersectent les différentes faces du solide.
Ya Ba Da Ba Dooo!!!
Avatar de l’utilisateur
Alphonse Capriani
 
Messages: 576
Inscription: 18 Juil 2009 19:10
Localisation: East Harlem - NY

Re: Le fichier PolyedresII.mac

Messagepar P.Fradin » 20 Juil 2009 11:04

Bonjour Alphonse,

Je n'ai pas trop le temps de répondre en détails maintenant, mais la version "officielle" est pour bientôt, disons avant la mi-aôut en principe.
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04

Re: Le fichier PolyedresII.mac

Messagepar Alphonse Capriani » 20 Juil 2009 13:12

Ok!

Je vais essayer de corriger les principaux soucis de la version actuelle de PolyedresII.mac d'ici le 15 aout. Pour la doc, je vais essayer de me repencher dessus, mais je dois avouer que là, c'est pas la meilleure période pour moi!!

Je te tiens au courant, et d'ici là, je vais poster la version actuelle du fichier (demain matin!).
Ya Ba Da Ba Dooo!!!
Avatar de l’utilisateur
Alphonse Capriani
 
Messages: 576
Inscription: 18 Juil 2009 19:10
Localisation: East Harlem - NY

Re: Le fichier PolyedresII.mac

Messagepar Alphonse Capriani » 21 Juil 2009 09:56

J'ai mis le lien du fichier dans le post initial.

N'hésitez pas à le tester et a mentionner les bugs et autres problèmes dans le fichier...
- - - - -
Parmis les souci à corriger, je cite en vrac :
  • Problème de chiralité pour certains polyèdres uniformes et duaux
  • Problèmes pour les stellations du cuboctaèdre (et un léger souci de syntaxe pour les stellations de l'icosaedre)
  • Absence de diagrammes de stellations pour l'icosaèdre et le cuboctaèdre
  • Noms de macros trop longs!!! :roll: (Cas notament pour les solides de Johnson : les macros J1, ..., J92 n'existent plus!!!)
  • Absence de certains polyèdres (DU71, DU75, antidiamants croisés, ...)
  • Doc à peu près au point pour les polyèdres uniformes, mais médiocre pour le reste!
  • Absence de macro permettant de passer de Build3D à povScene et vice versa (peut être qu'une telle macro, assez générale, aurait plus sa place dans TeXgraph.mac)
  • ...

Concernant la longueur des noms de macros, je me demandais s'il était possible de repousser la limite à ... 30 caractères!!!!! Je sais que j'abuse peut être un peu, mais les noms des polyèdres respectent une certaine nomenclature que j'aimerais préserver dans les noms des macros correspondantes sans avoir à les tronquer excessivement.

Sinon, je penses que tu devrais déplacer ce sujet dans la rubrique discussion! Si tout le monde se met à poster dans cette rubrique, on risque de perdre l'intéret initial de la chose :roll:
Désolé pour le dérangement!!! :lol:
Ya Ba Da Ba Dooo!!!
Avatar de l’utilisateur
Alphonse Capriani
 
Messages: 576
Inscription: 18 Juil 2009 19:10
Localisation: East Harlem - NY

Re: Le fichier PolyedresII.mac

Messagepar P.Fradin » 23 Juil 2009 10:35

Salut Alphonse,

J'ai chargé ton fichier et j'ai commencé à le mettre au nouveau format (et en utf8 bien sûr). Le mieux, si tu es d'accord, serait que je te l'envoie pour que tu puisses faire ce qu'il te reste à faire à partir de cette base, cela m'éviterait de devoir recommencer les mêmes manip ;)
Qu'en penses-tu? Je te mets ça dans ta boite aux lettres.
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04

Re: Le fichier PolyedresII.mac

Messagepar Alphonse Capriani » 23 Juil 2009 10:59

Ah aaaah!! Je vois qu'on a déplacé mon sujet...

Pour le fichier converti en UTF8 et dans le nouveau format, ce serait bien en effet que tu puisse me l'envoyer pour que je puisse travailler à l'avenir dessus.

Sinon, t'as commencé à t'amuser un peu avec? Surtout n'hésite pas à faire des commentaire sur le fichier (critiques, bons points, bug, ...)

A ce sujet, je rajoute dans la liste des défauts à corriger un souci avec la syntaxe Polyedre(<Centre>, <Sommet>, ...) pour les duaux uniformes non bornés. En fait, pour ces polyèdres, on a des soucis quand le centre du polyèdre n'est pas l'origine du repère. Ca vient de la macro transf que je n'ai pas modifié pour ce type de polyèdres...
Ya Ba Da Ba Dooo!!!
Avatar de l’utilisateur
Alphonse Capriani
 
Messages: 576
Inscription: 18 Juil 2009 19:10
Localisation: East Harlem - NY

Re: Le fichier PolyedresII.mac

Messagepar P.Fradin » 23 Juil 2009 11:19

Alphonse Capriani a écrit:Pour le fichier converti en UTF8 et dans le nouveau format, ce serait bien en effet que tu puisse me l'envoyer pour que je puisse travailler à l'avenir dessus..


C'est fait!
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04

Re: Le fichier PolyedresII.mac

Messagepar Alphonse Capriani » 23 Juil 2009 11:21

Ok merci!!
Ya Ba Da Ba Dooo!!!
Avatar de l’utilisateur
Alphonse Capriani
 
Messages: 576
Inscription: 18 Juil 2009 19:10
Localisation: East Harlem - NY

Re: Le fichier PolyedresII.mac

Messagepar P.Fradin » 23 Juil 2009 11:48

Je viens de regarder quelques macros et je pense qu'il y a quelques retouches à faire au niveau des parcours de listes, par exemple le code:

Code: Tout sélectionner
for k from 1 to Nops(L) do z:=L[k] ...


est inefficace (complexité en n² au lieu de n), il vaut mieux utiliser par exemple:

Code: Tout sélectionner
k:=0
for z in L do Inc(k, 1), ...


Sur de très longues listes cela ralentit beaucoup le logiciel (souviens toi des simulations de tirages) et cela peut expliquer pourquoi tu trouves que TeXgraph rame sur certains solides. Si tu es d'accord je posterai dans ce fil quelques unes de ces macros retouchées pour que puisses les mettre à jour dans ton fichier, ok?
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04

Re: Le fichier PolyedresII.mac

Messagepar Alphonse Capriani » 23 Juil 2009 11:53

Tout a fait!!!!

C'est un problème récurrent dans mes macro : je ne réfléchis pas à la meilleure manière de faire vis à vis du temps d'exécution!

Y a probablement pas mal de macros dans le fichier qui souffrent de ce souci (je pense nottament aux stellations...)
Ya Ba Da Ba Dooo!!!
Avatar de l’utilisateur
Alphonse Capriani
 
Messages: 576
Inscription: 18 Juil 2009 19:10
Localisation: East Harlem - NY

Re: Le fichier PolyedresII.mac

Messagepar P.Fradin » 23 Juil 2009 12:12

Je commence ici:

  • la macro Faces, elle fait partie du fichier scene3d.mac (à venir), ce sera la macro FacesNum( liste facettes, liste numéros de facettes). Voici un code possible pour ta macro Faces:

    Code: Tout sélectionner
    [$compt:=0, $F:=Nil,
     for $z in %1 do
          if Re(z)=Re(jump) then
                 Inc(compt,1),
                 if compt=%2 then F, z  fi,
                 F:=Nil
            else Insert(F,z)
            fi
     od];

  • la macro invpoly sera aussi dans TeXgraph.mac ( appelée reverse3d), je te propose ce code:

    Code: Tout sélectionner
    for $F in %1 by jump do
      Reverse( for $Z in F by 2 do Reverse($Z) od ),
    od
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04

Re: Le fichier PolyedresII.mac

Messagepar Alphonse Capriani » 23 Juil 2009 13:03

Tiens? C'est marrant, mais les macros dont tu parles ne sont même pas utilisées dans la suite du fichier!!!!!!!!! :lol:

En fait, ces macros m'aidaient dans la construction des macro, mais je pense qu'au final, elle ne servent pas beaucoup dans la suite.
Il doit y en avoir plusieurs autres comme ca.

A noter aussi qu'il y a une macro nommée "Bug" qui en fait est un n-ième essai de construction du DU75.

Les macros PStar, HStar, OStar et DStar ne sont plus indispensable car ce sont des cas particuliers de la macro PolyStar.
Le problème de boucle se retrouve d'ailleurs dans toutes ces macros : je vais corriger le tir...

Concernant la taille des noms de macros, c'est possible de passer à 30 caractères maxi?
Ya Ba Da Ba Dooo!!!
Avatar de l’utilisateur
Alphonse Capriani
 
Messages: 576
Inscription: 18 Juil 2009 19:10
Localisation: East Harlem - NY

Re: Le fichier PolyedresII.mac

Messagepar P.Fradin » 23 Juil 2009 13:48

Ok, enlève toutes les macros qui ne pas utiles pour la suite. Mais si tu veux je peux quand même mettre quelques codes rectifiés comme modèle, ou mieux, dis-moi quelles sont les macros cruciales qui pourraient peut-être améliorées.

Et les 3 variables: CbarTrRhb1, CbarTrRhb2 et CbarTrRhb3, elles servent?

Pour la taille maxi des noms, c'est passé à 35.
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04

Re: Le fichier PolyedresII.mac

Messagepar Alphonse Capriani » 23 Juil 2009 14:32

P.Fradin a écrit:Ok, enlève toutes les macros qui ne pas utiles pour la suite. Mais si tu veux je peux quand même mettre quelques codes rectifiés comme modèle, ou mieux, dis-moi quelles sont les macros cruciales qui pourraient peut-être améliorées.
Ok : je vais essayer de te poster d'ici ce soir une petite liste de macro incontournable pour le fichier...

P.Fradin a écrit:Et les 3 variables: CbarTrRhb1, CbarTrRhb2 et CbarTrRhb3, elles servent?
Pas encore : en fait, elle le seront prochainement pour créer les quelques 220 stellations du triacontaèdre rhombique. Affaire à suivre...

P.Fradin a écrit:Pour la taille maxi des noms, c'est passé à 35.
Nickel!! Promis, je m'arête là!!! :lol:
Ya Ba Da Ba Dooo!!!
Avatar de l’utilisateur
Alphonse Capriani
 
Messages: 576
Inscription: 18 Juil 2009 19:10
Localisation: East Harlem - NY

Re: Le fichier PolyedresII.mac

Messagepar P.Fradin » 23 Juil 2009 15:01

Suite des propositions de code pour les macros:

  • CDecomp (figurera dans scene3d.mac sous le nom de trianguler):
    Code: Tout sélectionner
       [$num:=0, $k:=0, $Z:=Nil,
         for $z in %1  do
               Inc(k,1),
               if Re(z)=Re(jump) then num:=0, k:=0, Z:=Nil
               else Insert(Z,z)
               fi,
               if k=2 then {on a un point3D dans Z}
                  Inc(num,1),
                  if num=1 then $A:=Z
                  elif num=2 then $C:=Z
                  else $B:=C, $C:=Z, A,B,C,jump
                  fi,
                  Z:=Nil, k:=0
               fi
        od];

  • CStar:

    Code: Tout sélectionner
    [$num:=0, $k:=0, $Z:=Nil,
     for $z in %1  do
         Inc(k,1),
         if Re(z)=Re(jump) then num:=0, k:=0, Z:=Nil
         else Insert(Z,z)
         fi,
         if k=2 then {on a un point3D dans Z}
            Inc(num,1),
            if num=1 then $A:=Z
            elif num=2 then $B:=Z
            elif num=3 then $C:=Z
            else
                $D:=Z, num:=0,
                $E:=interDD([B, C-B], [A, D-A]),
                E, A, B, jump, E, D, C, jump
            fi,
            Z:=Nil, k:=0
         fi
     od];

  • CStarInf:

    Code: Tout sélectionner
    [$num:=0, $k:=0, $Z:=Nil,
     for $z in %1  do
         Inc(k,1),
         if Re(z)=Re(jump) then num:=0, k:=0, Z:=Nil
         else Insert(Z,z)
         fi,
         if k=2 then {on a un point3D dans Z}
            Inc(num,1),
            if num=1 then $A:=Z
            elif num=2 then $B:=Z
            elif num=3 then $C:=Z
            elif num=4 then $D:=Z
            elif num=5 then $E:=Z
            else
                $F:=Z, num:=0,
                $G:=interDD([A, B-A], [D, E-D]),
                A, F, E, G, jump, G, B, C, D, jump,
            fi,
            Z:=Nil, k:=0
         fi
     od
    ];

Il faut que tu testes vite fait si elles font bien ce qu'il faut. Mais là il n'y a qu'un unique parcours de liste ;) .
La suite au prochain épisode...
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04

Re: Le fichier PolyedresII.mac

Messagepar Alphonse Capriani » 23 Juil 2009 15:16

Comme prévu, je poste deux liste de macros. La première regroupe des fonctions sans réel intérêt pour le fichier en lui même et la deuxième est une liste de macro indispensable pour le bon fonctionnement du fichier.

Macro inutiles
  • Face
  • invPoly
  • PolyReg
  • PolyReg3d
J'ai deux remarques à ajouter à propos de cette liste.

> Les fonctions PolyReg et PolyReg3d ne sont pas utilisées dans la suite du fichier mais je pense qu'elle sont très intéressante quand même. Il s'agit en fait d'une extension de la fonction polyreg permettant d'obtenir la liste des sommets d'un polygone régulier CONVEXE.
PolyReg (resp PolyReg3d) permet de faire la même chose mais les polygones réguliers étoilés du plan (resp de l'espace) sont maintenant gérés.
Voici la syntaxe de ces deux macros :
  • PolyReg(<Centre>, <Sommet>, <[p, q]>) : création de la liste des sommets du p/q-gone défini par son centre et un de ses sommets
  • PolyReg3d(<Centre>, <Sommet>, <[p, q]>) : création de la liste des sommets du p/q-gone dans l'espace défini par l'axe de rotation du polygone et un de ses sommets

> Il est possible que la macro CDecomp soit également inutile. Elle est très peu utilisée par la suite et je suis en train de me demander s'il ne s'agit pas en fait d'une variante de CStar : je vais regarder ça de plus près...

Voici maintenant la liste des macros incontournables du fichier :

Macros incontournables
  • Perm : permet de permuter les coordonnées d'un Point3D
  • transf : Transformation d'un polyèdre (.../...)
  • CStar, PStar, HStar, OStar, DStar, PolyStar : Permet de décomposer une liste de polygones étoilés en facettes convexes. Les macros PStar, HStar, OStar et DStar étant des cas particulier de PolyStar, ces macro vont dégager très prochainement...
  • InfPt : permet d'étendre la notion de Point3D à un Point3D situé à l'infini (en fait cette macro construit deux points au lieu d'un : indispensable pour pouvoir utiliser MakePolyInf)
  • MakePolyInf : l'équivalent de MakePoly pour des polyèdres non bornés (cf duaux uniformes)
  • CoordBar3d : Fonction permettant de repérer des points de l'espace par leur coordonnées barycentriques par rapport à 3 points. Utile pour les stellation - cette fonction évite de devoir calculer un paquet de point d'intersection qui rendrait indessinable les stellations.
  • CoordBar : équivalent 2D de CoordBar3d - Devrait me permettre de dessiner les diagrammes de stellation, mais c'est pas encore au point...
  • conjug : Calcul le conjugué harmonique d'une liste de points par rapport à la sphère de centre O et de rayon r donné. Indispensable pour la création des duaux de polyèdres.
  • Reverse3d : idem reverse3d mais pour les polyèdres ie pas le jump final d'une liste de facette reste à la fin de la liste renvoyée par Reverse3d
  • ...

Si t'as besoin d'autre précisions, n'hésite pas à demander...
Ya Ba Da Ba Dooo!!!
Avatar de l’utilisateur
Alphonse Capriani
 
Messages: 576
Inscription: 18 Juil 2009 19:10
Localisation: East Harlem - NY

Re: Le fichier PolyedresII.mac

Messagepar P.Fradin » 23 Juil 2009 17:39

Suite: PStar, HStar, OStar, DStar

Code: Tout sélectionner
     PStar = {PStar(<Liste de pentagrammes>) : renvoie la liste de pentagrammes sous forme de facettes convexes}
        [$num:=0, $k:=0, $Z:=Nil,
    for $z in %1  do
           Inc(k,1),
           if Re(z)=Re(jump) then num:=0, k:=0, Z:=Nil
           else Insert(Z,z)
           fi,
           if k=2 then {on a un point3D dans Z}
              Inc(num,1),
              if num=1 then $a:=Z
              elif num=2 then $b:=Z
              elif num=3 then $c:=Z
              elif num=4 then $d:=Z
           else
                  $e:=Z, num:=0,
              $a1:=interDD([a,b-a],[d,c-d]),
              $d1:=interDD([d,e-d],[a,b-a]),
              $b1:=interDD([b,c-b],[d,e-d]),
              $e1:=interDD([e,a-e],[b,c-b]),
              $c1:=interDD([a,e-a],[d,c-d]),
              a, a1, c1, jump, a1, d, d1, jump, d1, b, b1, jump,
              b1, e, e1, jump, e1, c, c1, jump, c1, a1, d1, b1, e1, jump
           fi,
           Z:=Nil, k:=0
        fi
   od];

     HStar = {HStar(<Liste d'hexagrammes>) : décomposition de la liste de pentagrammes (pour DU72)}
       [$num:=0, $k:=0, $Z:=Nil,
    for $z in %1  do
           Inc(k,1),
           if Re(z)=Re(jump) then num:=0, k:=0, Z:=Nil
           else Insert(Z,z)
           fi,
           if k=2 then {on a un point3D dans Z}
              Inc(num,1),
              if num=1 then $A:=Z
              elif num=2 then $B:=Z
              elif num=3 then $C:=Z
              elif num=4 then $D:=Z
              elif num=5 then $E:=Z
           else
                  $F:=Z, num:=0,
              $a:=interDD([A, B-A], [D, E-D]),
              $b:=interDD([B, C-B], [D, E-D]),
              $c:=interDD([E, F-E], [B, C-B]),
              $d:=interDD([C, D-C], [E, F-E]),
              $f:=interDD([A, F-A], [C, D-C]),
              a, B, b, jump, b, E, c, jump, c, C, d, jump, d, F, f, jump, f, D, a, A, jump, A, a, b, c, d, f, jump
           fi,
           Z:=Nil, k:=0
        fi
   od];

     OStar = {OStar(<Liste d'octaèdres étoilés>) : Décompose la liste d'octaèdres étoilés en polygones convexes}
       [$num:=0, $k:=0, $Z:=Nil,
    for $z in %1  do
           Inc(k,1),
           if Re(z)=Re(jump) then num:=0, k:=0, Z:=Nil
           else Insert(Z,z)
           fi,
           if k=2 then {on a un point3D dans Z}
              Inc(num,1),
              if num=1 then $A:=Z
              elif num=2 then $B:=Z
              elif num=3 then $C:=Z
              elif num=4 then $D:=Z
              elif num=5 then $E:=Z
              elif num=5 then $F:=Z
              elif num=5 then $G:=Z
           else
                  $H:=Z, num:=0,
              $a1:=interDD([A, B-A], [C, D-C]), $a2:=interDD([D, E-D], [F, G-F]), $a3:=interDD([G, H-G], [A, B-A]), $a4:=interDD([D, E-D], [B, C-B]),
              $a5:=interDD([G, H-G], [E, F-E]), $a6:=interDD([H, A-H], [B, C-B]), $a7:=interDD([C, D-C], [E, F-E]), $a8:=interDD([F, G-F], [H, A-H]),
              $b1:=interDD([F, G-F], [C, D-C]), $b2:=interDD([A, B-A], [F, G-F]), $b3:=interDD([D, E-D], [A, B-A]), $b4:=interDD([G, H-G], [D, E-D]),
              $b5:=interDD([B, C-B], [G, H-G]), $b6:=interDD([E, F-E], [B, C-B]), $b7:=interDD([H, A-H], [E, F-E]), $b8:=interDD([C, D-C], [H, A-H]),
              A, b2, a8, jump, D, b3, a1, jump, G, b4, a2, jump, B, b5, a3, jump,
              E, b6, a4, jump, H, b7, a5, jump, C, b8, a6, jump, F, b1, a7, jump,
              b1, b2, b3, b4, b5, b6, b7, b8, jump
           fi,
           Z:=Nil, k:=0
        fi
   od];

     DStar = {DStar(<Liste de décagrammes>) : renvoie la liste de décagrammes sous forme de facettes convexes}
       [$num:=0, $k:=0, $Z:=Nil,
    for $z in %1  do
           Inc(k,1),
           if Re(z)=Re(jump) then num:=0, k:=0, Z:=Nil
           else Insert(Z,z)
           fi,
           if k=2 then {on a un point3D dans Z}
              Inc(num,1),
              if num=1 then $A:=Z
              elif num=2 then $B:=Z
              elif num=3 then $C:=Z
              elif num=4 then $D:=Z
              elif num=5 then $E:=Z
              elif num=5 then $F:=Z
              elif num=5 then $G:=Z
              elif num=5 then $H:=Z
              elif num=5 then $I:=Z
           else
                  $H:=J, num:=0,
              $a1:=interDD([D, E-D], [G, H-G]), $b1:=interDD([E, F-E], [H, I-H]), $c1:=interDD([F, G-F], [I, J-I]), $d1:=interDD([G, H-G], [J, A-J]),
         $e1:=interDD([A, B-A], [H, I-H]), $f1:=interDD([I, J-I], [B, C-B]), $g1:=interDD([J, A-J], [C, D-C]), $h1:=interDD([A, B-A], [D, E-D]),
         $i1:=interDD([E, F-E], [B, C-B]), $j1:=interDD([C, D-C], [F, G-F]), $a2:=interDD([A, B-A], [G, H-G]), $b2:=interDD([B, C-B], [H, I-H]),
         $c2:=interDD([C, D-C], [I, J-I]), $d2:=interDD([D, E-D], [J, A-J]), $e2:=interDD([E, F-E], [A, B-A]), $f2:=interDD([F, G-F], [B, C-B]),
         $g2:=interDD([G, H-G], [C, D-C]), $h2:=interDD([H, I-H], [D, E-D]), $i2:=interDD([I, J-I], [E, F-E]), $j2:=interDD([J, A-J], [F, G-F]),
              a1, h1, e1, b1, i1, f1, c1, j1, g1, d1, jump,
              A, h1, d2, jump, H, e1, a2, jump, E, b1, h2, jump, B, i1, e2, jump, I, f1, b2, jump,
              F, c1, i2, jump, C, j1, f2, jump, J, g1, c2, jump, G, d1, j2, jump, D, a1, g2, jump
           fi,
           Z:=Nil, k:=0
        fi
   od];


La macro PolyStar me paraît assez lourde, je vais voir ce que l'on peut faire.
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04

Re: Le fichier PolyedresII.mac

Messagepar Alphonse Capriani » 23 Juil 2009 17:51

Wow : ca bosse dur!!!

Pour PolyStar, en effet, c'est plus compliqué! Ya plusieurs cas à gérer notament, les cas ou p et qu ne sont pas premiers entre eux demande un peu plus d'effort...

A ce propos? Je suggère que tu remplace la macro de TeXgraph.mac polyreg par PolyReg : comme ca on pourra fair facilement de jolies étoiles!!!
Ya Ba Da Ba Dooo!!!
Avatar de l’utilisateur
Alphonse Capriani
 
Messages: 576
Inscription: 18 Juil 2009 19:10
Localisation: East Harlem - NY

Re: Le fichier PolyedresII.mac

Messagepar P.Fradin » 23 Juil 2009 17:59

J'ai justement un problème avec PolyStar, plus précisément avec:

Copy(Poly, 2*(mod(j+q, p)-1)+1, 2)


lorsque le modulo est nul, cela donne Copy(Poly, -1, 2) :?: :?: :?: :?:

A priori j'aurais plutôt vu: Copy(Poly, 2*(mod(j+q, p))+1, 2) puisque le modulo donne un résultat entre 0 et p-1, non?
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04

Re: Le fichier PolyedresII.mac

Messagepar P.Fradin » 23 Juil 2009 19:16

Suite: MakePolyInf, CoordBar3d, CoordBar

Code: Tout sélectionner
     MakePolyInf = {MakePolyInf(<[Sommets, jump, directions]>, <Liste de facettes>) : Création de polyèdres non bornés}
   [$L:=%1,
     $ns:=(Pos(jump, L)-1)/2+1,
     for $face in %2 by jump do
           $fisrt:=face[1], $last:=face[-1], $pred:=Nil, $k:=0,
           for $z in face  do
               Inc(k,1),
               if z<ns then Copy(L, 2*(z-1)+1, 2)
               else
                      $i1:= if z=first then last else pred fi,
                      $i2:= if z=last  then first else face[k+1] fi,
                      $z1:=Copy(L, 2*(i1-1)+1, 2),
            $z2:=Copy(L, 2*(i2-1)+1, 2),
                      InfPt(z1, z2, Copy(L, 2*(z-1), 2))
               fi,
               pred:=z
           od
     od];

     CoordBar3d = {CoordBar(<[A, B, C]>, <Liste de coord barycentriques>) : Coordonnées barycentriques dans le repère (A, B, C)}
        [
        $L:=%2,
        $A:=Copy(%1, 1, 2), $B:=Copy(%1, 3, 2), $C:=Copy(%1, 5, 2),
        $k:=1,
        for $coef in %2 by 1 do
      Inc(k,1),
           if k=1 then $S:=coef*A, $sum:=coef,
      elif k=2 then Inc(S,coef*B), Inc(sum,coef),
           else Inc(S,coef*C), Inc(sum,coef), S/sum, k:=0
           fi
        od
        ];

     CoordBar = {CoordBar(<[A, B, C]>, <Liste de coord barycentriques>) : Coordonnées barycentriques dans le repère (A, B, C)}
        [
        $L:=%2,
        $A:=%1[1], $B:=%1[2], $C:=%1[3],
        $k:=1,
        for $coef in %2 by 1 do
      Inc(k,1),
           if k=1 then $S:=coef*A, $sum:=coef,
      elif k=2 then Inc(S,coef*B), Inc(sum,coef),
           else Inc(S,coef*C), Inc(sum,coef), S/sum, k:=0
           fi
        od
        ];

     conjug = {conjug(<Liste de facettes>, <r>) : renvoie la liste des conjugués harmoniques de chacune des facettes
                           par rapport à la sphère de rayon r centré à l'origine.}
        [
        $r:=%2,
        for L in %1 By jump  do
           $A:=Copy(L,1, 2), $B:=Copy(L, 3, 2), $C:=Copy(L, 5, 2),
           $v:=Prodvec(B-A, C-A),
           ((r^2)/Prodscal(A, v))*v,
        od   
        ];


Quant à ta macro Reverse3d, je pense qu'elle correspond à la future version de reverse3d: l'ordre sur les points 3D est inversé, mais les jump restent à la fin.

Par contre pour la macro PolyStar, j'attends ta réponse à mon précédent message.
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04

Re: Le fichier PolyedresII.mac

Messagepar P.Fradin » 23 Juil 2009 23:14

Je viens de faire un test, et, chance ou malchance, je tombe directement sur un problème avec le premier que j'essaie Grand hexacontaèdre pentagrammique, il y a une arête qui dépasse on dirait:

Image


J'ai mis l'export en javaview ici pour mieux se rendre compte.

Edit: l'erreur signalée ne vient pas du fichier PolyedresII.mac, et elle est maintenant corrigée dans l'export javaview.
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04

Re: Le fichier PolyedresII.mac

Messagepar Alphonse Capriani » 24 Juil 2009 11:26

P.Fradin a écrit:J'ai justement un problème avec PolyStar, plus précisément avec:

Copy(Poly, 2*(mod(j+q, p)-1)+1, 2)


lorsque le modulo est nul, cela donne Copy(Poly, -1, 2) :?: :?: :?: :?:

A priori j'aurais plutôt vu: Copy(Poly, 2*(mod(j+q, p))+1, 2) puisque le modulo donne un résultat entre 0 et p-1, non?
Euh... Tu as raison, mais pour l'instant, je n'ai pas encore eu de problème avec cette macro.
En fait, c'est toujours le même problème avec des listes de points "cycliques" : il faut jongler avec les restes de divisions euclidiennes et le code devient vite illisible.
J'ai fais initialement tous les calculs à la main donc c'est vrai que je serais assez surpris si le code en question posait soucis! Je vais quand meme regarder ca de plus près et je posterai les explications de ces formules lundi...

P.Fradin a écrit:Je viens de faire un test, et, chance ou malchance, je tombe directement sur un problème avec le premier que j'essaie Grand hexacontaèdre pentagrammique, il y a une arête qui dépasse on dirait.
Là, je suis moins surpris!!!
C'est un des solides qui m'en a fait le plus baver. Je vais corriger ca ce week-end... Et si j'ai le temps, j'attaque le DU71 (facile!!!), le DU75 (là, je suis beaucoup plus inquiet!!!) et les antidiamants croisés p/q-gonaux (je vais encore m'amuser avec les modulos... :roll:)
Ya Ba Da Ba Dooo!!!
Avatar de l’utilisateur
Alphonse Capriani
 
Messages: 576
Inscription: 18 Juil 2009 19:10
Localisation: East Harlem - NY

Re: Le fichier PolyedresII.mac

Messagepar P.Fradin » 24 Juil 2009 14:37

Salut Alphonse,

Je ne sais pas si c'est fait exprès ou non, mais je viens de réagir que Copy(Poly,-1,2) donne quelque chose avec la nouvelle version de TeXgraph, lorsque l'index de départ est négatif (-1 ici) la liste est parcourue de droite à gauche en partant du dernier, donc l'expression représente le dernier point de Poly, et cela a l'air de marcher.

Autre bonne nouvelle, le problème d'arête signalé hier ne vient pas de ton fichier :lol: Elle provient d'une macro de la prochaine version de povray.mac. Donc pour l'instant tout à l'air de fonctionner.

Macro PolyStar:

Code: Tout sélectionner
[$p:=Copy(%2,1,1), $q:= Copy(%2,2,1), if q=Nil then q:=1 fi,
     for $Poly in %1 By jump do
             $j:=0, $A:=Poly[-1,2], {dernier élément}
             for $Z in Poly by 2 do
                Inc(j,1), $B:=A, A:=Z, $C:=Copy(Poly, 2*(mod(j-1+q, p)-1)+1, 2),
                A,
         interDD( [A, Copy(Poly, 2*(mod(j+q, p)-1)+1, 2) - A], [B, C - B]),
                interDD([A, Copy(Poly, 2*(mod(j-q, p)-1)+1, 2) - A], [B, C - B]),
                jump
             od,
             $j:=0, $A:=Poly[-1,2],{dernier élément}
             for $Z in Poly by 2 do
         Inc(j,1),  $B:=A, A:=Z,
                interDD( [A, Copy(Poly, 2*(mod(j+q, p)-1)+1, 2) - A], [B, Copy(Poly, 2*(mod(j-1+q, p)-1)+1, 2) - B])
             od,
             jump
     od];
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04

Suivant

Revenir vers Propositions - Discussions

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 5 invités

cron