Generic Way to Create Concentric Shape

What is the best way to make concentric shapes? Basic shapes are easy to make concentric shapes, but when there are curves involved, it’s not that easy. Is there a way to make an outer shape, copy it to an inner shape, scale to a small shape, then overlay the inner shape on top (centered) of the outer shape?


I’m not sure that will work. For example:

    myDiagram.nodeTemplate =
      $(go.Node, "Auto",
        { locationSpot: go.Spot.Center, location: new go.Point(0, 0) },
        $(go.Shape, "Club",
          { fill: "white" },
          new go.Binding("scale"))

    var arr = [];
    for (i = 10; i > 0; i--) arr.push({ scale: i/10 });
    myDiagram.model = new go.GraphLinksModel(arr);

results in:

As you can see, scaled curves don’t nest in the way I think you are asking for.

I was able to make a concentric arrow shape using some high school math. If I can visualize the bezier curves, I can perform the same transformations similar to the math I used when making the concentric arrow. I’ll post later if I’m successful.