Coder Social home page Coder Social logo

constraint-solver's Introduction

constraint-solver

Pure python geometric constraint solver

import gcs

See gcs/solve_elements.py for a description of the mechanics behind this package. Essentially, gcs implements a constraint solver that breaks a problem into fully constrained sets of equations/variables and solves each set in order of its graph dependencies.

This algorithm was loosely inspired by some light research I did on CAD constraint solvers, but the idea to split equations/constraints into fully constrained sets was original.

Installing

This repo contains conda environment definitions that work with this package (environment.yml and environment-windows.yml).

To install on windows (remove sh if not using bash and use create-windows-env.bat):

sh create_windows-env.sh
pip install -e .

Running

A couple sample scripts exist in test/.

  • test/make_constraint_graph.py: shows how to set up a solver, solve it, and view its geometry and constraint graph
  • test/problem2_cstr_del_add: tests adding/deleting constraints on a sample problem. Makes an mpl animation showing the solver being updated as the constraint controlling the circle's radius changes

Sample Results

Geometry for problem2:

problem2

Constraint graph before running gcs algorithm:

constraint graph

Constraint graph split into fully constrained sets:

constraint graph solved

Solved problem2:

problem2 solved

Re-solved after point-on-circle constraint removed and circle radius changed:

problem2 constraint removed

constraint-solver's People

Contributors

ericprince avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.