Using nodes pairs to resize, rotate, skew shapes

Bug #1390244 reported by ivan louette on 2014-11-06
This bug affects 1 person
Affects Status Importance Assigned to Milestone

Bug Description

In Inkscape one cannot use a pair of nodes to transform shapes. And that could be an addition to the precision of assembling complex shapes with already drawn pieces.

The first time I was confronted to this problem was when I tried to use their end nodes to resize arcs and fit them to gaps in other shapes.

Her is an idea of a tool to solve the problem :

1° draw a shape

2° select any pair of nodes in the shape

3° select a tool named (for example) "Transform by two nodes"

somethig appears on the canvas which shows these two nodes (perhaps a red line between them?)

4° if you move any of the two nodes (in any direction) the other one stay in place and the one you move works like a handle to resize, rotate, skew the entire shape (or object, or group...)

You can optionnally keep the proportions of the shape if you hold down some key while moving the "handle" node.

And of course these handle nodes could snap on anything. Thus you can use end nodes to fit precisely an existing shape to a gap into another one.


Related branches

ivan louette (ivan-louette) wrote :
su_v (suv-lp) on 2014-11-06
Changed in inkscape:
importance: Undecided → Wishlist
tags: added: shape-editing transformations ui
Jabiertxof (jabiertxof) wrote :

To me the best way to do is:
when selecting a path with no subpath open the bounding box handles to skew, rotate and scale, show a knot at extemes to preform the operation, Also another approach is the use of transform center of rotation.

ivan louette (ivan-louette) wrote :

Selecting a node as the center of rotation is useful.

But beeing able to use it as center for resizing the whole shape too and with the additional ability to use another node in the shape as handle of rotation and resizing (a node which you can snap on anything) should be perfect !

ivan louette (ivan-louette) wrote :

Some precision because my previous comment was a little bit weak :

1° in my mind whenthe two handles nodes are chosen every time you click an drag every of the two nodes it becomes the handle and the other one becomes the center of rotation/resizing ;

2° rotation and resizing aren't separated actions ; you do the two togheter ;

3° one should have the ability to keep the proportions or elongate or shrink (elasticize) the manipulated shape ; there should be an option (activated with a key ?) to toggle between the two.

ivan louette (ivan-louette) wrote :

Here is a new picture to show what I mean and with some precision about the vocabulary I used before :

Where I wrote "resizing" one should understand "scaling".

And I think the idea of elasticizing or skewing was a little bit confusing. Thus I prefer abandon this idea at the moment. But on the other hand a suggest an idea for resizing the object or shape on its own vertical or horizontal axis.

ScislaC (scislac) wrote :

Based on your latest image, aside from reassigning the location of the nodes, how does this differ from how the "Bend" LPE works if you have the "Width in units of length" box checked?

ivan louette (ivan-louette) wrote :

The difference is that it uses nodes selected on the shape itself. This should be much more precise to adjust it and fit it exactly inside gaps of other shapes for example.

Otherwise that could be a feature of the Bend LPE.

Jabiertxof (jabiertxof) wrote :

I just read the ScislaC post when starting to develop the LPE.
Ivan if i understand well you need a easy way to conect/join paths with proportional scale/rotate. For other things we can use the bend LPE way.

I expose another UX design:
LPE only works with paths, not groups with a min of two subpaths.
A numeric input to give the subpath to scale/rotate.
After scale/rotate join the result and close path if start node is near end node.

ivan louette (ivan-louette) wrote :

What I propose exactly is the possibility to use two nodes selected inside a shape as handles to resize and rotate it. After the two nodes are defined every time you drag one of them it acts like a handle to scale and rotate while the other one stay in place and becomes the transformation center.

Of course numeric entries could be interesting too but they are not the most important.

Joining paths and closing is also very interesting but not indispensible. That could be one of the possibilities.

Jabiertxof (jabiertxof) on 2015-02-01
Changed in inkscape:
assignee: nobody → Jabiertxof (jabiertxof)
Jabiertxof (jabiertxof) wrote :

Here are a branch to do it:
Here are a private video -to not disturb 0.91 launch- with the feature:

ivan louette (ivan-louette) wrote :

Amazing ! Thanks a lot !!! At this stage it would be already extremely useful ! Does it work only with start and end nodes or (in a second step) could it be possible to choose any other pair of nodes inside the path ? The demo with the banner is perfect too !

Jabiertxof (jabiertxof) wrote :

Here a new video with this feature implemented.

jazzynico (jazzynico) on 2015-02-04
Changed in inkscape:
status: New → In Progress
su_v (suv-lp) wrote :

Merged into trunk in r14320 - thx a lot!

Changed in inkscape:
milestone: none → 0.92
status: In Progress → Fix Committed
ivan louette (ivan-louette) wrote :

I add just a document to show some uses. I point also that one can precisely snap any path to the internal nodes of other path effects or even clones ! Very effective !

ivan louette (ivan-louette) wrote :

And here is the SVG file for those who work with Trunk.

ivan louette (ivan-louette) wrote :

Here is also a file describing some welcome features for this already very efficient LPE.

ivan louette (ivan-louette) wrote :

And here they are and they work like a charm !

su_v (suv-lp) on 2015-09-21
tags: added: livepatheffects
Bryce Harrington (bryce) on 2017-01-10
Changed in inkscape:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers