Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#201 Re : Le coin des beaux problèmes de Géométrie » La réduction des polyèdres convexes à l'intersection de demi-espaces » 01-04-2021 08:02:08
Bonjour,
J'avais déjà signalé qu'il n'est pas nécessaire, dans le cas d'un polyèdre convexe, de prédéfinir la position des sommets:
... # La donnée des sommets n'est pas indispensable: il suffit simplement de connaître pour chaque face la distance (Dcj) la séparant du centre, et les composantes du vecteur unitaire normal (unj) correspondant ...
Voici par exemple ce que l'on obtient dans le cas du dodécaèdre rhombique
https://mathcurve.com/polyedres/dodecae … ique.shtml
dont les 12 faces en losange sont perpendiculaires aux segments joignant le centre d'un cube aux milieux de ses arêtes; les normales correspondent alors aux 12 permutations du type
(0, ± a, ± a), avec a = 1/√2 :

La suppression du calcul des coordonnées des sommets simplifie le programme, qui ne livre plus les indices caractérisant les faces dans sa version la plus simple.

PROGRAM Polyedre;
(*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Repr‚sentation en perpective des faces du dod‚caŠdre rhombique
S = 14 ; F = 12 ; A = 24
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
USES Crt, E_Texte, U_Copie_1F, Math, U_Math;
// CONST Nsomm = 14;
CONST Nface = 12;
TYPE Ve3D = RECORD x, y, z: Reel END;
// Tab_V = ARRAY[1..Nsomm] OF Ve3D;
Face = RECORD Sa, Sb, Sc: Byte;
Un: Ve3D; Dc: Reel END;
Tab_F = ARRAY[1..Nface] OF Face;
Tab_C = ARRAY[1..Nface] OF Pixel;
VAR Rcen: Z_32; Rsph: Reel;
Vun1, Vun2, Vun3: Ve3D;
// LstS: Tab_V;
LstF: Tab_F;
LstC: Tab_C;
(*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Utilitaires
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
FUNCTION Pvect(Wa, Wb: Ve3D): Ve3D;
VAR p, q: Reel; W: Ve3D;
BEGIN
p:= Wa.y * Wb.z; q:= Wa.z * Wb.y; W.x:= p - q;
p:= Wa.z * Wb.x; q:= Wa.x * Wb.z; W.y:= p - q;
p:= Wa.x * Wb.y; q:= Wa.y * Wb.x; W.z:= p - q; Result:= W
END;
FUNCTION Diff2V(Wa, Wb: Ve3D): Ve3D;
VAR W: Ve3D;
BEGIN
W.x:= Wa.x - Wb.x; W.y:= Wa.y - Wb.y;
W.z:= Wa.z - Wb.z; Result:= W
END;
FUNCTION Vunit(Pc: Reel; V: Ve3D): Ve3D;
VAR I1, N1, p, q, r, s: Reel; W: Ve3D;
BEGIN
p:= Sqr(V.x); q:= Sqr(V.y); r:= Sqr(V.z); s:= p + q;
N1:= Sqrt(r + s); IF (Pc<0) THEN I1:= 1 / N1 ELSE I1:= -1 / N1;
W.x:= V.x * I1; W.y:= V.y * I1; W.z:= V.z * I1; Result:= W
END;
FUNCTION Pscal(Wa, Wb: Ve3D): Reel;
VAR p, q, r, s: Reel;
BEGIN
p:= Wa.x * Wb.x; q:= Wa.y * Wb.y; r:= Wa.z * Wb.z;
s:= p + q; Result:= r + s
END;
(*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Caculs relatifs au polyŠdre
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
FUNCTION CombLin3V(C1, C2, C3: Z_32; V1, V2, V3: Ve3D): Ve3D;
VAR W: Ve3D;
BEGIN
WITH W DO
BEGIN
x:= C1 * V1.x; IncR(x, C2 * V2.x); IncR(x, C3 * V3.x);
y:= C1 * V1.y; IncR(y, C2 * V2.y); IncR(y, C3 * V3.y);
z:= C1 * V1.z; IncR(z, C2 * V2.z); IncR(z, C3 * V3.z)
END;
Result:= W
END;
FUNCTION Identif_F(X1, Y1, Z1: Z_32): Byte;
VAR j, Jf: Byte; Max, p, q, r, s: Reel; W: Ve3D;
BEGIN
W:= CombLin3V(X1, Y1, Z1 + 1, Vun1, Vun2, Vun3); Jf:= 0; Max:= 0;
FOR j:= 1 TO Nface DO
BEGIN
p:= Pscal(LstF[j].Un, W); q:= p - LstF[j].Dc;
r:= Abs(q); s:= q + r;
IF (s>Max) THEN BEGIN
Jf:= j; Max:= s
END
END;
Result:= Jf
END;
FUNCTION F_Polyedre(X1, Y1, Z1: Z_32): Reel;
VAR j: Byte; p, q, r, s: Reel; W: Ve3D;
BEGIN
W:= CombLin3V(X1, Y1, Z1, Vun1, Vun2, Vun3);
s:= 0;
FOR j:= 1 TO Nface DO
BEGIN
p:= Pscal(LstF[j].Un, W); q:= p - LstF[j].Dc;
r:= Abs(q); IncR(s, q + r)
END;
Result:= s
END;
PROCEDURE Calc_Mat_Im2(La, Ha, Rc: Z_32; VAR Ma2: Tab_Pix);
CONST Seuil = 1E-10; P000: Pixel = (0, 0, 0);
VAR Iface: Byte;
Xcen, Ximg, Xm, Ycen, Yimg, Ym, Zimg, Zmin: Z_32;
u: Reel; Px: Pixel;
BEGIN
Xcen:= La DIV 2; Ycen:= Ha DIV 2; Zmin:= -2 * Rc;
FOR Xm:= 0 TO (La - 1) DO
BEGIN
Ximg:= Xm - Xcen; We(10, 40, Xm, 6);
FOR Ym:= 0 TO (Ha - 1) DO
BEGIN
Yimg:= Ym - Ycen; Zimg:= 0;
REPEAT
Dec(Zimg); u:= F_Polyedre(Ximg, Yimg, Zimg + Rcen)
UNTIL ((u<Seuil) OR (Zimg=Zmin));
IF (Zimg=Zmin) THEN Px:= P000
ELSE BEGIN
Iface:= Identif_F(Ximg, Yimg,
Zimg + Rcen);
Px:= LstC[Iface]
END;
Ma2[Xm,Ym]:= Px
END
END
END;
(*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Calcul des couleurs
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
PROCEDURE Init_Lc(VAR L_f: Tab_F; VAR L_c: Tab_C);
CONST m = 65280;
VAR k: Byte; u: Reel; Px: Pixel;
BEGIN
FOR k:= 1 TO Nface DO
BEGIN
WITH LstF[k].Un DO
BEGIN
u:= Frac(29 * (1 + x)); Px[1]:= Round(Sqrt(m * u));
u:= Frac(30 * (1 + y)); Px[2]:= Round(Sqrt(m * u));
u:= Frac(31 * (1 + z)); Px[3]:= Round(Sqrt(m * u))
END;
L_c[k]:= Px
END
END;
(*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
D‚termination des sommets, des faces et des arˆtes
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
PROCEDURE AffF(VAR L_F: Tab_F);
CONST L1 = 2; L2 = L1 + 1; v = 11; w = 5;
VAR k: Byte;
BEGIN
E(1012); Wt(1, L1, ' j');
E(0015); Write(' Ja Jb Jc ');
E(0010); Write('Nx Ny Nz ');
E(0014); Write('Dcen');
FOR k:= 1 TO Nface DO
WITH L_f[k] DO
BEGIN
E(0012); We(1, k + L2, k, w);
E(0015); Write(Sa:w, Sb:w, Sc:w);
E(0010); Write(Un.x:v:w, Un.y:v:w, Un.z:v:w);
E(0014); Write(Dc:v:w)
END;
A_; E(1015)
END;
CONST DegRad = Pi / 180;
PROCEDURE CalcF(Rs_: Reel; VAR LstF: Tab_F);
CONST L1 = 0.000; L2 = 1 - L1;
VAR i, j, k: Z_08; h, Si2, Sij2, Sijk2: Byte; s: Reel;
BEGIN
h:= 0;
FOR i:= -1 TO 1 DO
BEGIN
Si2:= Sqr(i);
FOR j:= -1 TO 1 DO
BEGIN
Sij2:= Si2 + Sqr(j);
FOR k:= -1 TO 1 DO
BEGIN
Sijk2:= Sij2 + Sqr(k);
IF ((Sijk2=2) AND (h<Nface)) THEN
BEGIN
Inc(h); s:= Sqrt(Sijk2);
WITH LstF[h] DO BEGIN
Sa:= 0; Sb:= 0; Sc:= 0;
WITH Un DO BEGIN
x:= i / s; y:= j / s;
z:= k / s
END;
Dc:= Rs_
END
END
END
END
END
END;
(*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Calculs relatifs au nouveau repŠre
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
PROCEDURE CalcRcRs(La, Ha: Z_32; VAR Rc_: Z_32; VAR Rs_: Reel);
BEGIN
IF (La<Ha) THEN Rc_:= La DIV 2
ELSE Rc_:= Ha DIV 2;
Rs_:= 0.740 * Rc_
END;
CONST LambdaDeg = 20.0; PhiDeg = 35.0;
PROCEDURE Calc_U0123(VAR U_1, U_2, U_3: Ve3D);
CONST DegRad = Pi / 180;
VAR Clam, Cphi, Slam, Sphi: Reel; W: Ve3D;
BEGIN
SinCos(LambdaDeg * DegRad, Slam, Clam);
SinCos(PhiDeg * DegRad, Sphi, Cphi);
W.x:= -Sphi; W.y:= Cphi; W.z:= 0; U_1:= W;
W.x:= - Slam * Cphi; W.y:= - Slam * Sphi; W.z:= Clam; U_2:= W;
W.x:= Clam * Cphi; W.y:= Clam * Sphi; W.z:= Slam; U_3:= W
END;
(*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Programme principal
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
BEGIN
Copie_F1;
Calc_U0123(Vun1, Vun2, Vun3);
CalcRcRs(Larg_Image, Haut_Image, Rcen, Rsph);
CalcF(Rsph, LstF); AffF(LstF);
Init_Lc(LstF, LstC);
Calc_Mat_Im2(Larg_Image, Haut_Image, Rcen, Matrice_2);
Creation_F2
END
Des modifications mineures affectant le calcul des données caractéristiques des faces (Dc, Un) permettent de faire apparaître des déformations de l'objet, par exemple par une distribution aléatoire encadrée des distances au centre, ou de l'orientation des normales:


#202 Re : Le coin des beaux problèmes de Géométrie » Des équations et des cubes » 30-03-2021 12:45:17
Comme il n'est jamais trop tard pour bien faire, je reviens à ton premier message:
... j’étais prof de maths, et j’ai 75 ans. Internet ne m’apporte pas toujours les réponses que j’attends, alors je cherche et trouve des trucs amusants … Je vous propose de les partager, et vous me direz ce que vous en pensez, et surtout si vous avez déjà vu quelque chose du même genre, et où ! ...
# Pour qui aime les mathématiques, il y a un ouvrage à consulter à fond, dont le titre (humour anglais ou fausse modestie ?)
"Encyclopédie Concise des Mathématiques"
ne suggère en rien qu'il comporte plus de 3200 pages:
CRC Concise Encyclopedia of Mathematics
by Eric W. Weisstein
3252 pages, parution le 15/10/1998
J'ai pu le consulter assidûment dès sa parution, au centre de documentation de l'établissement où je travaillais; sa lecture a été pour moi une source de découvertes et d'émerveillement.
Si t'es possible d'accéder à une bibliothèque universitaire, tâche de te procurer l'ouvrage.
Une partie de son contenu se retrouve sur le site Wolfram Mathworld
https://mathworld.wolfram.com/
excellente encyclopédie numérique, dont l'auteur (Eric W. Weisstein) s'est retrouvé un moment en conflit avec l'éditeur CRC Press.
https://en.wikipedia.org/wiki/CRC_Conci … athematics
# Il y a aussi le Manuel des Fonctions Mathématiques d'Abramowitz et Stegun, numérisé donc accessible sur le Web, qui contient des rappels exhaustifs sur les sujets traités:
Abramowitz and Stegun: Handbook of Mathematical Functions
https://www.math.ubc.ca/~cbm/aands/
# L'Encyclopédie en ligne des Suites de Nombres Entiers
The On-Line Encyclopedia of Integer Sequences (OEIS)
http://oeis.org/?language=french
https://fr.wikipedia.org/wiki/Encyclop% … es_entiers
répertorie toutes les suites actuellement connues dans la communauté mathématique mondiale; au delà de son aspect énumératif, elle peut fournir des indications précieuses sur un sujet donné par le biais des suites susceptibles de s'y rattacher.
# L'amateur de mathématiques déjantées prendra son pied dans la consultation du site
The Geometry Junkyard
https://www.ics.uci.edu/~eppstein/junkyard/
Le parcours est aride, mais le chercheur obstiné trouvera des pépites.
# Plus classique mais non moins intéressant est le site du CNRS "Images des Mathématiques"
J'espère ainsi que les randonnées numériques te paraîtront moins décevantes.
#203 Re : Le coin des beaux problèmes de Géométrie » Des équations et des cubes » 30-03-2021 08:46:00
Bonjour Bernard-maths,
... Quant à l'illusionniste, il se fait des illusions ! Certes certains sont contents, mais d'autres sont totalement démotivés !
Mais dans l'ensemble c'était très sympa, et je suis prêt à recommencer ...
Tu as eu l'ambition de présenter un sujet difficile, et souvent l'on ne se doute pas de de l'abîme séparant, chez certains jeunes, la perception des objets réels de leur représentation; je me souviens encore de mon étonnement devant un élève de 3me (pourtant intelligent et éveillé) qui, tenu d'analyser une planche anatomique en séance d'accompagnement scolaire, se déclarait incapable de localiser sa propre colonne vertébrale ...
La règle impérative à ne jamais oublier est de toujours vérifier leur connaissance des notions et des mots utilisés.
... Pour moi, la difficulté vient de la représentation 3D, que je dois décortiquer, car je n'ai pas de logiciel pouvant "lire" et tracer ces équations directement ...
J'y reviendrai plus tard, mais la réponse ne tient pas en 3 lignes ...
... l'on peut grouper les termes 2 par 2 (avec le même Si) et les élever à la puissance réelle positive n, ainsi que K ! Cela provoque des arrondis extérieurs si n > 1, et intérieurs si n < 1 ...
Puisque tu en reparles, voici à quoi tu peux t'attendre, par les représentations que Surfer donne des équations symétrique de degré pair élevé (20 ou 30, j'ai peut-être changé en cours de route), en partant de quelques expressions de base:
P1(x, y, z) = xN + yN + zN;
P2(x, y, z) = (x + y)N + (x - y)N + (y + z)N + (y - z)N + (z + x)N + (z - x)N ;
P3(x, y, z) = (x + y + z)N + (x + y - z)N + (y + z - x)N+ ( z + x -y)N ;
# P1(x, y, z) = 1 conduit à un cube (déjà cité),
# P2(x, y, z) = 1 conduit à l'icosaèdre rhombique, P3(x, y, z) = 1 à l'octaèdre :

# 104P1(x, y, z) + P2(x, y, z) = 1 et
105P1(x, y, z) + P3(x, y, z) = 1 à deux octaèdres tronqués:

# 103P2(x, y, z) + P3(x, y, z) = 1 à un polyèdre plus compliqué ...

La soustraction produit des formes encore plus étonnantes.
#204 Re : Le coin des beaux problèmes de Géométrie » La réduction des polyèdres convexes à l'intersection de demi-espaces » 29-03-2021 08:56:06
Bonjour Bernard-maths,
... Très jolie cette "oloïde polyédriquée" ...
Le résultat est en effet fascinant. Cependant le polyèdre considéré est une approximation d'un sphéricône, et non d'un oloïde
Ne pas confondre l'oloïde avec le sphéricône, qui est l'enveloppe convexe de deux demi-cerles orthogonaux de mêmes centres. Sa surface est également développable puisque formée de 4 portions de cônes de révolution qui se raccordent "tangentement", mais avec des discontinuités de courbure.
https://mathcurve.com/surfaces/orthobic … ycle.shtml
La discussion que tu as lancée en décembre s'est déjà ramifiée en 3 fils différents ... qui dit mieux ?
#205 Re : Le coin des beaux problèmes de Géométrie » Des équations et des cubes » 29-03-2021 08:39:09
Bonjour Bernard-maths,
Bien arrivé ... / ... Maintenant, je découpe des patrons de cubes "retournables" pour les enfants demain ! ...
J'espère que cette rencontre s'est bien passée. Les gamins ont dû être épatés pat tes montages articulés ... T'ont-ils pris pour un illusioniste ?
... Ce qui m'intéresse, c'est de trouver des équations paramétrées, qui permettent d'obtenir "tout un tas" d'objets ! ...
Tu devrais essayer des combinaisons semblables aux suivantes:
F(x, y, z) = |S1 + c| + |S1- c| + |S2 + c| + |S2- c| + |S3 + c| + |S3 - c| + |S4 + c| + |S4 - c| + |S5+ c| + |S5 - c| + |S6+ c| + |S6- c| = K
avec: S1 = x + y , S2 = x - y , S3 = y + z , S4 = y - z, S5 = z + x , S6 = z - x
ou encore: S1 = x + y + z , S2 = x + y - z , S3 = y + z - x, S4 = z + x - y .
Propositions bien sûr non exclusives.
#206 Re : Le coin des beaux problèmes de Géométrie » La réduction des polyèdres convexes à l'intersection de demi-espaces » 28-03-2021 19:58:47
J'ai relancé le programme pour une image de dimensions 701×701 : le calcul s'effectue alors en une vingtaine de minutes.
L'obtention de teintes suffisamment contrastées relève d'une loterie chromatique:
FUNCTION Lum(h, p: Reel): Byte;
VAR u, v: Reel;
BEGIN
u:= h * (1 + p);
IF (p>0) THEN v:= Abs(Cos(u))
ELSE v:= Abs(Sin(u)); Result:= Round(255.499 * v)
END;
PROCEDURE Init_Lc(VAR L_c: Tab_C); // ! Meilleures couleurs
CONST K1 = 3.080; K2 = 1.5 * K1; K3 = 2 * K1;
VAR k: Byte; Px: Pixel;
BEGIN
FOR k:= 1 TO Nface DO
WITH LstF[k].Un DO BEGIN
Px[1]:= Lum(K3, x); Px[2]:= Lum(K2, y);
Px[3]:= Lum(K1, z); L_c[k]:= Px
END
END;

#207 Re : Le coin des beaux problèmes de Géométrie » La réduction des polyèdres convexes à l'intersection de demi-espaces » 28-03-2021 19:57:47
J'ai regardé ce que donnait l'exécution du programme dans le cas du polyèdre d'ordre 21, les points extrêmes des deux lignes brisées (M1 et M21, M22 et M42) se retrouvant tous dans le plan (xOy) de cote nulle.
Cette version de diffère de la précédente que par la procédure d'initialisation des coordonnées des sommets, qui doit être rationalisée.
PROCEDURE Calc_S(Rsph: Reel; VAR L_s: Tab_V);
CONST Imax = (Nsomm + 2) DIV 4; I2 = 2 * Imax; // Imax = 11 ; I2 = 22
Jmax = (3 * Imax) - 1; J2 = 2 * Jmax; // Jmax = 32 ; J2 = 64
VAR i, j: Z_08; Alpha1, Alpha, Ca, Rc, Rs, Sa: Reel;
BEGIN
Alpha1:= AlphaDeg * DegRad;
FOR i:= 1 TO Imax DO
BEGIN
Alpha:= Alpha1 * (Imax - i); SinCos(Alpha, Sa, Ca);
Rs:= Rsph * Sa; Rc:= Rsph * Ca;
WITH L_s[i] DO BEGIN
x:= Rs; y:= 0; z:= Rc
END;
j:= i - 1; Inc(j, I2); // j = i + 21
WITH L_s[j] DO BEGIN
x:= 0; y:= Rs; z:= -Rc
END;
IF (i<Imax) THEN WITH L_s[I2 - i] DO BEGIN
x:= -Rs; y:= 0; z:= Rc
END;
IF (j<Jmax) THEN WITH L_s[J2 - j] DO BEGIN
x:= 0; y:= -Rs; z:= -Rc
END
END
END;

Interviennent dans ce cas 42 sommets, 80 faces et 120 arêtes; l'exécution du programme demande plusieurs minutes.
On découvre dans le second tableau
https://www.cjoint.com/doc/21_03/KCzrMM … -01-80.png
que les 80 faces apparaissent équidistantes du centre (O); ceci est lié à la contrainte imposée à la répartition des sommets, entre autres la coplanéité des points précédemment cités (z01 = z21 = z22 = z42 = 0); il existe donc dans le polyèdre une sphère inscrite tangente à chacune des faces.
En ce qui concerne l'image obtenue, il est plus difficile d'obtenir un contraste suffisant dans toutes les zones de l'image:

#208 Re : Le coin des beaux problèmes de Géométrie » La réduction des polyèdres convexes à l'intersection de demi-espaces » 28-03-2021 19:56:05
Bonjour,
Je reprends ici l'un des polyèdres cités en exemple au cours des échanges sur les oloïdes (message #09)
http://www.bibmath.net/forums/viewtopic.php?id=13733
L'objet est construit sur deux groupes de 3 segments de même longueur, respectivement situés dans les plans (xOz) et (yOz) du repère orthonormé direct orientant l'espace, et dont l'axe de symétrie commun (z'z) constitue l'axes de roto-inversion d'ordre (4) de l'ensemble.
Il n'y a pas de symétrie centrale.

La programmation des positions des 8 sommets envisagés ne présente aucune difficulté:
PROGRAM Polyedre;
(*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Repr‚sentation en perpective des faces d'un poly‚dre … 26 faces
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
USES Crt, E_Texte, U_Copie_1F, Math, U_Math;
CONST Nsomm = 8; Nface = 12;
TYPE Ve3D = RECORD x, y, z: Reel END;
Tab_V = ARRAY[1..Nsomm] OF Ve3D;
Face = RECORD Sa, Sb, Sc: Byte;
Un: Ve3D; Dc: Reel END;
Tab_F = ARRAY[1..Nface] OF Face;
Tab_C = ARRAY[1..Nface] OF Pixel;
VAR Rcen: Z_32;
Vun1, Vun2, Vun3: Ve3D;
LstS: Tab_V;
LstF: Tab_F;
LstC: Tab_C;
// ... / ...
CONST DegRad = Pi / 180; AlphaDeg = 32.0; // Valeur de Alpha en degr‚s
PROCEDURE AffSxyz;
CONST L1 = 2; L2 = L1 + 1; v = 12; w = 5;
VAR k: Byte;
BEGIN
E(1012); Wt(1, L1, ' k');
E(0015); Write(' x y');
E(0011); Write(' z');
FOR k:= 1 TO Nsomm DO
BEGIN
E(0012); We(1, k + L2, k, w);
E(0015); Write(LstS[k].x:v:w, LstS[k].y:v:w);
E(0011); Write(LstS[k].z:v:w)
END;
E(0015); Wt(49, L1, 'Valeur de Alpha:');
E(0011); Wr(49, L1 + 2, AlphaDeg, 1003); Write(' ø')
END;
PROCEDURE Calc_S(Rsph: Reel; VAR L_s: Tab_V);
VAR k:Byte; Alpha1, C1, C3, Rc1, Rc3, Rs1, Rs3, S1, S3: Reel;
BEGIN
Alpha1:= AlphaDeg * DegRad;
SinCos(Alpha1, S1, C1); SinCos(3 * Alpha1, S3, C3);
Rc1:= Rsph * C1; Rs1:= Rsph * S1;
Rc3:= Rsph * C3; Rs3:= Rsph * S3;
L_s[1].x:= Rs3; L_s[2].x:= Rs1; L_s[3].x:= -Rs1; L_s[4].x:= -Rs3;
L_s[1].z:= Rc3; L_s[2].z:= Rc1; L_s[3].z:= Rc1; L_s[4].z:= Rc3;
FOR k:= 1 TO 4 DO L_s[k].y:= 0;
L_s[5].y:= Rs3; L_s[6].y:= Rs1; L_s[7].y:= -Rs1; L_s[8].y:= -Rs3;
L_s[5].z:= -Rc3; L_s[6].z:= -Rc1; L_s[7].z:= -Rc1; L_s[8].z:= -Rc3;
FOR k:= 5 TO 8 DO L_s[k].x:= 0; AffSxyz
END;
Il faut ensuite inventorier les diverses faces, lesquelles se caractérisent par:
# les indices respectifs (Ja, Jb, Jc) de leurs 3 sommets, donnés dans l'ordre croissant,
# les composantes du vecteur unitaire normal (Un), et
# la distance (Dc) les séparant de l'origine (O) du repère, et dans le cas présent centre de la sphère circonscrite au polyèdre.
Le critère de reconnaissance d'une face consiste en ceci que pour un triplet (i, j, k) donné, tous les autres points sont situés, comme l'origine, du même côté par rapport au plan (Mi, Mj, Mk);
par conséquent les produits mixtes (MiMj, MiMk, MiMl) et (MiMj, MiMk, MiO) sont de même signe pour tout (l) différent de (i, j) et (k).
Il n'y a ici que des faces triangulaires; la présence de faces à plus de 3 sommets n'introduit pas de difficulté insurmontable.
(*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
D‚termination des sommets, des faces et des arˆtes
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
PROCEDURE AffF(VAR L_F: Tab_F);
CONST L1 = 14; L2 = L1 + 1; v = 11; w = 5;
VAR k: Byte;
BEGIN
E(0012); Wt(1, L1, ' j');
E(0015); Write(' Ja Jb Jc ');
E(0010); Write('Nx Ny Nz ');
E(0014); Write('Dcen');
FOR k:= 1 TO Nface DO
WITH L_f[k] DO
BEGIN
E(0012); We(1, k + L2, k, w);
E(0015); Write(Sa:w, Sb:w, Sc:w);
E(0010); Write(Un.x:v:w, Un.y:v:w, Un.z:v:w);
E(0014); Write(Dc:v:w)
END;
A_
END;
PROCEDURE Calc_F(VAR L_F: Tab_F);
CONST Vzero: Ve3D = (x:0; y:0; z:0); Epsilon = -1E-10;
VAR h, i, j, k, l: Byte; Pcen, q: Reel;
Wj, Wk, Wn, Wcen, Wl: Ve3D; Test: Bool;
BEGIN
h:= 0;
FOR i:= 1 TO (Nsomm - 2) DO
BEGIN
Wcen:= Diff2V(Vzero, LstS[i]);
FOR j:= (i + 1) TO (Nsomm - 1) DO
FOR k:= (j + 1) TO Nsomm DO
BEGIN
Wj:= Diff2V(LstS[j], LstS[i]);
Wk:= Diff2V(LstS[k], LstS[i]);
Wn:= Pvect(Wj, Wk); Pcen:= Pscal(Wn, Wcen);
IF (Abs(Pcen)>Epsilon) THEN
BEGIN
Test:= True;
FOR l:= 1 TO Nsomm DO
IF (l<>i) AND ((l<>j) AND (l<>k)) THEN
BEGIN
Wl:= Diff2V(LstS[l], LstS[i]);
q:= Pscal(Wn, Wl);
IF ((Pcen * q)<-Epsilon) THEN Test:= False
END;
IF (Test AND (h<Nface)) THEN
BEGIN
Inc(h);
WITH L_F[h] DO
BEGIN
Sa:= i; Sb:= j; Sc:= k;
Un:= Vunit(Pcen, Wn); Dc:= Pscal(LstS[i], Un)
END
END
END
END
END
END;
L'identification des arêtes est ici inutile.
L'affichage des données relatives aux sommets et aux faces permet de s'assurer de la conformité géométrique de l'objet attendu:

Reste à donner le programme principal, les calculs préliminaires relatifs au nouveau repère et à la palette de couleur
(*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Calcul des couleurs
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
FUNCTION Lum(p: Reel): Byte;
VAR u, v, w: Reel;
BEGIN
// u:= 1 + p; v:= Sqr(p - 0.5); w:= Sqrt(u * v);
// Result:= Round(361.331 * w)
u:= Sqrt(1 + p); Result:= Round(180.6657 * u)
END;
PROCEDURE Init_Lc(VAR L_c: Tab_C);
VAR k: Byte; Px: Pixel;
BEGIN
FOR k:= 1 TO Nface DO
WITH LstF[k].Un DO BEGIN
Px[1]:= Lum(-x); Px[2]:= Lum(y);
Px[3]:= Lum(-z); L_c[k]:= Px
END
END;
(*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Calculs relatifs au nouveau repŠre
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
PROCEDURE CalcRc(La, Ha: Z_32; VAR Rs_: Z_32);
BEGIN
IF (La<Ha) THEN Rs_:= La DIV 2
ELSE Rs_:= Ha DIV 2
END;
CONST LambdaDeg = 3.0; PhiDeg = 20.0;
PROCEDURE Calc_U0123(VAR U_1, U_2, U_3: Ve3D);
CONST DegRad = Pi / 180;
VAR Clam, Cphi, Slam, Sphi: Reel; W: Ve3D;
BEGIN
SinCos(LambdaDeg * DegRad, Slam, Clam);
SinCos(PhiDeg * DegRad, Sphi, Cphi);
W.x:= -Sphi; W.y:= Cphi; W.z:= 0; U_1:= W;
W.x:= - Slam * Cphi; W.y:= - Slam * Sphi; W.z:= Clam; U_2:= W;
W.x:= Clam * Cphi; W.y:= Clam * Sphi; W.z:= Slam; U_3:= W
END;
(*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Programme principal
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
BEGIN
Copie_F1; A_;
Calc_U0123(Vun1, Vun2, Vun3); CalcRc(Larg_Image, Haut_Image, Rcen);
Calc_S(Rcen * 0.960, LstS); AffSxyz;
Calc_F(LstF); AffF(LstF);
Init_Lc(LstC);
Calc_Mat_Im2(Larg_Image, Haut_Image, Rcen, Matrice_2);
Creation_F2
END.
... et enfin le tracé de l'image, ainsi que les fonctions utilitaires:
(*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Utilitaires
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
FUNCTION Pvect(Wa, Wb: Ve3D): Ve3D;
VAR p, q: Reel; W: Ve3D;
BEGIN
p:= Wa.y * Wb.z; q:= Wa.z * Wb.y; W.x:= p - q;
p:= Wa.z * Wb.x; q:= Wa.x * Wb.z; W.y:= p - q;
p:= Wa.x * Wb.y; q:= Wa.y * Wb.x; W.z:= p - q; Result:= W
END;
FUNCTION Diff2V(Wa, Wb: Ve3D): Ve3D;
VAR W: Ve3D;
BEGIN
W.x:= Wa.x - Wb.x; W.y:= Wa.y - Wb.y;
W.z:= Wa.z - Wb.z; Result:= W
END;
FUNCTION Vunit(Pc: Reel; V: Ve3D): Ve3D;
VAR I1, N1, p, q, r, s: Reel; W: Ve3D;
BEGIN
p:= Sqr(V.x); q:= Sqr(V.y); r:= Sqr(V.z); s:= p + q;
N1:= Sqrt(r + s); IF (Pc<0) THEN I1:= 1 / N1 ELSE I1:= -1 / N1;
W.x:= V.x * I1; W.y:= V.y * I1; W.z:= V.z * I1; Result:= W
END;
FUNCTION Pscal(Wa, Wb: Ve3D): Reel;
VAR p, q, r, s: Reel;
BEGIN
p:= Wa.x * Wb.x; q:= Wa.y * Wb.y; r:= Wa.z * Wb.z;
s:= p + q; Result:= r + s
END;
(*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Caculs relatifs au polyŠdre
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
FUNCTION CombLin3V(C1, C2, C3: Z_32; V1, V2, V3: Ve3D): Ve3D;
VAR W: Ve3D;
BEGIN
WITH W DO
BEGIN
x:= C1 * V1.x; IncR(x, C2 * V2.x); IncR(x, C3 * V3.x);
y:= C1 * V1.y; IncR(y, C2 * V2.y); IncR(y, C3 * V3.y);
z:= C1 * V1.z; IncR(z, C2 * V2.z); IncR(z, C3 * V3.z)
END;
Result:= W
END;
FUNCTION Identif_F(X1, Y1, Z1: Z_32): Byte;
// CONST Seuil = 1E-10;
VAR j, Jf: Byte; Max, p, q, r, s: Reel; W: Ve3D;
BEGIN
W:= CombLin3V(X1, Y1, Z1 + 1, Vun1, Vun2, Vun3); Jf:= 0; Max:= 0;
FOR j:= 1 TO Nface DO
BEGIN
p:= Pscal(LstF[j].Un, W); q:= p - LstF[j].Dc;
r:= Abs(q); s:= q + r;
IF (s>Max) THEN BEGIN
Jf:= j; Max:= s
END
END;
Result:= Jf
END;
FUNCTION F_Polyedre(X1, Y1, Z1: Z_32): Reel;
VAR j: Byte; p, q, r, s: Reel; W: Ve3D;
BEGIN
W:= CombLin3V(X1, Y1, Z1, Vun1, Vun2, Vun3);
s:= 0;
FOR j:= 1 TO Nface DO
BEGIN
p:= Pscal(LstF[j].Un, W); q:= p - LstF[j].Dc;
r:= Abs(q); IncR(s, q + r)
END;
Result:= s
END;
PROCEDURE Calc_Mat_Im2(La, Ha, Rc: Z_32; VAR Ma2: Tab_Pix);
CONST Seuil = 1E-10; P000: Pixel = (0, 0, 0);
VAR Iface: Byte;
Xcen, Ximg, Xm, Ycen, Yimg, Ym, Zimg, Zmin: Z_32;
u: Reel; Px: Pixel;
BEGIN
Xcen:= La DIV 2; Ycen:= Ha DIV 2; Zmin:= -2 * Rc;
FOR Xm:= 0 TO (La - 1) DO
BEGIN
Ximg:= Xm - Xcen; We(10, 40, Xm, 6);
FOR Ym:= 0 TO (Ha - 1) DO
BEGIN
Yimg:= Ym - Ycen; Zimg:= 0;
REPEAT
Dec(Zimg); u:= F_Polyedre(Ximg, Yimg, Zimg + Rcen)
UNTIL ((u<Seuil) OR (Zimg=Zmin));
IF (Zimg=Zmin) THEN Px:= P000
ELSE BEGIN
Iface:= Identif_F(Ximg, Yimg,
Zimg + Rcen);
Px:= LstC[Iface]
END;
Ma2[Xm,Ym]:= Px
END
END
END;
Voici ce que cela donne - deux fonctions ont été données pour la palette de couleur, et l'on peut à loisir y inverser les signes des termes (x, y, z):

#209 Le coin des beaux problèmes de Géométrie » La réduction des polyèdres convexes à l'intersection de demi-espaces » 28-03-2021 19:53:22
- Wiwaxia
- Réponses : 39
Bonjour,
Je prends l'initiative d'ouvrir un nouveau sujet afin de ne pas dévier inutilement une discussion lancée par Bernard-maths:
http://www.bibmath.net/forums/viewtopic.php?id=13396
qui part d'une idée apparentée mais la développe dans une direction spécifique
J'ai repris le contenu du message(#100) posté à la page (4)
http://www.bibmath.net/forums/viewtopic … =13396&p=4
et transféré les interventions qui ont suivi, qui n'avaient (heureusement) pas encore reçu de commentaire: la discussion n'en sera donc pas perturbée.
L'idée initialement exprimée était l'exploitation astucieuse, au moyen de la fonction valeur absolue, de la définition de tout polyèdre convexe considéré comme l'ensemble des solutions d'un système d'inéquations linéaires.
https://mathworld.wolfram.com/Polyhedron.html
Soit un plan (P), et (H) le pied de la perpendiculaire abaissée sur celui-ci depuis une origine donnée (O).
Ce plan est séparé du point (O) par la distance au centre Dc = OH ;
son orientation spatiale est définie par le vecteur unitaire (un) colinéaire à (OH) et de même sens:
un = (1/OH).OH .

On a pour tout point (M) du plan considéré HM perpendiculaire à un,
ce qui se traduit par l'annulation du produit scalaire correspondant: un.HM = 0 ;
en tenant compte de ce que HM = OM - OH ,
et en posant p = un.OM , il vient:
p - un.OH = 0 = p - (OH)(un.un) ,
soit finalement: p - Dc = 0 .
Soit maintenant un point quelconque (M) et la fonction F(p) = p - Dc + |p - Dc| ;
son expression dépend de la position du point par rapport au plan d'équation p = Dc :
a) si p ≤ Dc , alors F(p) = p - Dc + (Dc - p) = 0 ;
b) si p > Dc , alors F(p) = 2(p - Dc) > 0 .
Deux régions de l'espace, séparées par le plan frontière d'équation p = Dc , sont par conséquent discernables:
a) celle qui contient l'origine, caractérisée (comme le plan limite) par l'égalité F(p) = 0 ;
b) l'autre pour laquelle on a F(p) > 0 .
Élargissons désormais la notion précédente au cas d'un polyèdre convexe, défini par la donnée d'au moins 4 plans entourant l'origine, en considérant la somme suivante étendue à toutes les faces présentes dont chacune est caractérisée par le couple (unj , Dcj):
S(M) = Σj=1Nf (Fj(p)) ;
Le domaine intérieur (faces incluses) du polyèdre est caractérisé par l'égalité S(M) = 0 ;
comme il n'intervient en effet que des termes non-négatifs, chacun d'eux est obligatoirement nul:
Fj(p) = 0 ;
on définit ainsi l'intersection commune à tous les demi-espaces délimités par les diverses faces, et contenant l'origine.
Remarques:
# La donnée des sommets n'est pas indispensable: il suffit simplement de connaître pour chaque face la distance (Dcj) la séparant du centre, et les composantes du vecteur unitaire normal (unj) correspondant.
# La présence d'un centre de symétrie n'est pas nécessaire; s'il existe toutefois, l'expression de la somme S(M) se simplifie par regroupement des termes, dont le nombre est divisé par deux; on retrouve alors une expression du type:
S(M) = Σ (|Dc + p| + |Dc - p|) .
#210 Re : Le coin des beaux problèmes de Géométrie » Des équations et des cubes » 24-03-2021 15:29:10
Je répond simplement sur un point:
... C'est parce que je veux garder des faces planes sur mes objets, et c'est bien le problème que je rencontre (presque partout) avec les logiciels, sauf en particulier GeoGebra, en dimension 2, mais en 3D il ne prend que très peu d'expressions non standard, et c'est pour ça que je fais des montages !
Je vais te parler des bandes de plan ou tranches d'espace : soit un triangle ABC, il peut être défini par une "équation pleine" du genre Somme des 3 distances d'un point du plan aux 3 droites supports des côtés = hauteur (si équilatéral) ou f(des angles, des côtés) en général ...
Les polyèdres et leurs faces planes sont parfaitement reproductibles (tout au moins lorsqu'ils sont convexes) à l'aide d'un langage de bas niveau (au sens des fonctions de base disponibles) tel que le Pascal.
Je posterai pour mise en œuvre du procédé le programme dont j'ai réglé hier les derniers détails (1)
La même démarche permet des troncatures par des plans, et même par des surfaces courbes - moyennant quelques aménagements.
Je sais que POV-Ray présente (entre autres) des objets plans, tels que les triangles définis par les coordonnées de leurs sommets. Peut-être devrais-tu travailler la question.
En vrac (les liens sont anciens)
https://khayyam.developpez.com/articles/3d/povray/
http://ddata.over-blog.com/xxxyyy/0/02/ … ncipal.pdf
http://povray.free.fr/
https://mabboux.pagesperso-orange.fr/ph … rem/d1.htm
http://www.f-lohmueller.de/index_f.htm
Bon voyage !
(1) Pour le recentrage de la présente discussion, j'ai transféré mes interventions sur un nouveau sujet:
#211 Re : Le coin des beaux problèmes de Géométrie » Des équations et des cubes » 24-03-2021 10:01:09
Bonjour,
... Il faut aussi que je te donne 2 équations pour voir si tu les sors correctement avec tes logiciels, ou si tu fais "du montage" comme moi avec GeoGebra!? ...
J'ai déjà donné mon accord de principe pour des équations de complexité raisonnable.
J'exprime cependant ma réserve dans le cas d'un usage immodéré des valeurs absolues, pour lesquelles tu manifestes un intérêt hors du commun: la prolifération des cas particuliers risque de conduire à une situation ingérable, en ce qui concerne la dérivation.
Ceci dit, la discussion reste ouverte.
... je crois qu'il faut qu'on mette les choses au point ... nous travaillons sur des équations différentes.
... / ...
Je vais donc lancer une nouvelle discussion sur les équations de polyèdres convexes pleins, et les surfaces de niveau qu'on peut en tirer ...
Soit un plan (P), et (H) le pied de la perpendiculaire abaissée sur celui-ci depuis une origine donnée (O).
Ce plan est séparé du point (O) par la distance au centre Dc = OH ;
son orientation spatiale est définie par le vecteur unitaire (un) colinéaire à (OH) et de même sens:
un = (1/OH).OH .

On a pour tout point (M) du plan considéré HM perpendiculaire à un,
ce qui se traduit par l'annulation du produit scalaire correspondant: un.HM = 0 ;
en tenant compte de ce que HM = OM - OH ,
et en posant p = un.OM , il vient:
p - un.OH = 0 = p - (OH)(un.un) ,
soit finalement: p - Dc = 0 .
Soit maintenant un point quelconque (M) et la fonction F(p) = p - Dc + |p - Dc| ;
son expression dépend de la position du point par rapport au plan d'équation p = Dc :
a) si p ≤ Dc , alors F(p) = p - Dc + (Dc - p) = 0 ;
b) si p > Dc , alors F(p) = 2(p - Dc) > 0 .
Deux régions de l'espace, séparées par le plan frontière d'équation p = Dc , sont par conséquent discernables:
a) celle qui contient l'origine, caractérisée (comme le plan limite) par l'égalité F(p) = 0 ;
b) l'autre pour laquelle on a F(p) > 0 .
Élargissons désormais la notion précédente au cas d'un polyèdre convexe, défini par la donnée d'au moins 4 plans entourant l'origine, en considérant la somme suivante étendue à toutes les faces présentes dont chacune est caractérisée par le couple (unj , Dcj):
S(M) = Σj=1Nf (Fj(p)) ;
Le domaine intérieur (faces incluses) du polyèdre est caractérisé par l'égalité S(M) = 0 ;
comme il n'intervient en effet que des termes non-négatifs, chacun d'eux est obligatoirement nul:
Fj(p) = 0 ;
on définit ainsi l'intersection commune à tous les demi-espaces délimités par les diverses faces, et contenant l'origine.
Remarques:
# La donnée des sommets n'est pas indispensable: il suffit simplement de connaître pour chaque face la distance (Dcj) la séparant du centre, et les composantes du vecteur unitaire normal (unj) correspondant.
# La présence d'un centre de symétrie n'est pas nécessaire; s'il existe toutefois, l'expression de la somme S(M) se simplifie par regroupement des termes, dont le nombre est divisé par deux; on retrouve alors une expression du type:
S(M) = Σ (|Dc + p| + |Dc - p|) .
#212 Re : Le coin des beaux problèmes de Géométrie » Des équations et des cubes » 22-03-2021 10:31:01
Bonjour Bernard-maths,
... pour tes derniers dessins, je remarque que ça ne correspond pas à ce que j'obtiens théoriquement !?
Tes dessins donnent des arrondis sur les arêtes, alors que moi je garde les 8 triangles, mais entre les triangles je n'ai pas de plats mais des morceaux de cylindres, et aux sommets j'ai des calottes sphériques ... si n > 1, ou rentrés si n < 1. Comme pour un dé à jouer ...
La dernière série de surfaces fermées est aux précédentes
ce que le graphe d'équation x8 + y8 = 1 est au carré (1)
et ce que la surface d'équation x8 + y8 + z8 = 1 est au cube (2):
(1): image réalisée sur WolframAlpha.
(2): image réalisée sur Surfer
Il n'y a pas de délimitation précise des arrondis, et si les dimensions d'une face se réduisent en ordre de grandeur à la largeur des précédents, alors cette face ne présente plus de méplat.
L'inconvénient de ta démarche est son défaut de généralité; elle ne vaut que pour une famille de polyèdres.
Les surfaces représentées dans le message (#94) dérivent de la même équation
(aN + xN)1/N + (aN + yN)1/N + (aN + zN)1/N = b .
... TON logiciel (ou un autre) est-il capable de "prendre une équation" et de tracer la figure correspondante ? ...
Le programme que j'ai fait admet en théorie toute équation du type F(x, y, z) = 0 ... à condition qu'elle ne soit pas trop lourde, de même que les composantes du gradient. Sous ce rapport, l'oloïde signalé par Yoshi présente une complexité (pour l'instant) incontournable: j'ai tenté en vain de simplifier l'équation cartésienne pour envisager un temps de calcul raisonnable.
... Je pense (entre autre) à Pov Ray, ... qui est payant, mais je ne peux pas me lancer "pour rien" si c'est pas efficace ...
La dernière version de POV-Ray est gratuite, et après une période de familiarisation assez laborieuse, j'ai pu obtenir une série de polyèdres conçus comme un réseau d'arêtes, à l'aide seulement de deux sortes d'objets (sphères et cylindres).
Je viens de retrouver l'un des polyèdres permutationnels réalisés à l'aide de ce logiciel:

#213 Re : Le coin des beaux problèmes de Géométrie » Des équations et des cubes » 20-03-2021 12:16:05
Bonjour,
Toujours à propos de ton message #86
Remarques :
Cette présentation n’est qu’un aspect de la « montagne de glace » (iceberg) qui se cache derrière ce type d’équation …
Non seulement la génération de polyèdres, mais aussi des arrondis sont possibles, ainsi que pour d’autres volumes ...
On peut effectivement les obtenir en remplaçant la somme (|1 + u| + |1 - u|)
par le terme T = (1 + uN)1/N;
le calcul du vecteur gradient ne pose pas de difficulté, puisque l'on a (dT/du) = uN-1/(1 + u)(N-1)/N .
Voici ce que l'on obtient pour le même polyèdre, en prenant N = 8 :

Il faut que l'exposant (N) soit suffisamment élevé afin de réduire la largeur des plages intermédiaires; les calculs les plus rapides s'obtiennent pour N = 2k ou 2k + 2 .
#214 Re : Le coin des beaux problèmes de Géométrie » Des équations et des cubes » 18-03-2021 08:47:36
Bonjour,
Je réponds au message (#86) de Bernard-maths: tu exploites astucieusement une formule unique, qui conduit à une séquence de rhombicuboctaèdres dont les termes extrêmes (à faces d'aire nulle, réduites à un point) sont l'octaèdre et le cube.
Les 26 faces des polyèdres intermédiaires correspondent aux 33 = 27 combinaisons envisageables des domaines des coordonnées cartésiennes (x, y, z):
u < -1 ; -1 ≤ u ≤ 1 ; 1 < u ,
à l'exception de la combinaison centrale: -1 ≤ x, y et z ≤ 1
à laquelle se réduit le cas limite du cube.

L'inconvénient est qu'en renonçant à la démarche la plus générale, tu te restreins à une famille très particulière de polyèdres présentant simultanément des faces normales
# aux axes du repère (±1, 0, 0), (0, ±1, 0), (0, 0, ±1) ,
# à ses bissectrices (±a, ±a, 0), (±a, 0, ±a), (0, ±a, ±a) avec a = 1/√2 ,
# et à ses diagonales (±b, ±b, ±b) avec b = 1/√3 .
Tu exclus ainsi plusieurs polyèdres présentant des faces d'orientations semblables, mais en moindre nombre ou différemment éloignées du centre: cube et octaèdre tronqués, cuboctaèdre (tronqué ou non).
Voir Rhombicuboctaèdre, Polyèdres archimédiens.
https://mathcurve.com/polyedres/rhombic … edre.shtml
https://mathcurve.com/polyedres/archime … dien.shtml
#215 Re : Le coin des beaux problèmes de Géométrie » Les figures rayonnantes : principes, équations, et jolis dessins ! » 17-03-2021 08:44:17
Re-bonjour,
Les fonctions puissances conduisent à une expression plus simple, la demi-somme ([1 + u| + |1 - u|)/2
étant remplacée par (1 + un)1/n;
l'équation polaire devient dans ce cas: ρ = (1 + (K/Sin(θ))n)1/n + (1 + (K/Cos(θ))n)1/n - 1 .
Le rayon de courbure des arrondis est d'autant plus petit que l'exposant (n) est plus élevé:
#216 Re : Le coin des beaux problèmes de Géométrie » Les figures rayonnantes : principes, équations, et jolis dessins ! » 16-03-2021 20:37:50
Il s'en fallait de peu pour que ça marche:
#217 Re : Le coin des beaux problèmes de Géométrie » Les figures rayonnantes : principes, équations, et jolis dessins ! » 16-03-2021 19:42:14
... Sachant que la fonction F(u) = (|1 + u| + |1 - u|)/2 vaut 1 sur le domaine [-1 ; +1] et |u| en dehors de celui-ci, il doit être possible de trouver une équation polaire de la forme
ρ = (1/2)(F(v) + F(w))
en convenant de poser: v = R.Sin(θ0)/Sin(θ) et w = R.Sin(θ0)/Cos(θ)
(je n'ai pas fait la vérification des ajustements) ...
Cela ressemble au graphe que tu proposes, mais ne lui est pas tout à fait identique; il faut recourir à une expression un peu plus compliquée.

Là, j'ai triché en utilisant WolframAlpha.
#218 Re : Le coin des beaux problèmes de Géométrie » Les figures rayonnantes : principes, équations, et jolis dessins ! » 16-03-2021 19:04:31
Ce qui est en cause dans l'équation polaire invoquée, c'est la demi-somme des valeurs absolues.

C'est pratique, Geogebra !
#219 Re : Le coin des beaux problèmes de Géométrie » Les figures rayonnantes : principes, équations, et jolis dessins ! » 16-03-2021 14:18:41
Bonjour,
... 48 visites, mais pas une seule question ! Même pas Wiwaxia :) …
Désolé, je n'arrive pas à suivre car j'ai par ailleurs fort à faire dans d'autres domaines; et chaque nouveau sujet abordé soulève de nouvelles difficultés spécifiques.
... si un cercle concentrique à un carré, à l'intérieur au début, se met à grandir jusqu’à atteindre puis dépasser le carré, que peut-il se passer ? … Comment faire " rayonner " le cercle en dépassement ?
Je vous joins la figure suivante : les arcs qui dépassent se transforment en « rayons » de 2 droites parallèles !
... / ...
Évidemment, on peut cacher le carré … et ne garder que la courbe verte !Voilà le genre de « trucs » que je vous propose de découvrir, et « bricoler » ! ...
Sachant que la fonction F(u) = (|1 + u| + |1 - u|)/2 vaut 1 sur le domaine [-1 ; +1] et |u| en dehors de celui-ci, il doit être possible de trouver une équation polaire de la forme
ρ = (1/2)(F(v) + F(w))
en convenant de poser: v = R.Sin(θ0)/Sin(θ) et w = R.Sin(θ0)/Cos(θ)
(je n'ai pas fait la vérification des ajustements).

S'il existe réellement des arrondis au voisinage du raccordement des parties quasi-rectilignes et quasi-circulaires, on peut envisager des équations du type
ρn = (1/2n)(F(v) + F(w))
avec cette fois: v = [R.Sin(θ0)/Sin(θ)]n , w = [R.Sin(θ0)/Cos(θ)]n et n = 4 ou 8 .
#220 Re : Le coin des beaux problèmes de Géométrie » Connaissez-vous les figures de Paul Schatz dont l'oloïde ? » 10-03-2021 15:36:58
Suite de notre rubrique conchyliophile: le tracé "à main levée" des polyèdres d'ordre N = 3, 4 et 5 :

Pour N = 2 on obtient un tétraèdre déformé, pour N = 3 un octaèdre.
Il y a plus généralement S = 2N sommets, F = (4N - 4) faces et A = (6N - 6) arêtes.
La relation d'Euler S + F = A + 2 est vérifiée.
#221 Re : Le coin des beaux problèmes de Géométrie » Connaissez-vous les figures de Paul Schatz dont l'oloïde ? » 10-03-2021 10:35:31
La figure résulte d'un dessin rapide - j'espère qu'elle montre la transformation du polyèdre, et la parenté de symétrie.


#222 Re : Le coin des beaux problèmes de Géométrie » Connaissez-vous les figures de Paul Schatz dont l'oloïde ? » 10-03-2021 09:07:45
Bonjour,
... DONC je cours après 2 lièvres (Wiwaxia connaît bien), l'un à décomposer un octaèdre, "façon cube de Schatz", et l'autre à la place des cercles de l'oloïde, mettre des polygones. Donc obtenir des "polygonoïdes" ... ?
Mon lumbago, qui me rappelle très inopportunément mon état-civil, ne m'autorise pas à me prendre pour un lièvre et encore moins à pratiquer le tennis ou le basket, activités où la balle présente un axe de roto-inversion d'ordre 4 - à l'instar de l'oloÏde et du sphéricône.
Le polygonoïde que tu évoques est un dodécaèdre résultant de la déformation d'un cube, et du pliage selon une diagonale des 6 faces carrées, l'un des axes de symétrie d'ordre (4) se transformant en axe de roto-inversion.
https://mathcurve.com/courbes3d/couture/couture.shtml
http://images.math.cnrs.fr/La-balle-et-la-courbe.html
https://www.freepng.fr/png-igho28/
http://cge2016.impmc.upmc.fr/ppt/Garreau.pdf
https://coursgeologie.com/les-operation … metrie-244
#223 Re : Le coin des beaux problèmes de Géométrie » Connaissez-vous les figures de Paul Schatz dont l'oloïde ? » 08-03-2021 19:33:12
Bonjour,
L'objet est en effet remarquable, tant par sa forme que par son mouvement de roulement.
La comparaison des mouvements (filmés à partir de 4 min 25) n'est cependant guère convaincante: il eût fallu pour cela lancer une sphère ou un cylindre métallique de dimensions et de densité comparables, et non un rouleau de ruban adhésif beaucoup plus léger.
Et la justification donnée plus loin (4:40 à 4:50) l'est encore moins:
À chaque demi-rotation il va bénéficier d'une nouvelle petite poussée, un nouveau petit élan si vous voulez ...
Le barycentre reste à distance fixe de l'objet (la ligne de roulement demeurant tangente à la sphère inscrite, si j'ai bien vu), et il se déplace horizontalement d'un mouvement théoriquement uniforme, de fait légèrement décéléré à cause des frottements.
On le voit même un bref instant repartir en sens opposé en fin de course (5:26), ce qui laisses quelques doutes sur l'horizontalité du sol ...
Le sujet abordé est aussi intéressant qu'inattendu.
On trouve quelques liens sur Wikipédia
https://fr.wikipedia.org/wiki/Olo%C3%AFde
Je n'ai rien compris à l'équation cartésienne, polynôme comportant 48 termes mais aucune constante: l'origine (0,0,0) vérifie apparemment l'équation; la somme paraît dépourvue de toute symétrie interne apparente.
... Et je trouve qu'il y a aussi une parenté (+ ou - lointaine certes) avec le sujet traité par wiwaxia sur le découpage du cube en tétraèdres ...
Tout à fait. Le découpage conduit ici à un enchaînement cyclique et flexible de 6 tétraèdres allongés.

Il faudrait pointer certains sommets sur une série de constructions intermédiaires pour mettre en évidence l'inversion.
PS: Pas étonnante, l'absence de symétrie: l'origine est au centre du cercle horizontal !
#224 Re : Le coin des beaux problèmes de Géométrie » Des équations et des cubes » 08-03-2021 09:54:10
Bonjour,
... Après vous être bien amusés avec les cubes (et variantes) si vous ne connaissiez pas, vous devriez aimer...
Cette information est en effet très intéressante, et mérite d'être commentée dans un discussion à part.
J'ai décroché des précédents échanges en raison d'obligations assez lourdes; il ne m'a pas été possible de suivre les développements multiples donnés au sujet initial. Cependant je m'efforcerai d'y répondre.
@ Bernard-maths: l'installation de Geogebra est d'une surprenante simplicité; je n'ai néanmoins pas eu directement accès au fichier en question.
Cependant l'application apparaît remarquable, et susceptible de rendre de précieux services dans l'élaboration rapide d'images mathématiques.
#225 Re : Le coin des beaux problèmes de Géométrie » Des équations et des cubes » 23-02-2021 08:22:34
Bonjour Bernard-maths,
... Merci de me dire ce que vous pensez du dernier document ...
Question très prosaïque: faut-il installer Geogobra ou l'une de ses applications pour ouvrir le fichier ggb, et dans l'affirmative laquelle ? Déjà il ne m'a pas été possible de consulter un précédent document au même format. Merci pour l'info.
Cordialement,
Wiwaxia.







