# Drawing and Automatic Generation of Graphs for Mason's Marks

This online tool draws and randomly produces straight-line graphs from a vertex-centric representation using node constraints with half-lines (see paper). This tool is written in Constraint Handling Rules (CHR) and SWI Prolog.

The input random produces a random graph that is supposed to be a stonemason's mark. It is derived from the mason's mark database for the Ulm Minster built into this program.

If the node constraints are geometrically inconsistent, no solution is produced. Then try again.

## Sample Inputs

• Random Generation of Mason's Marks in the style of Ulm Minster
• random
• Drawing unique Line Graphs
• node([2,90,1-A,90,2]),node([2,90,1-A,90,2])
• node([1,90,1-C]),node([1-D,90,1]),node([1-C,135,1.5-E,135,1-D]),node([0.5,90,0.5,90,0.5,90,1.5-E])
• node([7.5-Z,90,3,90,7.5-X,90,7.5-Y]),node([5.5,90,19,60,19-X]),node([1-Y,60,1]),node([15,90,15-Z])
• node([1-B,60,1,60,1-C,60,1,60,1-D,60,1]), node([1-B,60,1]), node([1-C,60,1]), node([1-D,60,1])
• node([5.5,90,19-B,60,19]), node([5.5,90,19-C,60,19-B]), node([5.5,90,19,60,19-C]) % one solution
• Drawing all solutions for under-constrained Graphs
• node([2,90,1-_,180,2-_]),node([1-_,45,2]),node([1,120,2-_,120,1])
• node([12,45,12-_]),node([12-_,45,12-_]),node([12-_,45,12-C]),node([12-C,45,12-_]),node([12-_,45,12])
• node([13,90,11-_]),node([13-_,90,11-_]),node([13-_,90,11-_]),node([13-C,90,11-_]),node([13-_,90,11])
• node([12,50,12-_]),node([12-_,50,12-_]),node([12-C,130,12-_]),node([12-C,130,12-_]),node([12-_,150,12])

## Input

This software, all outputs and graph drawings are subject to Copyright by Thom Fruehwirth, Ulm University, 2018.