# Difference between revisions of "Talk:Link to BLine"

m (Inverse Duck Manipulation moved to Linking to Blines: More general name) |
m |
||

Line 1: | Line 1: | ||

− | + | In an [http://dooglus.rincevent.net/synfig/logs/2008/%23synfig-2008-03-03.log IRC discussion] it was suggested that it should to be possible to: | |

− | 1) Provide easy way for user to attach a vertex of a bline to another bline but without the need | + | 1) Provide an easy way for the user to attach a vertex of a bline to another bline but without the need to create a new vertex over that bline. That allows the simplification of the animation of complex compositions due to the use of less vertices. |

− | See Yoyobuae example: | + | See Yoyobuae's example: |

[[Image:sif_icon.png|16px]][http://members.lycos.co.uk/yoyobuae/bline_attached_2sections.sifz bline attached] | [[Image:sif_icon.png|16px]][http://members.lycos.co.uk/yoyobuae/bline_attached_2sections.sifz bline attached] | ||

− | In that example there are some vertices converted to | + | In that example there are some vertices converted to "BLine Vertex" and some tangents converted to "BLine Tangent". Manipulating the exported parameter that represents the position of the vertex along the curve it is possible to easily modify the shape of the composition allowing a better morphing of the shapes created. |

− | Currently it done through various export/connect manipulations. | + | Currently it is done through various export/connect manipulations. |

− | '''Suggestion:''' It's desired that this attachment be | + | '''Suggestion:''' It's desired that this attachment be achieved visually, by using the mouse and context menus. The current method requires the use of exported values and parameter linking, which is less intuitive and also is slower. |

'''Possible realization way:''' | '''Possible realization way:''' | ||

Line 31: | Line 31: | ||

''' Another possible realization way:''' | ''' Another possible realization way:''' | ||

− | The main idea is to change the way | + | The main idea is to change the way that vertex deletion is handled. If a vertex is deleted and there are other vertices linked to that vertex, then those vertices should become linked to a specific position on the bline (where the deleted vertex was) |

Example: We have bline A and bline B. Bline A have vertices A1,A2,A4. Bline B have vertices B1 and B2. To link vertex B1 to bline A between vertices A2 and A4 user must: | Example: We have bline A and bline B. Bline A have vertices A1,A2,A4. Bline B have vertices B1 and B2. To link vertex B1 to bline A between vertices A2 and A4 user must: | ||

Line 42: | Line 42: | ||

For the moment there are some convert types that allow inverse manipulation and only for certain parameters. For example tangents allow inverse manipulation (you modify the x/y position and it calculates the r,theta values. It is know that inverse manipulation leads on some inconsistencies. If the the function that convert a type into other is not biunivocal then it can produce undesired results form the point of view of the final user. For example, the Scale convert type would not have any inconsistency due to it has a easy computable reverse function (the reciprocal) | For the moment there are some convert types that allow inverse manipulation and only for certain parameters. For example tangents allow inverse manipulation (you modify the x/y position and it calculates the r,theta values. It is know that inverse manipulation leads on some inconsistencies. If the the function that convert a type into other is not biunivocal then it can produce undesired results form the point of view of the final user. For example, the Scale convert type would not have any inconsistency due to it has a easy computable reverse function (the reciprocal) | ||

− | Considering that and taking account that inverse calculation of | + | Considering that and taking account that inverse calculation of ValueNodes based on ducks position could need some extra computation, it would be good if some convert types can have inverse manipulation. |

'''The proposal is''' that BLine Vertex converted types allow inverse manipulation. So, manipulating a vertex duck you move the attached vertex along the bline and also match the tangent of the attached vertex to the bline's tangent at that position. | '''The proposal is''' that BLine Vertex converted types allow inverse manipulation. So, manipulating a vertex duck you move the attached vertex along the bline and also match the tangent of the attached vertex to the bline's tangent at that position. |

## Revision as of 23:56, 5 March 2008

In an IRC discussion it was suggested that it should to be possible to:

1) Provide an easy way for the user to attach a vertex of a bline to another bline but without the need to create a new vertex over that bline. That allows the simplification of the animation of complex compositions due to the use of less vertices.

See Yoyobuae's example:

In that example there are some vertices converted to "BLine Vertex" and some tangents converted to "BLine Tangent". Manipulating the exported parameter that represents the position of the vertex along the curve it is possible to easily modify the shape of the composition allowing a better morphing of the shapes created.

Currently it is done through various export/connect manipulations.

**Suggestion:** It's desired that this attachment be achieved visually, by using the mouse and context menus. The current method requires the use of exported values and parameter linking, which is less intuitive and also is slower.

**Possible realization way:**

- Select the duck you want to link to bline. It could be
- bline vertex duck
- bline tangent duck
- or real duck

- Right click on the bline (not the bline vertex!)
- Link
- Linking creating appropriate convert sequences.
- if selected vertex duck, it placed on bline at position where clicked
- if selected tangent duck, it links with bline tangent at click position
- Which one of two? Maybe both? --Zelgadis 12:27, 3 March 2008 (EST)
- We need to scale tangents as in example above

- if selected real duck, it links with bline width at click position
- currently width value at specific point of bline couldn't be easily retrieved via export/convert combinations --Zelgadis 12:27, 3 March 2008 (EST)

- If was more than one duck selected for linking (i.e. bline vertex duck and bline tangent duck) then they Amount values (in "Bline Vertex"/"Bline Tangent" converts) must be linked to ensure that they retrieved from the same position on a bline (if changed).

** Another possible realization way:**

The main idea is to change the way that vertex deletion is handled. If a vertex is deleted and there are other vertices linked to that vertex, then those vertices should become linked to a specific position on the bline (where the deleted vertex was)

Example: We have bline A and bline B. Bline A have vertices A1,A2,A4. Bline B have vertices B1 and B2. To link vertex B1 to bline A between vertices A2 and A4 user must:

- create new vertex A3 between A2 and A4 on bline A. (Insert item (smart))
- do linking of B1 to A3 as he likes (user can link tangents or not and can define which tangent linked to which)
- remove vertex A3 (Delete item (smart))

Result: B1 vertex becomes linked to bline A according to way it was linked to A3.

2) Derived from that request it appears the need to be able to manipulate the ducks that have been converted to a composition. That is: inverse manipulation of valuenodes. For the moment there are some convert types that allow inverse manipulation and only for certain parameters. For example tangents allow inverse manipulation (you modify the x/y position and it calculates the r,theta values. It is know that inverse manipulation leads on some inconsistencies. If the the function that convert a type into other is not biunivocal then it can produce undesired results form the point of view of the final user. For example, the Scale convert type would not have any inconsistency due to it has a easy computable reverse function (the reciprocal)

Considering that and taking account that inverse calculation of ValueNodes based on ducks position could need some extra computation, it would be good if some convert types can have inverse manipulation.

**The proposal is** that BLine Vertex converted types allow inverse manipulation. So, manipulating a vertex duck you move the attached vertex along the bline and also match the tangent of the attached vertex to the bline's tangent at that position.