2010-12-04 3 views
4

J'essaye de reconstruire le signe euro dans TikZ. Mon guide de base est http://upload.wikimedia.org/wikipedia/commons/5/57/Euro_Construction.svgCréation du signe EUR avec pgf/tikz

Le problème que j'ai rencontré est que je peux calculer toutes les intersections jusqu'à présent, mais je suis incapable de donner des instructions tikz pour dessiner l'arc de par exemple A à K. Alors que je pouvais dessiner cet arc en utilisant l'écrêtage, autant que je comprenne que cela ne donnerait pas un chemin connecté. J'essaie d'éviter de calculer tous les angles à la main.

Pour le support SVG il y a \ pgfpatharcto, bien que cela semble être un peu exagéré, il peut faire le travail, ce qui me conduit à la question suivante: comment puis-je \ pgfpoints de nommé coordonnées par exemple (A) pour les utiliser dans le \ pgfpatharcto? Encore mieux: comment pourrais-je utiliser les coordonnées nommées dans les données de chemin svg? Cela réduirait le problème à écrire \ dessiner ... (B) - (A) svg "a 6 6 0 0 0 (K)" - (O) ...;

Ce que j'ai déjà est ceci:

Alt text http://img.skitch.com/20101204-ef3a3xwh2reqis67phqenmuxa2.png
téléversé avec Skitch

utilisant:

\begin{tikzpicture} 
\draw[step=5mm, gray, very thin] (-7.5,-7.5) grid (7.5,7.5); % grid 

% inner and outer circle to be used for the intersections 
\path[name path=outer] (0,0) circle[radius=6]; 
\path[name path=inner] (0,0) circle[radius=5]; 

% upper, semi upper, semi lower and lower horizontal lines. 
\path[name path=U] (-7.5,1.5) -- (4,1.5); 
\path[name path=u] (-7.5,0.5) -- (4,0.5); 
\path[name path=l] (-7.5,-0.5) -- (4,-0.5); 
\path[name path=L] (-7.5,-1.5) -- (4,-1.5); 

% the upwards slope and the vertical line at +-40 deg at 5 units. 
\path[name path=slope] ($(0,-6)!0.25!(40:5)$) -- ($(0,-6)!1.25!(40:5)$); 
\path[name path=fourty] ($(40:5)!0.5!(-40:5)$) -- ($(40:5)!1.25!(-40:5)$); 

% naming all the intersections. 
\path[name intersections={of=outer and slope, by={A}}]; 
\path[name intersections={of=inner and slope, by={B}}]; 

\path[name intersections={of=U and slope, by={C}}]; 
\path[name intersections={of=u and slope, by={D}}]; 
\path[name intersections={of=l and slope, by={E}}]; 
\path[name intersections={of=L and slope, by={F}}]; 

\path[name intersections={of=U and inner, by={G}}]; 
\path[name intersections={of=u and inner, by={H}}]; 
\path[name intersections={of=l and inner, by={I}}]; 
\path[name intersections={of=L and inner, by={J}}]; 

\path[name intersections={of=U and outer, by={K}}]; 
\path[name intersections={of=u and outer, by={L}}]; 
\path[name intersections={of=l and outer, by={M}}]; 
\path[name intersections={of=L and outer, by={N}}]; 

\coordinate (O) at ($(-7.5,0.5)+(C)-(D)$); 
\coordinate (P) at (-7.5,0.5); 
\coordinate (Q) at ($(-7.5,-1.5)+(E)-(F)$); 
\coordinate (R) at (-7.5,-1.5); 

\path[name intersections={of=fourty and inner, by={S}}]; 
\path[name intersections={of=fourty and outer, by={T}}]; 

% drawing the intersections 
\foreach \p in {A,...,T} \fill[red] (\p) circle (2pt) node[above left,black] {\footnotesize\p}; 

% constructing the path 
\draw (A) -- (B) (G) -- (C) -- (D) -- (H) (I) -- (E) -- (F) -- (J) (S) -- (T) (N) -- (R) -- (Q) -- (M) (L) -- (P) -- (O) -- (K); 

% missing segments 
\draw[gray,dashed] circle[radius=5] circle[radius=6]; 

\end{tikzpicture} 

MISE À JOUR (avec l'aide du FGP malin g liste nous sommes arrivés à la solution suivante)

\draw[thick,fill] let \p1=(A), \p2=(K), \p3=(L), \p4=(M), \p5=(N), \p6=(T), 
       \p7=(S), \p8=(J), \p9=(I), \p{10}=(H), \p{11}=(G), \p{12}=(B), 
       \n{aA}={atan2(\x1,\y1)}, \n{aK}={atan2(\x2,\y2)}, 
       \n{aL}={atan2(\x3,\y3)}, \n{aM}={360+atan2(\x4,\y4)}, 
       \n{aN}={360+atan2(\x5,\y5)}, \n{aT}={360+atan2(\x6,\y6)}, 
       \n{aS}={360+atan2(\x7,\y7)}, \n{aJ}={360+atan2(\x8,\y8)}, 
       \n{aI}={360+atan2(\x9,\y9)}, \n{aH}={atan2(\x{10},\y{10})}, 
       \n{aG}={atan2(\x{11},\y{11})}, \n{aB}={atan2(\x{12},\y{12})} 
       in (A) arc (\n{aA}:\n{aK}:6) -- (O) -- (P) 
       -- (L) arc (\n{aL}:\n{aM}:6) -- (Q) -- (R) 
       -- (N) arc (\n{aN}:\n{aT}:6) 
       -- (S) arc (\n{aS}:\n{aJ}:5) -- (F) -- (E) 
       -- (I) arc (\n{aI}:\n{aH}:5) -- (D) -- (C) 
       -- (G) arc (\n{aG}:\n{aB}:5) -- cycle; 

Cela permet TikZ calculer les angles des points et de celui-ci, il est un simple appel à l'arc. La partie la plus difficile pour moi était l'utilisation du moteur mathématique. La documentation était trop écrasante et j'ai raté la partie où de nouvelles valeurs sont assignées au moteur mathématique en utilisant les accolades.

+1

BTW - Bien que cette question soit sur le sujet ici, vous trouverez une plus grande foule d'utilisateurs de latex à tex.stackexchange.com. Il n'y a pas de chemin de migration, donc vous devrez rediffuser ... – dmckee

Répondre

1

Permettre que je ne l'ai jamais attiré 1 (compter, un) figure dans TikZ, ce qui ne va pas avec

\draw (A) arc (Aangle:Kangle:outerRadius) 

outerRadius semble être 6 et Aangle semble être de 40 degrés, et je ne voyez pas instantanément Kangles dans les données fournies (mais la valeur est entièrement contrainte ... ressemble à arcsin (1.5/6)).

+0

Oui, c'est la bonne approche. Où j'étais coincé était le calcul de l'angle, voir ci-dessus. – angerman