Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

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