1. Filosofía: Coordenadas Nombradas

La diferencia entre código amateur y profesional está en cómo manejas las coordenadas.

❌ Estilo Amateur

% Coordenadas hardcodeadas
\draw[thick] (0,0) -- (3,0) -- (1.5,2.6) -- cycle;
\node[below left] at (0,0) {$A$};
\node[below right] at (3,0) {$B$};
\node[above] at (1.5,2.6) {$C$};

✅ Estilo Profesional

% Primero definir, luego dibujar
\coordinate (A) at (0,0);
\coordinate (B) at (3,0);
\coordinate (C) at (1.5,{1.5*sqrt(3)});

\draw[thick] (A) -- (B) -- (C) -- cycle;

\node[below left] at (A) {$A$};
\node[below right] at (B) {$B$};
\node[above] at (C) {$C$};

Ventajas

Ventaja Descripción
Reutilización Usa (A) en múltiples lugares
Cálculos Puntos medios, intersecciones, proyecciones
Mantenibilidad Cambiar una coordenada actualiza todo
Legibilidad El código se auto-documenta

2. Operaciones con Coordenadas

Requiere la librería calc

Sumar un vector

% Sintaxis: ($(coordenada) + (dx, dy)$)
\node at ($(A) + (0.3, 0.2)$) {texto};

% Útil para etiquetas desplazadas
\coordinate (A) at (2,3);
\node at ($(A) + (0.2, 0.1)$) {\footnotesize $A$};

Punto intermedio (interpolación)

% Sintaxis: ($(A)!factor!(B)$) donde factor ∈ [0,1]
\coordinate (M) at ($(A)!0.5!(B)$);    % Punto medio
\coordinate (P) at ($(A)!0.333!(B)$);  % Un tercio desde A
\coordinate (Q) at ($(A)!0.25!(B)$);   % Un cuarto desde A

% Factor > 1 extiende más allá de B
\coordinate (E) at ($(A)!1.5!(B)$);    % 50% más allá de B

Intersección de rectas

% Sintaxis: (intersection of A--B and C--D)
\coordinate (P) at (intersection of A--B and C--D);

% Ejemplo: Encontrar altura
\coordinate (H) at (intersection of C--D and A--B);

Proyección perpendicular

% Sintaxis: ($(A)!(P)!(B)$) proyecta P sobre recta AB
\coordinate (D) at ($(A)!(C)!(B)$);  % Pie de altura desde C

% Ejemplo completo
\coordinate (A) at (0,0);
\coordinate (B) at (4,0);
\coordinate (C) at (1,3);
\coordinate (H) at ($(A)!(C)!(B)$);  % H es pie de altura

\draw[thick] (A) -- (B) -- (C) -- cycle;
\draw[thick] (C) -- (H);  % Altura

3. Scopes y Transformaciones

Scope básico

\begin{scope}[shift={(5,0)}]
    % Todo aquí se desplaza 5 unidades
    \draw (0,0) -- (2,2);
\end{scope}

Figuras múltiples (alternativas PSU)

% Definir figura base una vez
\newcommand{\triangulo}{
    \draw[thick] (0,0) -- (2,0) -- (1,1.732) -- cycle;
}

% Figura I
\begin{scope}[shift={(0,0)}]
    \triangulo
    \node[below] at (1,-0.3) {\footnotesize I)};
\end{scope}

% Figura II (rotada)
\begin{scope}[shift={(4,0)}, rotate=180]
    \triangulo
    \node[below] at (1,-0.3) {\footnotesize II)};
\end{scope}

Transformaciones disponibles

Opción Efecto
shift={(x,y)} Traslación
rotate=45 Rotación (grados, antihorario)
rotate around={45:(1,1)} Rotación respecto a un punto
scale=0.5 Escala uniforme
xscale=2, yscale=0.5 Escala diferenciada

Clip: Recortar región

\begin{scope}
    \clip (0,0) rectangle (3,3);
    \draw[thick] (0,0) circle (5);  % Solo visible parte dentro del rectángulo
\end{scope}

4. Arcos y Marcas de Ángulos

Arco en un vértice

\coordinate (A) at (2,1);

% Desplazar desde A, luego dibujar arco
\draw ($(A) + (0.4,0)$) arc (0:45:0.4);

% O usando ++
\draw (A) ++(0.4,0) arc (0:45:0.4);

Arco con etiqueta centrada

\coordinate (V) at (0,0);  % Vértice

% Dibujar arco de 0° a 60°
\draw (V) ++(0.5,0) arc (0:60:0.5);

% Etiqueta en punto medio del arco (30°)
\node at ($(V) + (30:0.7)$) {\footnotesize $\alpha$};

Ángulo recto (cuadradito)

% Cuadradito alineado con ejes
\draw (H) ++(0,0.2) -- ++(0.2,0) -- ++(0,-0.2);

Marcar ángulos iguales

% Un arco
\draw (A) ++(0.4,0) arc (0:40:0.4);

% Dos arcos (ángulos iguales)
\draw (A) ++(0.35,0) arc (0:40:0.35);
\draw (A) ++(0.45,0) arc (0:40:0.45);

5. Gráficos de Funciones

Funciones comunes

% Parábola
\draw[thick, domain=-2:2, samples=50] plot (\x, {\x*\x});

% Raíz cuadrada
\draw[thick, domain=0:4, samples=50] plot (\x, {sqrt(\x)});

% Hipérbola (proporcionalidad inversa)
\draw[thick, domain=0.5:4, samples=50] plot (\x, {2/\x});

% Exponencial
\draw[thick, domain=-2:2, samples=50] plot (\x, {exp(\x)});

% Logaritmo
\draw[thick, domain=0.1:4, samples=50] plot (\x, {ln(\x)});

Función escalón

% Función escalón (cobro por minutos)
\draw[thick] (0,1) -- (1,1);
\draw[thick] (1,2) -- (2,2);
\draw[thick] (2,3) -- (3,3);

% Con círculos abiertos/cerrados
\fill (1,1) circle (2pt);      % Cerrado (incluido)
\draw (1,2) circle (2pt);      % Abierto (no incluido)

Ejes coordenados con marcas

\draw[->] (-1,0) -- (5,0) node[right] {\footnotesize $x$};
\draw[->] (0,-1) -- (0,5) node[above] {\footnotesize $y$};

% Marcas en los ejes
\foreach \x in {1,2,3,4} {
    \draw (\x,0.1) -- (\x,-0.1) node[below] {\footnotesize \x};
}

6. Figuras 3D

Sistema isométrico

\begin{tikzpicture}[scale=1, x={(-0.5cm,-0.5cm)}, y={(1cm,0cm)}, z={(0cm,1cm)}]
    % Ejes
    \draw[->] (0,0,0) -- (2,0,0) node[below] {\footnotesize $x$};
    \draw[->] (0,0,0) -- (0,2,0) node[right] {\footnotesize $y$};
    \draw[->] (0,0,0) -- (0,0,2) node[above] {\footnotesize $z$};
    
    % Vértices del cubo
    \coordinate (A) at (0,0,0);
    \coordinate (B) at (0,1,0);
    % ... más vértices
    
    % Aristas visibles
    \draw[thick] (A) -- (B) -- (C) -- (D) -- cycle;
    
    % Aristas ocultas
    \draw[dashed] (A) -- (F) -- (E);
\end{tikzpicture}

7. Circunferencias

Puntos con coordenadas polares

\def\r{2}  % Radio
\draw[thick] (0,0) circle (\r);

% Puntos en la circunferencia (ángulo:radio)
\coordinate (A) at (0:\r);    % 0° (derecha)
\coordinate (B) at (90:\r);   % 90° (arriba)
\coordinate (C) at (180:\r);  % 180° (izquierda)
\coordinate (P) at (45:\r);   % 45°

8. Patrones y Rellenos

% Achurado diagonal
\fill[pattern=north east lines] (0,0) rectangle (2,2);
\fill[pattern=north west lines] (0,0) -- (2,0) -- (1,2) -- cycle;

% Relleno con transparencia
\fill[gray, opacity=0.3] (0,0) rectangle (2,2);

9. Histogramas

\foreach \x/\h in {1/3, 2/5, 3/8, 4/4, 5/2} {
    \fill[pattern=north east lines] ({\x-0.4},0) rectangle ({\x+0.4},\h);
    \draw[thick] ({\x-0.4},0) rectangle ({\x+0.4},\h);
}

10. Decoraciones

Llaves (braces) para medidas

\usetikzlibrary{decorations.pathreplacing}

% Llave abajo
\draw[decorate, decoration={brace, amplitude=8pt, mirror}] 
    (0,0) -- (3,0) node[midway, below=8pt] {$3\,cm$};

% Llave arriba
\draw[decorate, decoration={brace, amplitude=8pt}] 
    (0,0) -- (3,0) node[midway, above=8pt] {$3\,cm$};

Flechas

\draw[->] (0,0) -- (2,0);     % Flecha al final
\draw[<-] (0,0) -- (2,0);     % Flecha al inicio
\draw[<->] (0,0) -- (2,0);    % Ambos extremos
\draw[-{Latex}] (0,0) -- (2,0); % Tipo Latex (arrows.meta)

11. Opciones de Estilo

Grosores

OpciónResultado
ultra thinMuy delgada
thinDelgada
thickGruesa (uso común)
very thickMuy gruesa

Tipos de línea

OpciónResultado
dashedGuiones largos
dottedPuntos
dash dotPunto y raya

12. Baseline (Alternativas en Columnas)

\begin{tikzpicture}[baseline=(current bounding box.north), scale=0.5]
    % La figura se alinea por su borde superior
\end{tikzpicture}

% Otras opciones:
[baseline=(current bounding box.center)]  % Centro
[baseline=(current bounding box.south)]   % Abajo
[baseline=0pt]                             % En el origen

13. Librerías Necesarias

\usepackage{tikz}
\usetikzlibrary{calc}                      % Operaciones coordenadas
\usetikzlibrary{patterns}                  % Patrones de relleno
\usetikzlibrary{decorations.pathreplacing} % Llaves, braces
\usetikzlibrary{arrows.meta}               % Flechas mejoradas
\usetikzlibrary{intersections}             % Intersecciones
\usetikzlibrary{positioning}               % Posicionamiento relativo

14. Plantillas de Figuras

Triángulo equilátero

\coordinate (A) at (0,0);
\coordinate (B) at (3,0);  % lado = 3
\coordinate (C) at (1.5,{1.5*sqrt(3)});  % altura = lado * sqrt(3)/2

\draw[thick] (A) -- (B) -- (C) -- cycle;

Hexágono regular

% Coordenadas polares, 60° entre vértices
\foreach \i in {0,1,2,3,4,5} {
    \coordinate (V\i) at ({60*\i}:2);
}
\draw[thick] (V0) -- (V1) -- (V2) -- (V3) -- (V4) -- (V5) -- cycle;

Circunferencia con puntos

\def\r{2}
\draw[thick] (0,0) circle (\r);

\coordinate (A) at (0:\r);    % Derecha
\coordinate (B) at (90:\r);   % Arriba
\coordinate (C) at (180:\r);  % Izquierda
\coordinate (D) at (270:\r);  % Abajo

15. Foreach: Iteraciones

Múltiples variables

\foreach \x/\y/\name in {0/0/A, 3/0/B, 1.5/2.6/C} {
    \coordinate (\name) at (\x,\y);
    \node at (\x,\y) [below] {$\name$};
}

Polígonos regulares

\def\n{5}  % Número de lados
\def\r{2}  % Radio
\foreach \i in {1,...,\n} {
    \coordinate (V\i) at ({90 + 360/\n*(\i-1)}:\r);
}
\draw[thick] (V1) \foreach \i in {2,...,\n} { -- (V\i) } -- cycle;

16. Let: Cálculos en Tiempo de Dibujo

Extraer coordenadas

\coordinate (P) at (3,4);

\draw let \p1 = (P) in 
    (0,0) -- (\x1,0) -- (\x1,\y1) -- cycle;
% \x1 = 3, \y1 = 4

Calcular distancia

\coordinate (A) at (0,0);
\coordinate (B) at (3,4);

\draw let 
    \p1 = ($(B) - (A)$),
    \n1 = {veclen(\x1,\y1)}  % Distancia = 5
in (A) -- (B) node[midway, above] {\pgfmathprintnumber{\n1}};

17. Estilos Personalizados

\begin{tikzpicture}[
    eje/.style={->, thick},
    funcion/.style={thick, blue, domain=-3:3, samples=100},
    punto/.style={fill=black, circle, inner sep=1.5pt},
    etiqueta/.style={font=\footnotesize}
]
    \draw[eje] (-4,0) -- (4,0) node[right] {$x$};
    \draw[funcion] plot (\x, {0.5*\x*\x});
    \node[punto] at (2,2) {};
\end{tikzpicture}

18. Nodos Avanzados

Posicionamiento relativo

\node (A) at (0,0) {Inicio};
\node (B) [right=2cm of A] {Derecha};
\node (C) [below=1cm of A] {Abajo};
\node (D) [above right=1cm and 2cm of A] {Diagonal};

Anclas de nodos

\node (caja) [draw, minimum width=2cm] {Texto};

\draw (caja.north) -- ++(0,1);
\draw (caja.south east) -- ++(1,-1);
\draw (caja.west) -- ++(-1,0);

19. Debugging y Desarrollo

Grilla de referencia

% Agregar temporalmente para alinear
\draw[help lines, gray!30] (-1,-1) grid (5,5);

Marcar todos los puntos

\foreach \name in {A,B,C,D,E} {
    \fill[red] (\name) circle (2pt);
    \node[red, font=\tiny, above] at (\name) {\name};
}

Bounding box visible

\draw[red, dashed] (current bounding box.south west) 
    rectangle (current bounding box.north east);

20. Tips y Trucos

Evitar círculos en vértices

❌ Mal

\node[circle, fill] at (A) {};

✅ Bien

\node[below left] at (A) {$A$};

Escala proporcional

[scale=0.8]              % Escala uniforme
[xscale=1.2, yscale=0.8] % Escala diferenciada