model

_images/splash.png

geometor.model is the foundational library for the GEOMETOR initiative.

At the core of the module is the Model class which establishes the field and methods of operation for creating the geometric constructions while maintaining integrity.

The field might be easy to consider as a Cartesian grid. But in reality, it is an ordered set of information and operations. Points are the information. Lines and circles are the operations.

In our system, all geometric elements of the Model are defined as Sympy Geometry objects. This means a Point can be defined as a pair of any algebraic Sympy Expressions that can be evaluated into a floating point value.

Line and Circle are each defined by two points. So each construction must begin with at least two given points at the start. As lines and circles are added, intersection points are discovered with previous lines and circles and added to the model, so they may be used with new lines and circles.

There are three main operations of the Model:

  • set_point

  • construct_line

  • construct_circle

The major responsibilities of the Model:

  • deduplicate

    when elements are added to the model, we check to see if they already exist. This is particularly important for intersection points that often coincide with exisitng points.

  • clean values

  • discover intersections

  • save to and load from json

  • maintain a set of related info for each element:

    • ancestral relationships

    • establish labels for elements

    • classes for styles

All of the plotting functionality has moved to GEOMETOR render. However, there are several report functions in the this module:

  • report_summary

  • report_group_by_type

  • report_sequence

_images/screenshot.png

recent logs

  • 23.324 - First Log - Lots of changes

    This log entry marks the commencement of the Geometor.model project. After extensive changes in recent months, the project’s concepts, though not new, are entering a phase of significant development. The primary focus has been on refining the Geometor code, transitioning from the original Geometor Explorer, which encompassed a broad range of functions, to a more segmented approach. This segmentation allows for a clearer division of the project’s key components: modeling, rendering, and analyzing complex geometric constructions.

indices