Spherical Easel (https://easelgeo.app) is a free web application for researching, teaching, and learning spherical geometry written in Typescript. The authors have created an open-source code base in VueJS v3 that combines several design patterns, global data structures, and cloud-based storage for storing and retrieving spherical constructions. Spherical constructions are made up of interdependent geometric objects (like lines and circles). Interdependencies means that while being moved, updates to a single object must propagate to other dependent objects. The application stores the dependency structure using a directed acyclic graph to allow these updates to propagate correctly. In this paper, we describe how Spherical Easel employs the Command and Composite design patterns (fully integrated with various VueJS supporting libraries) to maintain a history of construction edits, allowing users to undo and redo edits, and to store a final construction script in a cloud database. To guarantee correct rendering of the spherical objects when loading a construction, the stored script also preserves the structure of the directed acyclic graph. The construction script parser built is also designed to take advantage of the (Composite) Command design pattern. Using this innovative design, adding new object types does not require a major redesign of the script parser. Keywords: Spherical geometry, software design patterns, web application
Read full abstract