summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/proflycee/tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-10-19 03:01:07 +0000
committerNorbert Preining <norbert@preining.info>2023-10-19 03:01:07 +0000
commit05e4c0a34b97237b4cd2f3fb0d5cd03e73b8e55e (patch)
treefc7502cefdd6bcd7e39361b7b5cfe5b650eeba11 /macros/latex/contrib/proflycee/tex
parentf4a002c5b54c3f9678105cef89c2cd0b4f41577a (diff)
CTAN sync 202310190301
Diffstat (limited to 'macros/latex/contrib/proflycee/tex')
-rw-r--r--macros/latex/contrib/proflycee/tex/ProfLycee.sty3
-rw-r--r--macros/latex/contrib/proflycee/tex/proflycee-tools-recreat.tex95
2 files changed, 97 insertions, 1 deletions
diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
index 8c89863d8c..176a4fd187 100644
--- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty
+++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
@@ -3,7 +3,8 @@
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2023/10/06 2.7.8 Aide pour l'utilisation de LaTeX en lycee]
+\ProvidesPackage{ProfLycee}[2023/10/18 2.7.9 Aide pour l'utilisation de LaTeX en lycee]
+% 2.7.9 Ajout de fractales (Koch + Sierpenski)
% 2.7.8 Conversion hexa->bin présentée
% 2.7.7 Ajout d'une commande pour matérialiser des points de discontinuité
% 2.7.6 Amélioration de la gestion de la console piton
diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-recreat.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-recreat.tex
index a90d17e0dc..8578cf58a6 100644
--- a/macros/latex/contrib/proflycee/tex/proflycee-tools-recreat.tex
+++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-recreat.tex
@@ -243,4 +243,99 @@
\end{tikzpicture}
}
+%=====FRACTALES
+\usetikzlibrary{lindenmayersystems}
+
+\pgfdeclarelindenmayersystem{FloconKoch}{
+ \rule{F -> F-F++F-F}}
+\pgfdeclarelindenmayersystem{TriangleSierpinski}{
+ \rule{F -> G-F-G}
+ \rule{G -> F+G+F}}
+
+\defKV[tikzfract]{%
+ Epaisseur=\def\fracttikzthick{#1},%
+ Type=\def\fracttikztype{#1},%
+ Couleur=\def\fracttikzcolor{#1},%
+ LongueurCote=\def\fracttikzlg{#1},%
+ Etape=\def\fracttikzstep{#1},%
+ Remplissage=\def\fracttikzfill{#1},%
+ Depart=\def\fracttikzdepart{#1},%
+ Offset=\def\fracttikzoffset{#1}
+}
+
+\setKVdefault[tikzfract]{%
+ Epaisseur=0.6pt,%
+ Type=Koch,%
+ Couleur=black,%
+ LongueurCote=3,%
+ Etape=1,%
+ Remplir=false,%
+ Remplissage=lightgray,%
+ Depart={(0,0)},%
+ Contour=false,%
+ AlignV=false,%
+ Offset=2pt
+}
+
+\NewDocumentCommand\FractaleTikz{ s O{} D<>{} }{%
+ \restoreKV[tikzfract]%
+ \setKV[tikzfract]{#2}%
+ \def\fracttikzlgstep{\fpeval{(\fracttikzlg)/(3^\fracttikzstep)}}%
+ \IfStrEq{\fracttikztype}{Sierp}%
+ {%
+ \def\fracttikzlgstep{\fpeval{(\fracttikzlg)/(128)}}%
+ }{}%
+ \IfBooleanF{#1}{\begin{tikzpicture}[#3]}
+ \ifboolKV[tikzfract]{Remplir}%
+ {%
+ \IfStrEq{\fracttikztype}{Koch}%
+ {%
+ \ifboolKV[tikzfract]{AlignV}%
+ {%
+ \node at ($(1/3*\fracttikzlg,0)+(-60:1/3*\fracttikzlg)$) {} ;
+ }{}%
+ \draw[line width =\fracttikzthick,shift=\fracttikzdepart,draw=\fracttikzcolor,fill=\fracttikzfill,l-system={FloconKoch,step=\fracttikzlgstep cm,angle=60,axiom=F++F++F,order=\fracttikzstep}] lindenmayer system -- cycle;
+ }{}%
+ \IfStrEq{\fracttikztype}{Sierp}%
+ {%
+ \ifboolKV[tikzfract]{Contour}%
+ {%
+ \draw[shift=\fracttikzdepart,line width=\fracttikzthick,\fracttikzcolor] (0,0) -- (60:\fracttikzlg cm) -- (\fracttikzlg cm,0) -- cycle ;
+ \clip (0,0) -- (60:\fracttikzlg cm) -- (\fracttikzlg cm,0) -- cycle ;
+ }{}%
+ \draw[line width=\fracttikzthick,shift=\fracttikzdepart,draw=\fracttikzcolor,fill=\fracttikzfill,l-system={TriangleSierpinski,step=\fracttikzlgstep cm,angle=60,axiom=F,order=8}]
+ lindenmayer system -- cycle;
+ }{}%
+ }%
+ {%
+ \IfStrEq{\fracttikztype}{Koch}%
+ {%
+ \ifboolKV[tikzfract]{AlignV}%
+ {%
+ \node at ($(1/3*\fracttikzlg,0)+(-60:1/3*\fracttikzlg)$) {} ;
+ }{}%
+ \draw [line width=\fracttikzthick,shift=\fracttikzdepart,\fracttikzcolor,l-system={FloconKoch,step=\fracttikzlgstep cm,angle=60,axiom=F++F++F,order=\fracttikzstep}] lindenmayer system -- cycle;
+ }{}%
+ \IfStrEq{\fracttikztype}{Sierp}%
+ {%
+ \ifboolKV[tikzfract]{Contour}%
+ {%
+ \draw[shift=\fracttikzdepart,line width=\fracttikzthick,\fracttikzcolor] (0,0) -- (60:\fracttikzlg cm) -- (\fracttikzlg cm,0) -- cycle ;
+ \clip (0,0) -- (60:\fracttikzlg cm) -- (\fracttikzlg cm,0) -- cycle ;
+ }{}%
+ \draw[line width=\fracttikzthick,shift=\fracttikzdepart,\fracttikzcolor,l-system={TriangleSierpinski,step=\fracttikzlgstep cm,angle=60,axiom=F,order=8}]
+ lindenmayer system -- cycle;
+ }{}%
+ }%
+ \IfBooleanF{#1}{\end{tikzpicture}}%
+}
+
+\NewDocumentCommand\EtapesFloconKoch{ O{} D<>{} m }{%
+ \restoreKV[tikzfract]%
+ \setKV[tikzfract]{#1}%
+ \foreach \i in {#3} {%
+ \FractaleTikz[AlignV,#1,Etape=\i]<#2>\hspace{\fracttikzoffset}%
+ }
+}
+
\endinput \ No newline at end of file