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óndex1
,y1
yx2
,y2
son coordenadas de rectángulo. un ejemplo de comparación de dos rectángulos: el rectángulo rojo tiene ancho4cm + pgflinewidth = 4.1cm
, y el ancho del amarillo (que podemos ver sus bordes, se dibuja semitransparente) es exactamente4cm
.
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
- circulo:
draw[very thick] (0,0) circle (
dónde-0.5pgflinewidth);
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ámetro2cm + pgflinewidth = 4.1cm
, el diámetro del círculo amarillo es exactamente4cm
.
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
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
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
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
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
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.