jeudi 9 avril 2015

Solides avec décor à pois de couleur - version 2

C'est la suite de :
http://pstricks.blogspot.fr/2015/04/solides-avec-decor-pois-de-couleur.html

Cette version permet de mieux adapter la forme des pois au maillage du solide en dessinant une ellipse au lieu d'un cercle. Les paramètres de l'ellipse : demi grand axe et demi petit axe pourront être ajuster avec le coefficient de mul dans :
d1 exch 0.75 mul def
d2 exch 0.75 mul def

Les divers exemples deviennent :

 \documentclass{article}
\usepackage{pst-solides3d}
\begin{document}
\begin{center}
\begin{pspicture}(-5,-5)(5,5)
\psframe(-5,-5)(5,5)
\psset{viewpoint=100 30 50 rtp2xyz,Decran=100,lightsrc=viewpoint,solidmemory}
%\psSolid[object=grille,base=-4 4 -4 4]%
\psSolid[object=tore,
        r1=3,r0=1.5,grid,
        fillcolor=blue,
        ngrid=24 60]
\psSolid[object=tore,
        r1=3,r0=1.5,
        action=none,name=torepois,
        ngrid=18 36]
\codejps{
%% syntaxe : x0 y0 a b Ellipse_ : demi-petit axe et demi-grand axe cente de l'ellipse
/Ellipse_ {
4 dict begin
   /b exch def
   /a exch def
   /y0 exch def
   /x0 exch def
   0 360 {cos a mul x0 add} {sin b mul y0 add} Courbeparam_
end
} def
0 1 torepois solidnombrefaces 1 sub {/i exch def % numero de la face
torepois i solidgetsommetsface /TAB exch def
torepois i solidcentreface /G defpoint3d
% premier côté
TAB 0 3 getinterval aload pop /A0 defpoint3d % sommet n°0 x0 y0 z0
TAB 3 3 getinterval aload pop /A1 defpoint3d % sommet n°1 x1 y1 z1
 A0 G vecteur3d /V1 defpoint3d % A0G
 A0 A1 vecteur3d unitaire3d /U1 defpoint3d % vecteur unitaire A1A2
 V1 U1 vectprod3d norme3d /d1 exch 0.8 mul def
% deuxième côté
%TAB 3 3 getinterval aload pop defpoint3d /A1 % sommet n°0 x0 y0 z0
TAB 6 3 getinterval aload pop /A2 defpoint3d % sommet n°2 x2 y2 z2
 A2 G vecteur3d /V2 defpoint3d % A2G
 A1 A2 vecteur3d unitaire3d /U2 defpoint3d % vecteur unitaire A1A2
 V2 U2 vectprod3d norme3d /d2 exch 0.8 mul def
 0 0 d2 d1 Ellipse_ torepois i projpath
i 2 modulo 0 eq {(magenta) cvx exec}{(yellow) cvx exec}ifelse
fill
} for
}%
\end{pspicture}
\end{center}
\end{document}

 \documentclass{article}
\usepackage{pst-solides3d}
\definecolor{coquille}{rgb}{0.984 0.95 0.718}
\begin{document}
\begin{center}
\begin{pspicture}(-5,-3)(5,5)
\psframe(-5,-3)(5,5)
\pstVerb{/hauteur 5 def /rayon 3 def /angleT 50 def}%
\psset{viewpoint=20 angleT 30 rtp2xyz,Decran=15,lightsrc=15 30 30 rtp2xyz,solidmemory}
\psSolid[object=grille,base=-4 4 -4 4,linewidth=0.02,opacity=0.5](0,0,0)
\psSolid[object=cone,
         h=hauteur,r=rayon,grid,
         fillcolor=coquille,
        ngrid=1 72]
\psSolid[object=cone,
         h=hauteur,r=rayon,grid,
         hue=0 1 0.8 1,action=none,name=conepois,
        ngrid=18 40]
\codejps{
%% syntaxe : x0 y0 a b Ellipse_ : demi-petit axe et demi-grand axe cente de l'ellipse
/Ellipse_ {
4 dict begin
   /b exch def
   /a exch def
   /y0 exch def
   /x0 exch def
   0 360 {cos a mul x0 add} {sin b mul y0 add} Courbeparam_
end
} def
0 1 conepois solidnombrefaces 1 sub {/i exch def % numero de la face
conepois i solidgetsommetsface /TAB exch def
conepois i solidcentreface /G defpoint3d
% premier côté
TAB 0 3 getinterval aload pop /A0 defpoint3d % sommet n°0 x0 y0 z0
TAB 3 3 getinterval aload pop /A1 defpoint3d % sommet n°1 x1 y1 z1
 A0 G vecteur3d /V1 defpoint3d % A0G
 A0 A1 vecteur3d unitaire3d /U1 defpoint3d % vecteur unitaire A1A2
 V1 U1 vectprod3d norme3d /d1 exch 0.8 mul def
% deuxième côté
%TAB 3 3 getinterval aload pop defpoint3d /A1 % sommet n°0 x0 y0 z0
TAB 6 3 getinterval aload pop /A2 defpoint3d % sommet n°2 x2 y2 z2
 A2 G vecteur3d /V2 defpoint3d % A2G
 A1 A2 vecteur3d unitaire3d /U2 defpoint3d % vecteur unitaire A1A2
 V2 U2 vectprod3d norme3d /d2 exch 0.8 mul def
 0 0 d2 d1 Ellipse_ conepois i projpath
i 2 modulo 0 eq {(red) cvx exec}{(blue) cvx exec}ifelse
fill
} for
}%
\psSolid[object=plan,definition=normalpoint,args={0 0 0 [0 0 1]},
         action=none,
         base=-4 4 -4 4,
         name=monplanB]
\psset{plan=monplanB}
\psProjection[object=cercle,linewidth=0.05,
              args=0 0 rayon,range=-90 angleT add 90 angleT add]
\psPoint(angleT sin rayon mul,angleT cos rayon mul neg,0){A}
\psPoint(0,0,hauteur){H}
\psPoint(angleT sin rayon mul neg,angleT cos rayon mul,0){B}
\psline[linewidth=0.05](B)(H)(A)
\end{pspicture}
\end{center}
\end{document}

\documentclass{article}
\usepackage{pst-solides3d}
\definecolor{coquille}{rgb}{0.984 0.95 0.718}
\begin{document}
\begin{center}
\begin{pspicture}(-5,-4)(5,5)
\psframe(-5,-4)(5,5)
\pstVerb{/hauteur 5 def /rayon 2 def /angleT 50 def}%
\psset{viewpoint=15 angleT 30 rtp2xyz,Decran=12,lightsrc=viewpoint,solidmemory}
\psSolid[object=grille,base=-4 4 -4 4]%
\psSolid[object=cylindre,
        h=hauteur,r=rayon,grid,
        fillcolor=coquille,
        ngrid=10 50](0,0,0)
\psSolid[object=cylindre,
        h=hauteur,r=rayon,grid,
        fillcolor=coquille,
        ngrid=4 20,name=cylindrepois,action=none](0,0,0)
\codejps{
%% syntaxe : x0 y0 a b Ellipse_ : demi-petit axe et demi-grand axe cente de l'ellipse
/Ellipse_ {
4 dict begin
   /b exch def
   /a exch def
   /y0 exch def
   /x0 exch def
   0 360 {cos a mul x0 add} {sin b mul y0 add} Courbeparam_
end
} def
1 1 cylindrepois solidnombrefaces 1 sub {/i exch def % numero de la face
cylindrepois i solidgetsommetsface /TAB exch def
cylindrepois i solidcentreface /G defpoint3d
% premier côté
TAB 0 3 getinterval aload pop /A0 defpoint3d % sommet n°0 x0 y0 z0
TAB 3 3 getinterval aload pop /A1 defpoint3d % sommet n°1 x1 y1 z1
 A0 G vecteur3d /V1 defpoint3d % A0G
 A0 A1 vecteur3d unitaire3d /U1 defpoint3d % vecteur unitaire A1A2
 V1 U1 vectprod3d norme3d /d1 exch 0.8 mul def
% deuxième côté
%TAB 3 3 getinterval aload pop defpoint3d /A1 % sommet n°0 x0 y0 z0
TAB 6 3 getinterval aload pop /A2 defpoint3d % sommet n°2 x2 y2 z2
 A2 G vecteur3d /V2 defpoint3d % A2G
 A1 A2 vecteur3d unitaire3d /U2 defpoint3d % vecteur unitaire A1A2
 V2 U2 vectprod3d norme3d /d2 exch 0.8 mul def
 0 0 d2 d1 Ellipse_ cylindrepois i projpath
i 2 modulo 0 eq {(red) cvx exec}{(blue) cvx exec}ifelse
fill
} for
}%
\psSolid[object=plan,definition=normalpoint,args={0 0 hauteur [0 0 1]},
         action=none,
         base=-4 4 -4 4,
         name=monplanH]
\psset{plan=monplanH}
\psProjection[object=cercle,linewidth=0.05,
              args=0 0 rayon]
\psSolid[object=plan,definition=normalpoint,args={0 0 0 [0 0 1]},
         action=none,
         base=-4 4 -4 4,
         name=monplanB]
\psset{plan=monplanB}
\psProjection[object=cercle,linewidth=0.05,
              args=0 0 rayon,range=-90 angleT add 90 angleT add]
\psPoint(angleT sin rayon mul,angleT cos rayon mul neg,0){A}
\psPoint(angleT sin rayon mul,angleT cos rayon mul neg,hauteur){B}
\psline[linewidth=0.05](A)(B)
\psPoint(angleT sin rayon mul neg,angleT cos rayon mul,0){C}
\psPoint(angleT sin rayon mul neg,angleT cos rayon mul,hauteur){D}
\psline[linewidth=0.05](C)(D)
\end{pspicture}
\end{center}
\end{document}
\documentclass{article}
\usepackage{pst-solides3d}
\begin{document}
\begin{center}
\begin{pspicture}(-3,-3)(3,3)
\psframe*[linecolor=cyan!20](-3,-3)(3,3)
\psframe[fillstyle=hlines,hatchangle=0](-3,-3)(3,3)
\psset{viewpoint=10 30 30 rtp2xyz,solidmemory, Decran=10,lightsrc=viewpoint}
\psSolid[object=sphere,r=2.5,ngrid=18 36,fillcolor=white,name=sph1,linewidth=0.02]
\codejps{
%% syntaxe : x0 y0 a b Ellipse_ : demi-petit axe et demi-grand axe cente de l'ellipse
/Ellipse_ {
4 dict begin
   /b exch def
   /a exch def
   /y0 exch def
   /x0 exch def
   0 360 {cos a mul x0 add} {sin b mul y0 add} Courbeparam_
end
} def
0 1 sph1 solidnombrefaces 1 sub {/i exch def % numero de la face
sph1 i solidgetsommetsface /TAB exch def
sph1 i solidcentreface /G defpoint3d
% premier côté
TAB 0 3 getinterval aload pop /A0 defpoint3d % sommet n°0 x0 y0 z0
TAB 3 3 getinterval aload pop /A1 defpoint3d % sommet n°1 x1 y1 z1
 A0 G vecteur3d /V1 defpoint3d % A0G
 A0 A1 vecteur3d unitaire3d /U1 defpoint3d % vecteur unitaire A1A2
 V1 U1 vectprod3d norme3d /d1 exch 0.75 mul def
% deuxième côté
%TAB 3 3 getinterval aload pop defpoint3d /A1 % sommet n°0 x0 y0 z0
TAB 6 3 getinterval aload pop /A2 defpoint3d % sommet n°2 x2 y2 z2
 A2 G vecteur3d /V2 defpoint3d % A2G
 A1 A2 vecteur3d unitaire3d /U2 defpoint3d % vecteur unitaire A2A3
 V2 U2 vectprod3d norme3d /d2 exch 0.75 mul def
 0 0 d2 d1 Ellipse_ sph1 i projpath
1 0 0 setrgbcolor
fill
} for
}%
\end{pspicture}
\end{center}
\end{document}

mardi 7 avril 2015

Solides avec décor à pois de couleur

\documentclass{article}
\usepackage{pst-solides3d}
\definecolor{coquille}{rgb}{0.984 0.95 0.718}
\begin{document}
\begin{center}
\begin{pspicture}(-5,-4)(5,5)
\psframe(-5,-4)(5,5)
\pstVerb{/hauteur 5 def /rayon 2 def /angleT 50 def}%
\psset{viewpoint=15 angleT 30 rtp2xyz,Decran=12,lightsrc=viewpoint,solidmemory}
\psSolid[object=grille,base=-4 4 -4 4]%
\psSolid[object=cylindre,
        h=hauteur,r=rayon,grid,
        fillcolor=coquille,
        ngrid=10 50](0,0,0)
\psSolid[object=cylindre,
        h=hauteur,r=rayon,grid,
        fillcolor=coquille,
        ngrid=8 20,name=cylindrepois,action=none](0,0,0)
\codejps{
% projection sur la face n°i
% coordonnées du centre et rayon du cercle
1 1 cylindrepois solidnombrefaces 1 sub {/i exch def % numero de la face
cylindrepois i solidgetsommetsface /TAB exch def
TAB 0 3 getinterval aload pop % sommet n°0 x0 y0 z0
TAB 3 3 getinterval aload pop % sommet n°1 x1 y1 z1
distance3d /Rayon exch 2.65 div def % distance entre les 2 sommets /2.65
0 360 0 0 Rayon Cercle_ cylindrepois i projpath
i 2 modulo 0 eq {(red) cvx exec}{(blue) cvx exec}ifelse
fill
} for
}%
\psSolid[object=plan,definition=normalpoint,args={0 0 hauteur [0 0 1]},
         action=none,
         base=-4 4 -4 4,
         name=monplanH]
\psset{plan=monplanH}
\psProjection[object=cercle,linewidth=0.05,
              args=0 0 rayon]
\psSolid[object=plan,definition=normalpoint,args={0 0 0 [0 0 1]},
         action=none,
         base=-4 4 -4 4,
         name=monplanB]
\psset{plan=monplanB}
\psProjection[object=cercle,linewidth=0.05,
              args=0 0 rayon,range=-90 angleT add 90 angleT add]
\psPoint(angleT sin rayon mul,angleT cos rayon mul neg,0){A}
\psPoint(angleT sin rayon mul,angleT cos rayon mul neg,hauteur){B}
\psline[linewidth=0.05](A)(B)
\psPoint(angleT sin rayon mul neg,angleT cos rayon mul,0){C}
\psPoint(angleT sin rayon mul neg,angleT cos rayon mul,hauteur){D}
\psline[linewidth=0.05](C)(D)
\end{pspicture}
\end{center}
\end{document}

\documentclass{article}
\usepackage{pst-solides3d}
\definecolor{coquille}{rgb}{0.984 0.95 0.718}
\begin{document}
\begin{center}
\begin{pspicture}(-5,-5)(5,5)
\psframe(-5,-5)(5,5)
\psset{viewpoint=100 30 50 rtp2xyz,Decran=100,lightsrc=viewpoint,solidmemory}
%\psSolid[object=grille,base=-4 4 -4 4]%
\psSolid[object=tore,
        r1=3,r0=1.5,grid,
        fillcolor=coquille,
        ngrid=24 60]
\psSolid[object=tore,
        r1=3,r0=1.5,
        action=none,name=torepois,
        ngrid=18 36]
\codejps{
% projection sur la face n°i
% coordonnées du centre et rayon du cercle
0 1 torepois solidnombrefaces 1 sub {/i exch def % numero de la face
torepois i solidgetsommetsface /TAB exch def
TAB 6 3 getinterval aload pop % sommet n°2 x2 y2 z2
TAB 3 3 getinterval aload pop % sommet n°1 x1 y1 z1
distance3d /Rayon exch 3 div def % distance entre les 2 sommets /3
0 360 0 0 Rayon Cercle_ torepois i projpath
i 2 modulo 0 eq {(red) cvx exec}{(blue) cvx exec}ifelse
fill
} for
}%
\end{pspicture}
\end{center}
\end{document}





\documentclass{article}
\usepackage{pst-solides3d}
\definecolor{coquille}{rgb}{0.984 0.95 0.718}
\begin{document}
\begin{center}
\begin{pspicture}(-5,-3)(5,5)
\psframe(-5,-3)(5,5)
\pstVerb{/hauteur 5 def /rayon 3 def /angleT 50 def}%
\psset{viewpoint=20 angleT 30 rtp2xyz,Decran=15,lightsrc=15 30 30 rtp2xyz,solidmemory}
\psSolid[object=grille,base=-4 4 -4 4,linewidth=0.02,opacity=0.5](0,0,0)
\psSolid[object=cone,
         h=hauteur,r=rayon,grid,
         fillcolor=coquille,
        ngrid=1 72]
\psSolid[object=cone,
         h=hauteur,r=rayon,grid,
         hue=0 1 0.8 1,action=none,name=conepois,
        ngrid=18 40]
\codejps{
% projection sur la face n°i
% coordonnées du centre et rayon du cercle
0 1 conepois solidnombrefaces 1 sub {/i exch def % numero de la face
conepois i solidgetsommetsface /TAB exch def
TAB 0 3 getinterval aload pop % sommet n°2 x2 y2 z2
TAB 3 3 getinterval aload pop % sommet n°1 x1 y1 z1
distance3d /Rayon exch 3 div def % distance entre les 2 sommets /4
0 360 0 0 Rayon Cercle_ conepois i projpath
i 2 modulo 0 eq {(red) cvx exec}{(blue) cvx exec}ifelse
fill
} for
}%
\psSolid[object=plan,definition=normalpoint,args={0 0 0 [0 0 1]},
         action=none,
         base=-4 4 -4 4,
         name=monplanB]
\psset{plan=monplanB}
\psProjection[object=cercle,linewidth=0.05,
              args=0 0 rayon,range=-90 angleT add 90 angleT add]
\psPoint(angleT sin rayon mul,angleT cos rayon mul neg,0){A}
\psPoint(0,0,hauteur){H}
\psPoint(angleT sin rayon mul neg,angleT cos rayon mul,0){B}
\psline[linewidth=0.05](B)(H)(A)
\end{pspicture}
\end{center}
\end{document}

La sphère a déjà été traitée ici :
http://pstricks.blogspot.fr/2015/04/sphere-points.html




lundi 6 avril 2015

Œuf de Pâques à pois

C'est encore la suite de différents modèles d’œufs, celui-ci est un œuf à pois rouges et bleus.
Il nécessite le package pst-egg décrit dans les précédents articles :

 http://pstricks.blogspot.fr/2015/01/dessiner-un-oeuf-avec-pstricks.html
 http://pstricks.blogspot.fr/2015/01/dessiner-un-uf-avec-pstricks-avec-le.html
 http://pstricks.blogspot.fr/2015/03/faire-luf-avec-pstricks-suite.html

\documentclass{article}
\usepackage{pst-egg}
\definecolor{coquille}{rgb}{0.984 0.95 0.718}
\begin{document}
\begin{center}
\begin{pspicture}(-3,-4)(3,4)
\psframe[fillstyle=hlines,hatchangle=0](-3,-4)(3,4)
\psset{viewpoint=100 30 10 rtp2xyz,Decran=150,lightsrc=viewpoint,solidmemory,RotX=-30}
\pstegg[fillcolor=coquille,grid,ngrid=24 36]
\pstegg[fillcolor=coquille,grid,ngrid=18 20,name=oeuf,action=none]
\codejps{
% projection sur la face n°i
% coordonnées du centre et rayon du cercle
0 1 oeuf solidnombrefaces 1 sub {/i exch def % numero de la face
oeuf i solidgetsommetsface /TAB exch def
TAB 0 3 getinterval aload pop % sommet n°0 x0 y0 z0
TAB 3 3 getinterval aload pop % sommet n°1 x1 y1 z1
distance3d /Rayon exch 2.65 div def % distance entre les 2 sommets /2.65
0 360 0 0 Rayon Cercle_ oeuf i projpath
i 2 modulo 0 eq {(red) cvx exec}{(blue) cvx exec}ifelse
fill
} for
}%
\end{pspicture}
\end{center}
\end{document}

Avec les couleurs inversées :
\begin{pspicture}(-3,-4)(3,4)
\psframe*(-3,-4)(3,4)
\psframe[fillstyle=hlines,hatchangle=0,hatchcolor=white](-3,-4)(3,4)
\psset{viewpoint=100 30 10 rtp2xyz,Decran=150,lightsrc=viewpoint,solidmemory,RotY=30}
\pstegg[fillcolor=inversecoquille,grid,ngrid=24 36]
\pstegg[ngrid=18 20,name=oeuf,action=none]
\codejps{
% projection sur la face n°i
% coordonnées du centre et rayon du cercle
0 1 oeuf solidnombrefaces 1 sub {/i exch def % numero de la face
oeuf i solidgetsommetsface /TAB exch def
TAB 0 3 getinterval aload pop % sommet n°0 x0 y0 z0
TAB 3 3 getinterval aload pop % sommet n°1 x1 y1 z1
distance3d /Rayon exch 2.65 div def % distance entre les 2 sommets /2.65
0 360 0 0 Rayon Cercle_ oeuf i projpath
i 2 modulo 0 eq {(cyan) cvx exec}{(yellow) cvx exec}ifelse
fill
} for
}%
\end{pspicture}

Voici une version avec des pois en forme d'ellipse pour s'adapter un peu mieux au maillage du solide :
\begin{center}
\begin{pspicture}(-3,-4)(3,4)
\psframe(-3,-4)(3,4)
%\psframe[fillstyle=hlines,hatchangle=0,hatchcolor=white](-3,-4)(3,4)
\psset{viewpoint=100 30 10 rtp2xyz,Decran=150,lightsrc=viewpoint,solidmemory}
\pstegg[fillcolor=inversecoquille,grid,ngrid=24 36]
\pstegg[ngrid=18 20,name=oeuf,action=none]
\codejps{
%% syntaxe : x0 y0 a b Ellipse_ : demi-petit axe et demi-grand axe cente de l'ellipse
/Ellipse_ {
4 dict begin
   /b exch def
   /a exch def
   /y0 exch def
   /x0 exch def
   0 360 {cos a mul x0 add} {sin b mul y0 add} Courbeparam_
end
} def
0 1 oeuf solidnombrefaces 1 sub {/i exch def % numero de la face
oeuf i solidgetsommetsface /TAB exch def
oeuf i solidcentreface /G defpoint3d
% premier côté
TAB 0 3 getinterval aload pop /A0 defpoint3d % sommet n°0 x0 y0 z0
TAB 3 3 getinterval aload pop /A1 defpoint3d % sommet n°1 x1 y1 z1
 A0 G vecteur3d /V1 defpoint3d % A0G
 A0 A1 vecteur3d unitaire3d /U1 defpoint3d % vecteur unitaire A1A2
 V1 U1 vectprod3d norme3d /d1 exch 1 mul def
% deuxième côté
%TAB 3 3 getinterval aload pop defpoint3d /A1 % sommet n°0 x0 y0 z0
TAB 6 3 getinterval aload pop /A2 defpoint3d % sommet n°2 x2 y2 z2
 A2 G vecteur3d /V2 defpoint3d % A2G
 A1 A2 vecteur3d unitaire3d /U2 defpoint3d % vecteur unitaire A1A2
 V2 U2 vectprod3d norme3d /d2 exch 1 mul def
 0 0 d2 d1 Ellipse_ oeuf i projpath
i 2 modulo 0 eq {(cyan) cvx exec}{(yellow) cvx exec}ifelse
fill
} for
}%
\end{pspicture}
\end{center}

dimanche 5 avril 2015

Sphère à points

Marquer les facettes d'une sphère ou d'un solide quelconque par un point-disque de surface proportionnelle à celle de la facette.
\documentclass{article}
\usepackage{pst-solides3d}
\begin{document}
\begin{center}
\begin{pspicture}(-3,-3)(3,3)
\psframe*[linecolor=cyan!20](-3,-3)(3,3)
\psframe[fillstyle=hlines,hatchangle=0](-3,-3)(3,3)
\psset{viewpoint=10 30 30 rtp2xyz,solidmemory, Decran=10,lightsrc=viewpoint}
\psSolid[object=sphere,r=2.5,ngrid=18 36,fillcolor=white,name=sph1,linewidth=0.02]
\codejps{
% projection sur la face n°i
% coordonnées du centre et rayon du cercle
0 1 sph1 solidnombrefaces 1 sub {/i exch def % numero de la face
sph1 i solidgetsommetsface /TAB exch def
TAB 0 get TAB 1 get  TAB 2 get % sommet n°0 x0 y0 z0
TAB 3 get TAB 4 get  TAB 5 get % sommet n°1 x1 y1 z1
distance3d /Rayon exch 3 div def % distance entre les 2 sommets /3
0 360 0 0 Rayon Cercle_ sph1 i projpath
1 0 0 setrgbcolor
fill
} for
}%
\end{pspicture}
\end{center}
\end{document}

Configurations géométriques d’un bracelet

Voici un curieux bracelet ramené par mon épouse d’un voyage en Inde, pensant qu’il m’intéresserait. De conception très simple, puisqu’il est formé de 2 grands cercles et de 32 demi-cercles pouvant tourner autour d’un de leur diamètre respectif lié à l’un des grands cercles, ce qui permet de nombreuses configurations et des figures géométriques plaisantes. Les demi-cercles situés au-dessus ou au-dessous d’un grand cercle sont entrelacés de telle sorte que si on en tourne un, tous tournent en même temps. Les demi-cercles situés entre les 2 grands cercles sont solidaires par leurs sommets.
Il s'agit d'une tentative de représentation de ce bracelet avec PSTricks.
Je me limite dans un premier temps à la partie supérieure du bracelet : un cercle et 8 petits cercles. Les voici dépliés dans le plan du grand cercle.
On replie les demi-cercles vers l’intérieur.
Ces deux configurations représentées en perspective :
Une vue avec les demi-cercles verticaux :
Dans la deuxième étape, on représente les demi-cercles situés sous le grand cercle. Nous lions, arbitrairement afin de n’utiliser qu’une variable, les demi-cercles du dessus et dessous de telle façon qu’ils soient symétriques par rapport au plan du grand cercle. En voici deux vues, leurs plans étant inclinés à 45 degrés.
Ensuite, comme pour le bracelet réel, on duplique cette configuration et on la place sous la première de façon que les demi-cercles correspondants soient tangents :
Et pour faire plus joli, on rajoute quelques perles sur le pourtour des grands cercles.
Une animation en Gif :
Les fichiers :
http://manuel.luque.perso.neuf.fr/bracelet/bracelet-inde.pdf
http://manuel.luque.perso.neuf.fr/bracelet/bracelet-inde.tex









mercredi 25 mars 2015

Représenter une surface par des lignes version 0.3

Par rapport à la première version :
http://pstricks.blogspot.fr/2015/03/representer-une-surface-par-des-lignes.html
2 options ont été rajoutées, ce sont les valeurs par défaut qui sont indiquées. :
     
  • ColorsLines={(red) (red)} : permet d’obtenir une version bicolore des lignes, par exemple on obtiendra une alternance de lignes magenta et jaune en écrivant ColorsLines={(magenta) (yellow)}.
  • Le booléen bicolor=false permet d’activer la version bicolore des lignes, il suffit d'écrire bicolor dans les options.
  • Un booléen contour=false permet de dessiner la contour de la surface, il suffit décrire [contour] dans les options.
  • La couleur et l’épaisseur du contour peuvent être choisis avec les options :
    contourcolor=blue et contourwidth=.8pt.
 Voici 2 exemples illustrant ces nouvelles options :

Les fichiers :
http://manuel.luque.perso.neuf.fr/pst-shl/pst-shl-v.03.zip