Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Reference Finder

This is a recode of Robert Lang's Reference Finder originally written in C++. The source was made to export an Sqlite database of the calculator data. By querying the database this service is able to replicate the experience of using the original app. A new front end was built in Rabbit Ear.


the api is currently hosted at


  • point queries require (float) parameters "x" and "y"
  • line queries require (float) parameters "x1", "y1", "x2", "y2", location of 2 collinear points

by default, 5 solutions

  • count is an optional (int) parameter to request up to 36 solutions

by default, instructions are in English

  • lang is an optional string parameter, specify a language by its ISO 639-1 code. lang=es will print instructions in Spanish. (Only certain languages are supported, see api/languages folder for support).


The directory api/languages contains the currently supported languages, if you do not see your language and would like to contribute a translation, fill out the translation document and email it to robbykraft at gmail. (or if you're capable, create a .json, as in api/languages, and do a pull request. this will save me some work!)


API responds with a JSON array, an ordered list of solutions, sorted from most accurate to least. Each solution is an object with keys:

  • components: array of every line and mark involved in this fold sequence
  • error: number, the result of the distance calculation (0 means 100% accurate)
  • target: point / line - the user input
  • solution: point / line that this solution is presenting
  • sequence: step by step folding sequence as a set of parameters and axioms, indices point to indices in components array
  • instructions: step by step folding sequence as a written language



      {"type":"line","name":"the right edge","d":1,"u":{"x":1,"y":0}},
      {"type":"line","name":"the left edge","d":0,"u":{"x":-1,"y":0}},
      {"type":"line","name":"the bottom edge","d":0,"u":{"x":0,"y":1}},
      {"type":"point","name":"the top right corner","x":1,"y":1},
      "make crease A by bringing the right edge to the left edge",
      "make crease B by bringing the left edge to A",
      "point C is the intersection of the bottom edge and B",
      "make crease D by folding through the top right corner and C",
      "the solution is at the intersection of A and D"
      {"type":"line","name":"the left edge","d":0,"u":{"x":-1,"y":0}},
      {"type":"line","name":"the right edge","d":1,"u":{"x":1,"y":0}},
      {"type":"line","name":"the top edge","d":1,"u":{"x":0,"y":1}},
      {"type":"point","name":"the bottom left corner","x":0,"y":0},
      "make crease A by bringing the right edge to the left edge",
      "point B is the intersection of the top edge and A",
      "make crease C by bringing the bottom left corner to B",
      "make crease D by bringing the right edge to C",
      "point E is the intersection of A and D",
      "make crease F by bringing the bottom left corner to E",
      "the solution is at the intersection of A and F"


GPL 3.0


Robert Lang's reference finder, remade for the web



No releases published


No packages published
You can’t perform that action at this time.