La guía paso a paso o código que verás en este post es la solución más eficiente y válida que encontramos a esta inquietud o dilema.
tri = AASTriangle[Pi/2, Pi/4, 1];
srd = SignedRegionDistance[tri];
Nosotros podemos usar SignedRegionDistance
con ContourPlot
o con RegionPlot
(esto sería muy lento):
ContourPlot[srd[x, y], x, -.2, 1, y, -.2, 1,
Contours -> .1, .02,
ContourShading -> None, Yellow,
ImagePadding -> 10, Frame -> False, ImageSize -> Large]
RegionPlot[.02 <= srd[x, y] <= .1, x, -.2, 1, y, -.2, 1,
PlotStyle -> Yellow, PlotPoints -> 80, ImagePadding -> 10,
Frame -> False, ImageSize -> Large]
También podemos usar la función explode
de esta respuesta para cambiar la escala de las líneas de contorno conservando las esquinas redondeadas:
ClearAll[explode, bsf]
explode[f_] := f[#] + #2 Cross @ Normalize[f'[#]] &;
cp0 = ContourPlot[srd[x, y], x, -.1, .8, y, -.1, .8,
Contours -> .05, ContourShading -> None];
mc = [email protected][cp0];
bsf = BSplineFunction[mc, SplineClosed -> True];
Graphics[Thick, BSplineCurve[mc, SplineClosed -> True],
Blue, Line[explode[bsf][#, .1] & /@ Subdivide[200]]]
Graphics[Black, Thick, BSplineCurve[mc, SplineClosed -> True],
Line[explode[bsf][#, .1] & /@ Subdivide[200]],
Red, FilledCurve[BSplineCurve[mc, SplineClosed -> True],
Line[explode[bsf][#, .1] & /@ Subdivide[200]]]]
Actualizado
pts = 0, 0, 2, 0, 0, 4;
in = .7, 1;
smallpts = Mean[#, in] & /@ pts;
Graphics[Orange, EdgeForm[JoinForm["Round"], Thickness[0.035]],
FilledCurve[Line[pts], Line[smallpts]]]
Original
pts = 0, 0, 2, 0, 0, 4;
in = .7, 1;
smallpts = Mean[#, in] & /@ pts;
Graphics[Red, Point[in], Green, Polygon[pts -> smallpts]]
O
pts = 0, 0, 2, 0, 0, 4;
in = .7, 1;
smallpts =
Mean[#, in] & /@ pts;
Graphics[Orange,
FilledCurve[Line[pts], Line[smallpts]]]
Para un aspecto de boceto dibujado a mano:
Graphics[AbsoluteThickness[30], ColorData[97]@1, CapForm["Round"],
JoinForm["Round"], Line[0, 0, 1/Sqrt[2], 0, 0, 1/Sqrt[2], 0, 0],
ImagePadding -> 30] // ImageEffect[#, "Jitter", 5] &
Sección de Reseñas y Valoraciones
Nos puedes añadir valor a nuestra información colaborando tu experiencia en los informes.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)