Copyright (c) Marjan Pušnik, Blaž Kurent, Mate Beštek
&
Aleks Jakulin, 2004-2005.
Copyright (c) Miha Žagar, Klemen Pernuš, Marko Đukić &
Aleks Jakulin, 2003-2004.
The existing diagramming software tries to assist the user in two ways:
These are satisfactorily solved. Another key problem in diagramming are the ‘looks’ of the diagram. There have been several solutions here too:
We find these solutions to be dissatisfactory and insufficient for general diagramming. They are not addressing the problem directly, which is aesthetic sense.
Aesthetic sense is often appropriated by artists and philosophers, and engineers shy away from it. Yet some of the greatest artists were engineers and mathematicians, such as Leonardo da Vinci. He noticed that the beauty of a sketch lies in the correct balance of proportions, and that people prefer the ratio of the golden section. This way, da Vinci rationally described a subset of classical aesthetic criteria. We do not pretend that we could automate the full complexity of Leonardo’s analysis. Sketching of diagrams, however, is a simpler problem, and we are confident that the set of aesthetic maxims is compact and consistent. A preliminary investigation has reduced aesthetics to the desires of symmetry across sizes, angles, shapes and distances. Furthermore, there are additional desires of non-overlapping, simplicity and compactness.
The idea underlying our approach is simple: if a user draws an approximately straight line, his intention is to draw a truly straight line; if he draws an approximately parallel set of approximately straight and approximately equally long lines, he wants a set of truly straight, truly parallel and truly equally long lines.
This project was specifically targeted at pen-based computers, such as the Tablet PC. However, it works well also with a mouse.
T. Igarashi, S. Matsuoka, S. Kawachiya, H. Tanaka. Interactive Beautification: A Technique for Rapid Geometric Design, Proceedings of UIST'97, pp.105-114, 1997. (do not miss Takeo's excellent home page)
A. Heydon, G. Nelson. The Juno-2 Constraint-Based Drawing Editor. DEC SRC Technical Report 131a. December 1994.
In comparison with the earlier ASSAI, SymmetryTest is based on the Microsoft .NET environment and programmed in C#. We have tried to improve the corner recognition module, this work was quite successful. We also tried employing physics and force models in order to enforce constraints, but adjusting the forces to suit our sense of aesthetic. The system supports the recognition of splines and circles.
Windows executable: [zip, 72k]
Source (Visual Studio .NET, BSD license): [tar.gz,
440k]
Report (in Slovene) [PDF, 300k]
Sourceforge project
'Symmetry' (the files are accessible through CVS)
Authors: Miha Žagar, Klemen Pernuš, Marko Đukić
Windows executable: [EXE, 180k]
Source (BSD license): [tar.gz, 40k]. It requires
the FOX GUI toolkit, and is compiled
under Visual C++ 7.0.
Report (in Slovene) [PDF, 200k]
left mouse drag: freehand
right mouse click: select line
right mouse click + drag: move vertex or object
right mouse double-click: erase line or vertex
Press the left mouse button and drag to draw. The usual approach to free-hand drawing does not result in pretty pictures. |
|
Once you release the left mouse button, ASSAI will automatically
detect the corners, and the axis-aligned straight lines. By double-right clicking on a line, you erase it. By left-clicking and dragging on a line, you move the whole object. By left-clicking and dragging on a vertex, you move just the vertex. |
|
With free-hand drawing, you can extend the object. | |
It automatically recognizes that the freehand lines meet up with the
existing vertices. Furthermore, it achieves symmetry between the
lengths. This is a single object now. |
|
ASSAI is more sophisticated than a magnetic grid: Try drawing an object with an arbitrary orientation... |
|
Observe the symmetries: equal lengths, parallelism. |
The recognition system in ASSAI is based on three key parameters that can all be defined by the user:
Define the radius of tolerance for welding two points. | |
Define the angular tolerance for axis-alignment of lines. | |
Define the parameters for converting freehand lines into vectors. |
ASSAI is not intended just for simple rectangles: