A software for the construction and calculation of unit distance graphs and matchstick graphs.
This version contains all graphs from the following articles and projects. For optimal functionality and design please use the Firefox web browser. Last update on December 21, 2019.
Choose an article or project:
Click on "Fig.#" to see the related graph. Click on "show proof" to read the constructive proof of the graph. Click on "labels on/off" to see only the edges of the graph. Click on a colored circle beside "start_(color)_angle" to start the animation of the graph. Edges which differ from the unit length are colored blue if shorter and purple if longer.
Platz für Bildtext
label color , window size or , alternative keys for tablet PC
Input window for the graph construction program code in MGC language.
next vertex is P.
This is a brief description of the MGC language.
D is the (adjustable) unit length 1.
The point Pk is always the new point to be added.
Pk is placed such that the path from Pk over Pi to Pj is a link curve.
L(k,i,j) generates Pk such that Pk, Pi, Pj form an equilateral triangle.
N(k,i,j) generates Pk such that the line segments Pk,Pi and Pk,Pj have both length 1.
Q(k,i,j,a*D,b*D) generates Pk such that the line segment Pk,Pi has length a and Pk,Pj has length b, instead of a*D or b*D also works ab(l,m) for |Pl,Pm|.
H(k,i,j,a) generates Pk such that Pk is 1/a of the distance from Pi to Pj.
M(k,i,j,w) generates Pk such that the line segments Pi,Pj and Pi,Pk enclose an angle w°.
A(i,j) adds a missing edge between Pi and Pj.
Z(i,j) removes the edge between Pi and Pj.
W() marks the end of the proof with "All edges have length 1".
R(i,j) chooses the distance |Pi-Pj| for accurate adjustment to the nearest integer. The input also works before Pi, Pj are entered.
The line color can be selected with R(i,j,"Web colors").
R(i,j,"",a*D) uses the distance for accurate adjustment of Pi-Pj instead of the nearest integer.
RA(i,j) is the shortcut for the input A(i,j); R(i,j);
M(k,i,j,w,n1,w1,n2,w2,n3,w3...) continues M(k,i,j,w) to a frame with n1,n2,n3... outer edges, with angles w1,w2,w3... between them.
M(....w,n,"zumachen",i,j,k) closes the frame to point Pi with two frame pieces to each j and k outer edges.
ab(i,j,k,l,[m,n],...) draws instead of the edge ab(i,j) a copy of the subgraph Pi,Pj,Pk,Pl,Pm...Pn,...
A(i,j,ab(...)) connects Pi,Pj by a copy of the subgraph ab(...).
Bew(n) in A(i,j,Bew(n)) A(i,j,ab(...),Bew(n)) denotes the proof step n, with meaning see the source code of Bew(n).
jam(x) denotes an edge length generated by the program which is made incremental to 1 by the stretch_factor.
Kites(x,y) placed at position x,y copying templates, with kites() these are removed again (faster input for short-term graphs, because the copying templates can change).
The info about the next vertex P# is given below the input window.
The edges are drawn with a centered circle. Clicking on this circle brings the endpoints Pi,Pj into the foreground and measures their distance.
The graph construction program code can be got from generated fedgeo or tikz source code. (section between "Eingabe war:" and "Ende der Eingabe, weiter mit...").
Pressed Shift key: each cursor movement from Pi to Pj generates L(k,i,j) or N(k,i,j) if Pi,Pj is not connected.
Pressed Ctrl key: cursor movement from Pi to Pj generates A(i,j). Get Pj=Pi, if Pi accidentally steered.
This is a brief description of the function buttons, small input windows and texts below the drawing window.
label color: is the changeable color of the labels for the Points P1, P2,... of the graph in the drawing window. Activate a new color with Enter key or button "draw new".
window size: is the changeable size of the drawing window. Resize a new entry with Enter key or button "draw new".
maximizes the drawing window.
is an alternative key/button for touchscreen.
is an alternative key/button for touchscreen.
shows only the edges of the graph and hides the buttons above and beside this button.
shows the constructive proof of the graph. Please for further important information about the "show proof" button.
This information is important for persons who programs a new graph or changes the code of a given graph from the articles.
The "show proof" button does not generate a proof of the current graph. This button only makes a suggestion for a proof text from the existing input code for drawing the graph. The function "W()" does not calculate and check anything at all. It only sets the prepared text for the proof and the end-of-proof square under the displayed proof text. It is the responsibility of the person who programs the graph to ensure that all edges have unit length and that the displayed proof text is a correct constructive proof of the given graph.
Also important is the function "Bew(n)", which is documented under the point "23. Beweisschritte" of the button "program structure".
generates a new input from the outside to the inside of the graph.
generates randomly slightly different new coordinates for the inner vertices.
generates randomly slightly different new degrees for the angles.
undoes the effect of the buttons "shift inner vertices randomly" or "vary angles randomly".
blue_angle (clickable text): clicking on this text activates the function of the buttons below for the specified colored angle (here blue). The angle is activated if the font changes to italic style.
generates a new modifiable angle in a different color.
removes the last generated modifiable angle.
angle(a,b,c) = x°: is a protractor for the angle x enclosed by the edges Pa,Pb and Pb,Pc.
distance(a,b) = x: measures the distance between the vertices Pa and Pb.
draws the graph with the current code of the input window.
changes the degree of the currently activated modifiable angle.
attempts to adjust the first i angles so that the first i measurements R(j,k...) or RA(...) are adjusted as described.
sets i to i+1 or i-1 from the button "adjust accurate(i)".
stops the automatically adjustment of the currently modifiable angle.
sets the modifiable angles back to their last degrees for a stable graph. It is a kind of an undo function, if the graph gets crumpled-up.
by x: shifts the graph in the drawing window by x pixels.
by x: rotates the graph in the drawing window counterclockwise or clockwise by x degrees. Pi-Pj for alignment along Pi,Pj.
by x: increases or decreases the graph in the drawing window by a factor of x. (zoom in/out) To change the center zoom-point hold Shift and Control key and move the cursor (star cross) to the favored vertex of the graph in the drawing window. Labels must be on.
x: sets the unit length D to x for all edges.
The Matchstick Graphs Calculator (MGC) is a software for the construction and calculation of unit distance graphs and matchstick graphs by Stefan Vogel. Written 2016-2019.
The method Stefan Vogel used for the calculations he describes in a German article.
English texts, translations and surface design by Mike Winkler.
For optimal functionality and design please use the Firefox web browser.
For questions about copyright or miscellaneous things please contact: Mike Winkler.
A brief history of the matchstick graphs team "Winkler - Dinkelacker - Vogel".
In April 2013 Mike Winkler took notice of the Harborth graph during his studies on the four color theorem.
Curious about the fact that there exists no proof for the minimality of the Harborth graph, he began his own research on a smaller example.
On May 4, 2013 he started a thread in the graph theory forum on Matroids Matheplanet to discuss his results.
Stefan Vogel took instantly part in the thread and in October 2014 he began to verify the new graphs with mathematical methods and software. The result: all ideas failed.
After a long break on this subject Mike Winkler started on February 17, 2016 a new thread about matchstick graphs in the forum.
Beginning with questions on (2; 5)-regular matchstick graphs, the thread switched to 4-regular matchstick graphs on March 22, 2016.
Also fascinated by this subject Peter Dinkelacker took instantly part in the thread.
Animated by a matchstick problem that Erich Friedman posted in 2005 on his Math Magic pages, they started searching about smaller examples of (4; n)-regular matchstick graphs.
In March 2016 Stefan Vogel took also part in the new thread. At this time he began developing the MGC to verify the new graphs.
Until today the team found a lot of new graphs. They won many new results and insights on this topic and wrote eight articles.
The thread contains their complete research on matchstick graphs and unit distance graphs in chronological order.
Clicking on a text shows the corresponding source code (at the bottom of the page). Note: The source code uses German vocabulary.
globale Variablen, Berechnung von Abstand und Winkel