[Tikz] Segments

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

[Tikz] Segments

Messagepar plaurain » Jeudi 30 Décembre 2010, 11:00

Dans la figure suivante, j'aimerais que les traits qui servent à indiquer que les segments sont de même longueurs soient bien orientés et pouvoir régler leur taille et leur épaisseur. Que faire?
Merci d'avance.

Code: Tout sélectionner
\documentclass[10pt]{article}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{patterns}
\begin{document}

\begin{tikzpicture}
\filldraw  (0,0) circle (1.5pt) node[left] {$A$};
\filldraw (3,2)  circle (1.5pt) node[above] {$B$};
\filldraw (4,0)  circle (1.5pt) node[below] {$C$};

\draw (2.5,1) node[below] {$P$};

\draw(0,0)-- (4,0);
\draw (3,2)--(4,0);
\draw (3,2)--(0,0);

\draw (2.5,1) -- (4,0);
\draw (2.5,1) -- node[midway] {$\Vert$} (3,2);
\draw (2.5,1) -- node[midway] {$\vert$} (0,0);

\draw[rotate=60] (0,0)--(3,2);
\draw[rotate=60] (3,2) --node[midway] {$\Vert$} (2.5,1);
\draw[rotate=60] (0,0) -- node[midway] {$-$}  (2.5,1);

\draw (-0.8,4) node[below] {$C'$};
\draw (0.8,2.2) node[below] {$P'$};

\draw (0.38,2.67) --  node[midway] {$\vert$} (2.5,1);
\end{tikzpicture}

\end{document}
Dernière édition par MB le Jeudi 30 Décembre 2010, 12:52, édité 2 fois.
Raison: Ajout de balises code.
plaurain
Utilisateur
 
Messages: 2
Inscription: Jeudi 30 Décembre 2010, 10:52
Statut actuel: Post-bac | Doctorat

Publicité

Re: [Tikz] Segments

Messagepar chellier » Jeudi 30 Décembre 2010, 14:22

En attendant qu'une réponse avec Tikz (que je ne connais pratiquement pas :oops: ) arrive, en voici une avec asymptote :

8e1871047f45751c0930696e8a3e56eb.png

Code: Tout sélectionner
import markers;
unitsize(1cm);
pair A=(0,0), B=(3,2), C=(4,0),P=(2.5,1);
pair P1=rotate(60)*P, C1=rotate(60)*B;

dot("$A$",A,W); dot("$B$",B,N); dot("$C$",C,S);
label("$P$",P,S); label("$P'$",P1,NE); label("$C'$",C1,W);

draw(A--B--C--cycle^^P--C^^A--C1);

draw(A--P,StickIntervalMarker(i=1,n=1,size=3mm,angle=0,p=linewidth(bp)));
draw(P--P1,StickIntervalMarker(i=1,n=1,size=3mm,angle=25,p=linewidth(bp)));
draw(P1--A,StickIntervalMarker(i=1,n=1,size=3mm,angle=-25,p=linewidth(bp)));
draw(B--P,StickIntervalMarker(i=1,n=2,angle=-25,p=blue));
draw(C1--P1,StickIntervalMarker(i=1,n=2,angle=25,p=blue));

Code: Tout sélectionner
\documentclass[10pt]{article}
\usepackage{asymptote}
\begin{document}

\begin{asy}
import markers;
unitsize(1cm);
pair A=(0,0), B=(3,2), C=(4,0),P=(2.5,1);
pair P1=rotate(60)*P, C1=rotate(60)*B;

dot("$A$",A,W); dot("$B$",B,N); dot("$C$",C,S);
label("$P$",P,S); label("$P'$",P1,NE); label("$C'$",C1,W);

draw(A--B--C--cycle^^P--C^^A--C1);

// Paramètres pouvant être modifiés :
//marker StickIntervalMarker(int i=2, int n=1, real size=0, real space=0,
//                           real angle=0, pair offset=0, bool rotated=true,
//                           pen p=currentpen, frame uniform=newframe,
//                           bool above=true)

draw(A--P,StickIntervalMarker(i=1,n=1,size=3mm,angle=0,p=linewidth(bp)));
draw(P--P1,StickIntervalMarker(i=1,n=1,size=3mm,angle=25,p=linewidth(bp)));
draw(P1--A,StickIntervalMarker(i=1,n=1,size=3mm,angle=-25,p=linewidth(bp)));
draw(B--P,StickIntervalMarker(i=1,n=2,angle=-25,p=blue));
draw(C1--P1,StickIntervalMarker(i=1,n=2,angle=25,p=blue));
\end{asy}

\end{document}


Christophe
chellier
Modérateur
 
Messages: 355
Inscription: Samedi 25 Juillet 2009, 11:25
Localisation: Le Creusot
Statut actuel: Actif et salarié | Enseignant

Re: [Tikz] Segments

Messagepar evariste_G » Jeudi 30 Décembre 2010, 17:27

Bonjour.
Une méthode pourrait être d'ajouter des options à "node" :

Code: Tout sélectionner
\draw[rotate=60] (3,2) --node[midway,rotate=...,scale=...] {$\Vert$} (2.5,1);


où :

* rotate est l'angle de rotation
* scale l'échelle

Mais il doit y avoir mieux ...
Mathématiques, LaTeX et Python : http://www.mathweb.fr
Cours particuliers de maths et de NSI : https://cours-particuliers-bordeaux.fr/
evariste_G
Téra-utilisateur
 
Messages: 1433
Inscription: Vendredi 19 Décembre 2008, 19:13
Localisation: Bordeaux
Statut actuel: Actif et salarié | Enseignant

Re: [Tikz] Segments

Messagepar plaurain » Jeudi 30 Décembre 2010, 17:33

Merci pour ta réponse qui marche bien. Mais en fait je me demandais s'il n'était pas possible de faire comme pour une décoration et que la marque s'oriente toute seule?
plaurain
Utilisateur
 
Messages: 2
Inscription: Jeudi 30 Décembre 2010, 10:52
Statut actuel: Post-bac | Doctorat

Re: [Tikz] Segments

Messagepar evariste_G » Jeudi 30 Décembre 2010, 18:12

En effet, c'est possible avec la librairie decorations.markings (voir page 268-269 de la doc officielle).

En gros :

Code: Tout sélectionner
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
...
\draw[decoration={markings,mark=at 1/2 with {\draw (-2pt,-2pt) -- (2pt,2pt); \draw (2pt,-2pt) -- (-2pt,2pt);}}] (0,0) -- (2,8);
Mathématiques, LaTeX et Python : http://www.mathweb.fr
Cours particuliers de maths et de NSI : https://cours-particuliers-bordeaux.fr/
evariste_G
Téra-utilisateur
 
Messages: 1433
Inscription: Vendredi 19 Décembre 2008, 19:13
Localisation: Bordeaux
Statut actuel: Actif et salarié | Enseignant

Re: [Tikz] Segments

Messagepar pg » Jeudi 30 Décembre 2010, 18:14

Voici une façon de faire. Il suffit de changer les définitions des styles memelongueur ou mmemelongueur pour changer la couleur, l'épaisseur du trait ou l'inclinaison.

memelongueur.png
memelongueur.png (6.77 Kio) Vu 1403 fois


Code: Tout sélectionner
\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{decorations.markings}

\begin{document}

\tikzstyle{memelongueur}=[decoration={markings,
  mark=at position .5 with {\draw (0pt,-4pt) -- (0pt,4pt);}},
  postaction={decorate}]
\tikzstyle{mmemelongueur}=[decoration={markings,
  mark=at position .5 with {\draw (-1pt,-4pt) -- (-1pt,4pt);
                            \draw (1pt,-4pt) -- (1pt,4pt);}},
  postaction={decorate}]

\begin{tikzpicture}
\filldraw (0,0) circle (1.5pt) node[left] {$A$};
\filldraw (3,2) circle (1.5pt) node[above] {$B$};
\filldraw (4,0) circle (1.5pt) node[below] {$C$};

\node[below] at (2.5,1) {$P$};

\draw (0,0)-- (4,0);
\draw (3,2)--(4,0);
\draw (3,2)--(0,0);

\draw (2.5,1) -- (4,0);
\draw[mmemelongueur] (2.5,1) -- (3,2);
\draw[memelongueur] (2.5,1) -- (0,0);

\draw[rotate=60] (0,0)--(3,2) node[left] {$C'$};
\draw[rotate=60,mmemelongueur] (3,2) -- (2.5,1) node[above right] {$P'$};
\draw[rotate=60,memelongueur] (0,0) -- (2.5,1);

\draw[memelongueur] (0.38,2.67) -- (2.5,1);
\end{tikzpicture}

\end{document}
pg
Modérateur
 
Messages: 2597
Inscription: Jeudi 14 Juin 2007, 23:31

Re: [Tikz] Segments

Messagepar Altermundus » Samedi 01 Janvier 2011, 23:57

Cela arrive en version finale dans quelques jours sur CTan
Code: Tout sélectionner
\documentclass[]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[upright]{fourier}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{tkz-euclide}
\usetkzobj{all}
\usepackage[frenchb]{babel}
\definecolor{fondpaille}{cmyk}{0,0,0.1,0}
\pagecolor{fondpaille}
\color{Maroon}   
\tkzSetUpColors[background=fondpaille,text=Maroon]   
\begin{document}

\begin{tikzpicture}
  \tkzDefPoint(0,0){A}
  \tkzDefPoint(3,2){B}
  \tkzDefPoint(4,0){C}
  \tkzDefPoint(2.5,1){P}
  \tkzDrawPolygon(A,B,C)
  \tkzDefEquilateral(A,P) \tkzGetPoint{P'}
  \tkzDefPointsBy[rotation=center A angle 60](P,B){P',C'}
  \tkzDrawPolygon(A,P,P')
  \tkzDrawPolySeg(P',C',A,P,B)
  \tkzDrawSegment(C,P)
  \tkzDrawPoints(A,B,C,C',P,P')
 
  \tkzMarkSegments[mark=s|,mark size=6pt,color=blue](A,P P,P' P',A)
  \tkzMarkSegments[mark=||,color=orange](B,P P',C')
   
   \tkzLabelPoints(A,C)
   \tkzLabelPoints[above right](P',C',B)
   \tkzLabelPoints[below](P)
\end{tikzpicture}

\end{document} 


On peut changer les marqueurs, il y a un peu de tout, par exemple pour les traits on a soit |, || et |||
ou s|, s|| et s||| les premiers sont perpendiculaires aux segments, les autres penchés (s=slanted) mais
on peut définir ces propres marqueurs

Alain Matthes
Fichiers joints
Capture d’écran 2011-01-01 à 23.53.44.png
Altermundus
Giga-utilisateur
 
Messages: 557
Inscription: Lundi 28 Mai 2007, 09:31
Localisation: Paris
Statut actuel: Actif et salarié | Enseignant


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 9 invités

cron