2009-10-19 8 views
15

Sto provando a disegnare una linea orizzontale attraverso il mio diagramma. La coordinata Y della linea deve essere a metà strada tra i punti aeb (a è sotto b). I punti terminali sinistro e destro della linea si trovano sul riquadro di delimitazione del tikzpicture. Ecco come sto facendo adesso, utilizzando l'operatore di intersezione:Come ottenere un componente di una coordinata tikz/PGF?

\coordinate (h0) at ($(a.north)!0.5!(b.south)$); 
\draw (h0 -| current bounding box.west) -- (h0 -| current bounding box.east);

Questo mi sembra piuttosto rotonda. Quello che preferisco fare è ottenere la coordinata Y di (h0) e le coordinate X dei lati est e ovest del riquadro di delimitazione, e comporre le coordinate da solo. Mi piacerebbe fare questo, ma non è supportata la sintassi:

\coordinate (h0) at ($(a.north)!0.5!(b.south)$); 
\draw (current bounding box.west.x,h0.y) -- (current bounding box.east.x,h0.y);

C'è un modo per fare riferimento a singoli componenti di coordinate che mi manca?

risposta

15

È possibile ottenere i componenti all'interno di un'operazione let. Cercarlo nel manuale PGF per le opere, ma a memoria:

\draw 
    let 
    \p1=($(a.north)!0.5!(b.south)$), 
    \p2=(current bounding box.west), 
    \p3=(current bounding box.east) 
    in 
    (\x2,\y1) -- (\x3, \y1); 

Che sarà probabilmente bisogno di debug ... EDIT: e ora è stato grazie al l'interrogante.

+0

Grazie! Debug: La virgola che termina la riga '\ p3' deve essere cancellata,' a.north' ha bisogno di una chiusura ')' e 'b.south' ha bisogno di un'apertura '('. Una volta fatto, funziona perfettamente. – uckelman

5

alternativa, utilizzare

\pgfextractx{<dimension>}{<point>} 
\pgfextracty{<dimension>}{<point>} 

Questi sono i comandi crudo PGF, quindi potrebbe essere meno conveniente usarli.

+0

hah ! Grazie mille ... ho cercato questo per le ultime 2 ore ... – leemes

+2

Ma '' ha davvero bisogno di essere un pgfpoint di livello inferiore. Per farlo funzionare con i punti definiti usando '\ coordinate a .. .', devi dire '\ pgfpointanchor {coordinate} {centro}', poiché '\ coordinate (coordinate) in (1,2);' definisce un nodo di coordinate di forma (con un ancher chiamato centro) e \ pgfpointanchor restituisce il punto basso di pgf per questa ancora. – leemes

Problemi correlati