Gimp-Forum.net
Replicating a path - Printable Version

+- Gimp-Forum.net (https://www.gimp-forum.net)
+-- Forum: GIMP (https://www.gimp-forum.net/Forum-GIMP)
+--- Forum: Extending the GIMP (https://www.gimp-forum.net/Forum-Extending-the-GIMP)
+--- Thread: Replicating a path (/Thread-Replicating-a-path)

Pages: 1 2 3 4 5 6


Replicating a path - Ottia Tuota - 12-05-2021

Here is an experimental plugin. It is still at a preliminary stage and produces sometimes bad results. But I decided to publish it now since I think it may be useful as it is. And I am interested to hear any suggestions.

The plugin takes a path and replicates it along a circle:

[attachment=7181]

So far the plugin works well for straight-edge paths (with some limitations) but you can try it with curved paths too.

With the plugin you can easily make the circular figures (but now as paths) in the following old thread:

https://www.gimp-forum.net/Thread-How-to-make-a-circle-meander?

You can download the plugin from

http://kmarkku.arkku.net/Path_replicate_files/Gimp_master.html

Unzip the .zip file and place the one file it contains (replicate_path_along_circle.py) in your user's plug-ins folder. Then (re)start Gimp. Make a new image, and there a Pattern path like above. In Gimp's menu, go to the Paths dock, right-click the pattern path, and follow the links

Tools > Replicate > Replicate path along circle

and click. That opens the GUI of the plugin. I explain now the inputs.

Paths

In addition to the "Pattern path" (the path to be replicated) the plugin asks for a "Base path". It is a path with a single stroke. The stroke must be open so that it has two ends. Those end points are used as reference points: they are mapped precisely onto the circle. Example:

[attachment=7182]

The Pattern is the blue arrow. Below it the red 2-anchor line is the "Base". You can imagine that the Base and the Pattern are transformed together: the end points of the Base are mapped onto the circle and the Pattern follows along. The result, using default values, is on the right. (The transformed Base is not shown here but the plugin does allow it to be drawn too. The same goes for the circle.)

Replication

To control the replication process there is a list of parameters:
  • Circle center x
  • Circle center y
  • Circle radius
  • Sector start
  • Sector angle
  • Number of copies
  • Radial scaling
The first three determine the circle and the next two its sector. In the above pictures only the whole circle was used, but you can also restrict the replication to the sector. For instance, with Sector start = 0 and Sector angle = 90 you can get:

[attachment=7183]

The meaning of "Number of copies" and "Radial scaling" should be obvious. The latter does not change the circle but it scales the transformed pattern radially.

Distortion method

The plugin distorts the pattern to accommodate to the circular arc. There are three choices for how the distortion is done. The most natural is the default "polar coordinates" and probably that is all you will need. You can try the "exponential" method. It has the advantage to be conformal when radial scaling is 1, and that property may be useful sometimes (and for a mathematician this is the most natural choice!). The third choice is "no distortion" which causes the pattern to be copied as such (if radial scaling is 1).

If you use distortion you are safest when you apply the plugin only to straight-edge paths. Curved paths may cause unpleasant surprises; see below. If you choose "no distortion", however, curved paths should cause no problems.

Other drawings

With the last two inputs
  • Apply to the base path too?
  • Draw the circle?
you can make the plugin (1) to transform and draw the Base path too; (2) to draw the target circle.

Above I talked about the Base path as if it were only a 2-anchor path and nothing else. But all that is required of it is that it has a single stroke and that the stroke has two ends. Those end points are used as reference points. But between the end points the stroke may be anything, and sometimes you can use it as a part of the drawing; for that reason there is the option to draw the transformed Base. Or maybe you just want to see where the reference points are mapped to.

Known limitations

The current plugin may give bad results in distortions at least if:
  • The path has strongly bending or very long arcs, or inflection points. The remedy is to add anchors at strategic points.
  • The path is much wider than the base. Sometimes this is disastrous but not always - see the last picture below.
  • The ratio (Sector angle)/(Number of copies) is large. The plugin allows 120 degrees at most, and occasionally even that is a little too much.
I hope to make improvements in some later version.

Joining strokes

Look at the first picture. The resulting path consists of 12 sectors, and each sector is made of 4 short strokes, three open and one closed. But clearly the open short strokes could be joined to longer strokes, going round the whole figure. The plugin does not do this. But if you want to do the joinings, my plugin in

https://www.gimp-forum.net/Thread-Joining-strokes-of-a-path

seems to work well with its default values. And so does Ofnuts' plugin Edit > Join strokes contained in ofn-path-edits. In the first picture I created the pattern path by means of a grid and "snap to grid". That way the strokes were easily joined in the result.

Finally, a little playing. The Base is the red line in the middle, precisely half of the width of the grid:

[attachment=7184]


RE: Replicating a path - rich2005 - 12-05-2021

I can see this being popular. This is resultant path-to-selection and filled with a gradient.

[attachment=7185]

One question, and one of your other plugins might already do this.
A shape along a path rather than a circle. This a plugin that does this but for a raster source rather than a source path.

[attachment=7186]


RE: Replicating a path - Ottia Tuota - 12-05-2021

(12-05-2021, 11:35 AM)rich2005 Wrote: One question, and one of your other plugins might already do this.
A shape along a path rather than a circle. This a plugin that does this but for a raster source rather than a source path.

Yes, doing the same thing along a path would be nice. Perhaps later. Perhaps.

I guess you are referring to some of my path transformation plugins. I don't know. Anyhow, lots of work there. Now I want to concentrate on making the current plugin better.

What is the raster plugin you mentioned? It would interesting to see the code.


RE: Replicating a path - rich2005 - 12-05-2021

(12-05-2021, 11:55 AM)Ottia Tuota Wrote: What is the raster plugin you mentioned? It would interesting to see the code.

I actually use an older version without the preview but this one easy to find

https://www.gimpscripts.net/2021/07/follow-path-ver6.html


RE: Replicating a path - Ottia Tuota - 12-06-2021

(12-05-2021, 12:26 PM)rich2005 Wrote:
(12-05-2021, 11:55 AM)Ottia Tuota Wrote: What is the raster plugin you mentioned? It would interesting to see the code.  

I actually use an older version without the preview but this one easy to find

https://www.gimpscripts.net/2021/07/follow-path-ver6.html

Thanks, Rich. Indeed interesting. No overlap with my plugin since making paths and distorting them is quite another problem. (But that GUI...! Now I wonder if it would be worthwhile to learn to make such!)


RE: Replicating a path - Ottia Tuota - 12-11-2021

The plugin has now a new version, number 0.3. It works so well that it might be the final version (if ever there is such a thing). If you find some trouble cases please tell me. It is in the same place as before:

http://kmarkku.arkku.net/Path_replicate_files/Gimp_master.html

I dropped the option to transform and draw the Base path. (But the code is still there and the option could easily be restored.)

The new version handles curved paths well. You can even wrap a pattern around the whole circle as one copy which I before thought would be impossible. To demonstrate:

[attachment=7219]

In the picture the Base coincides with the bottom line of the Pattern. The circle equals the smallest circle on the right.

Some other playings, mostly with default values:

[attachment=7220]

[attachment=7221]

[attachment=7223]

[attachment=7224]


RE: Replicating a path - Krikor - 12-11-2021

[Image: BcLyxa1.png]
Nice & Easy!
Thx.


RE: Replicating a path - denzjos - 12-12-2021

Nice work Ottia Tuota. Some quick artwork from me made with part of an imported svg file and then some color, bump maps and other gimp stuff.

[attachment=7225]


RE: Replicating a path - Ottia Tuota - 12-12-2021

Impressive. I am glad you both found the plugin usable.


RE: Replicating a path - nelo - 12-13-2021

Nice script. Had to give it a try:
(Elements are from "floralia" font)