Saltar al contenido

Dibuja círculos TikZ con un radio exterior específico

Hola usuario de nuestra web, descubrimos la solución a lo que necesitas, desplázate y la hallarás más abajo.

Solución:

en tikz cualquier coordenada de cualquier comando de ruta se determina para las líneas infinitamente delgadas. las líneas reales se encuentran sobre ellos para que sus centros coincidan.

el ancho de línea de las líneas reales es accesible con longitud pgflinewidth. sabiéndolo, es simple corregir el tamaño de algunas formas elementales como son rectángulos, cuadrados y círculos considerando el ancho de las líneas. por ejemplo:

  • rectángulo: draw[very thick] (x1+0.5pgflinewidth,y1+0.5pgflinewidth) rectangle (x2-0.5pgflinewidth,y2+0.5pgflinewidth); dónde x1, y1 y x2, y2 son coordenadas de rectángulo. un ejemplo de comparación de dos rectángulos: el rectángulo rojo tiene ancho 4cm + pgflinewidth = 4.1cm, y el ancho del amarillo (que podemos ver sus bordes, se dibuja semitransparente) es exactamente 4cm.

documentclass[tikz, margin=3mm]standalone

begindocument
begintikzpicture[line width=2mm]
    draw[red]   (0,0) rectangle (4,4);
    draw[yellow,semitransparent]  (0.5pgflinewidth,0.5pgflinewidth) rectangle (4cm-0.5pgflinewidth,4cm-0.5pgflinewidth);
%
    draw [thin,gray] (-1,-1) grid (5,5);
endtikzpicture
enddocument

ingrese la descripción de la imagen aquí

  • circulo: draw[very thick] (0,0) circle (-0.5pgflinewidth); dónde tamaño del radio del círculo. un ejemplo de comparación de dos círculos se realiza de manera similar a la anterior para los rectángulos: el círculo rojo tiene diámetro 2cm + pgflinewidth = 4.1cm, el diámetro del círculo amarillo es exactamente 4cm.

documentclass[tikz, margin=3mm]standalone

begindocument
begintikzpicture[line width=2mm]
    draw[red]   (0,0) circle (2cm);
    draw[yellow,semitransparent]  (0,0) circle (2cm-0.5pgflinewidth);
%
    draw [thin,gray] (-3,-3) grid (3,3);
endtikzpicture
enddocument

ingrese la descripción de la imagen aquí

considerando lo anterior, los círculos de la pregunta con el borde de la línea exterior exactamente como se indica con el radio de los círculos son los siguientes:

documentclassstandalone
usepackagetikz
begindocument
begintikzpicture[x=1cm, y=1cm, line width=2mm]
    path [draw=blue,fill=yellow] (0,0) circle (5cm-0.5pgflinewidth);
    path [draw=black,fill=red] (0,0) circle (4cm-0.5pgflinewidth);
    path [draw=black,fill=green,line width=3mm] (0,0) circle (3cm-0.5pgflinewidth);
    draw [thin,gray] (-6,-6) grid (6,6);
endtikzpicture
enddocument

ingrese la descripción de la imagen aquí

En PSTricks, este problema se puede resolver fácilmente solo configurando dimen para o (externo) que es el predeterminado. Sin embargo, un paquete llamado pst-eucl conjuntos dimen para m (medio) por defecto. Una opcion mas es i para el interior.

Deliberadamente establecí el trazo en dashed para que también podamos ver

  • el trazo se realiza después de completar los trazados sin recorte,
  • el relleno se realiza después de acariciar en trazados de recorte,
  • la mitad del trazo se utiliza como límite de relleno o recorte.
documentclass[border=1cm,pstricks]standalone
psset

    fillstyle=solid,
    fillcolor=yellow,
    linewidth=1,
    linecolor=cyan,
    linestyle=dashed,


begindocument
beginpspicture[showgrid=t](-3,-3)(3,3)   
    pscircle2
    rput(0,0)outer
endpspicture
beginpspicture[showgrid=t](-3,-3)(3,3)   
    pscircle[dimen=m]2
    rput(0,0)middle
endpspicture
beginpspicture[showgrid=t](-3,-3)(3,3)   
    pscircle[dimen=i]2
    rput(0,0)inner
endpspicture
enddocument

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Nota

Ciertos cerrados (incluidos los creados a través de pscustom) y las curvas abiertas tienen diferentes valores predeterminados dimen que se puede cambiar o no. Consulte el código fuente para obtener más detalles.

Resultado solicitado

documentclass[border=1cm,pstricks]standalone
begindocument
beginpspicture[showgrid=t,fillstyle=solid,linewidth=2mm](-5,-5)(5,5) 
    pscircle[fillcolor=yellow]5
    pscircle[fillcolor=red]4
    pscircle[fillcolor=green]3
endpspicture
enddocument

ingrese la descripción de la imagen aquí

Esta es una vieja pregunta, pero de todos modos, aquí hay un método de automatización que usa decorations.

documentclassstandalone
usepackagetikz
usetikzlibrarydecorations.pathmorphing
begindocument
  begintikzpicture[line width=2mm]
    beginscope[every path/.style=decoration=curveto,raise=.5pgflinewidth,decorate]
      path [draw=black,fill=yellow] (0,0) circle (5cm);
      path [draw=black,fill=red] (0,0) circle (4cm);
      path [draw=black,fill=green,line width=3mm] (0,0) circle (3cm);
    endscope
    draw [thin,gray] (-6,-6) grid (6,6);
  endtikzpicture
enddocument

ingrese la descripción de la imagen aquí

Nota : La desventaja es que curveto reemplace todas las curvas por numerosos segmentos pequeños, por lo que el círculo (que nunca es realmente un círculo) se convierte en un polígono enorme (con una huella de mayor tamaño).

Si posees alguna cuestión o disposición de avanzar nuestro artículo te invitamos escribir una referencia y con mucho gusto lo ojearemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *