diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8d9254e..5d30521 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,8 +1,11 @@ # Contribute -Do you like this project? If so, you can contribute to it in various ways, and you don't need to be a developer! +Do you like this project? +If so, you can contribute to it in various ways, +and you don't need to be a developer! -Download the latest GitHub version, then install the dev requirements in ``requirements-dev.txt``. +Download the latest GitHub version, +then install the dev requirements in ``requirements-dev.txt``. In a nutshell @@ -26,16 +29,25 @@ We use unittest. You can use it in two ways: This section is mainly intended for maintainers. Fell free to use the tools described here, but they are not necessary in any way. -* To publish a new version, use ``bump2version``. For instance ``bump2version minor``. -* Update CHANGELOG.md with release date and edit subsection titles. -* Regenerate the documentation (uses Sphinx). - * By hand with ``sphinx-build -b html sphinx/ docs/``. - * We also provide a configuration file for users of PyCharm that does the same. - * Clean everything with ``make clean``. -* Commit and add a tag (e. g. v0.4.0). -* Publish a new [GitHub release](https://github.com/HugoFara/pylinkage/releases). +1. To publish a new version, use ``bump2version``. For instance ``bump2version minor``. +2. Update CHANGELOG.md with release date and edit subsection titles. +3. Regenerate the documentation (uses Sphinx). + * By hand with ``sphinx-build -b html sphinx/ docs/``. + * We also provide a configuration file for users of PyCharm that does the same. + * Clean everything with ``make clean``. +4. Commit and add a tag (e. g. v0.4.0). +5. Publish a new [GitHub release](https://github.com/HugoFara/pylinkage/releases). + + +## Caveats + +Pylinkage is a small project to build 2D linkages in a simple way. +It is not intended for complex simulations. +If you want to do much more, my best advice is to start your own project. +If you simply want to have fun developing new features, you are welcome here! ## Contributions for everyone Don't forget to drop a star, fork it or share it on social media. This is a community project, and the bigger the community, the more it will thrive! + diff --git a/README.md b/README.md index 6d67a87..cd862a3 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ score, position, coord = pl.particle_swarm_optimization( # Let's use the result in our linkage! my_linkage.set_num_constraints(constraints) # Dimensions -my_linkage.set_coords(init_pos) # Intial position +my_linkage.set_coords(init_pos) # Initial position pl.show_linkage(my_linkage) ``` @@ -224,7 +224,7 @@ Our objective function, often called the fitness function, is the following: init_pos = my_linkage.get_coords() @pl.kinematic_minimizastion -def fitness_func(loci, **kwargs): +def fitness_func(loci, **_kwargs): """ Return how fit the locus is to describe a quarter of circle. @@ -311,12 +311,21 @@ With a bit of imagination, you have a wonderful windshield wiper! As of today, we segment the code in main three parts: * [linkage.py](https://github.com/HugoFara/pylinkage/blob/main/pylinkage/linkage.py) this module describes joints and linkages - * Due to the geometric approach, joints (instances of ``Joint`` object) are defined without links. + * Due to the geometric approach, joints (instances of ``Joint`` object) + are defined without links. * The ``Linkage`` class that will make your code shorter. * [optimizer.py](https://github.com/HugoFara/pylinkage/blob/main/pylinkage/optimizer.py) proposes three optimizations based on three techniques: - * The "exhaustive" optimization (``exhaustive_optimization`` function) is a simple grid search optimization method, consisting or trying sequencially all positions. It is here for demonstration purposes only, and you should not use it if you are looking for an efficient technique. - * The built-in Particle Swarm Optimizer (PSO). I started with it, so it offers a large set of useful options for linkage optimization. However, it is here for legacy purposes, and is much short than the PySwarms module. - * PSO using [PySwarms](https://github.com/ljvmiranda921/pyswarms). We provide a wrapper function to PySwarm from ljvmiranda921, that will progressively be extended. + * The "exhaustive" optimization (``exhaustive_optimization`` function) + is a simple grid search optimization method, + consisting or trying sequentially all positions. + It is here for demonstration purposes only, + and you should not use it if you are looking for an efficient technique. + * The built-in Particle Swarm Optimizer (PSO). + I started with it, so it offers a large set of useful options for linkage optimization. + However, it is here for legacy purposes, and is much shorter than the PySwarms module. + * PSO using [PySwarms](https://github.com/ljvmiranda921/pyswarms). + We provide a wrapper function to PySwarm from ljvmiranda921, + that will progressively be extended. * [visualizer.py](https://github.com/HugoFara/pylinkage/blob/main/pylinkage/visualizer.py) can make graphic illustrations of your linkage using matplotlib. * It is also used to visualize your n-dimensional swarm, which is not supported by PySwarms. diff --git a/docs/api/collections.html b/docs/api/collections.html index 7902524..1a56b64 100644 --- a/docs/api/collections.html +++ b/docs/api/collections.html @@ -1,7 +1,7 @@ - + collections — pylinkage 0.5.3 documentation diff --git a/docs/api/geometry.html b/docs/api/geometry.html index b15957e..0bb59b3 100644 --- a/docs/api/geometry.html +++ b/docs/api/geometry.html @@ -1,7 +1,7 @@ - + geometry — pylinkage 0.5.3 documentation diff --git a/docs/api/interface.html b/docs/api/interface.html index ac72486..a35d359 100644 --- a/docs/api/interface.html +++ b/docs/api/interface.html @@ -1,7 +1,7 @@ - + interface — pylinkage 0.5.3 documentation diff --git a/docs/api/optimization.html b/docs/api/optimization.html index ce1cdc4..cfeb519 100644 --- a/docs/api/optimization.html +++ b/docs/api/optimization.html @@ -1,7 +1,7 @@ - + optimization — pylinkage 0.5.3 documentation diff --git a/docs/api/utility.html b/docs/api/utility.html index 353f29e..70f3134 100644 --- a/docs/api/utility.html +++ b/docs/api/utility.html @@ -1,7 +1,7 @@ - + utility — pylinkage 0.5.3 documentation diff --git a/docs/api/visualizer.html b/docs/api/visualizer.html index d1c4356..21ce9cd 100644 --- a/docs/api/visualizer.html +++ b/docs/api/visualizer.html @@ -1,7 +1,7 @@ - + visualizer — pylinkage 0.5.3 documentation diff --git a/docs/changeloglink.html b/docs/changeloglink.html index da5c859..d6ecc1a 100644 --- a/docs/changeloglink.html +++ b/docs/changeloglink.html @@ -1,7 +1,7 @@ - + Changelog — pylinkage 0.5.3 documentation diff --git a/docs/code_of_conductlink.html b/docs/code_of_conductlink.html index 91568d4..907adc4 100644 --- a/docs/code_of_conductlink.html +++ b/docs/code_of_conductlink.html @@ -1,7 +1,7 @@ - + Contributor Covenant Code of Conduct — pylinkage 0.5.3 documentation diff --git a/docs/index.html b/docs/index.html index 3490793..11464a3 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,7 +1,7 @@ - + Welcome to pylinkage’s documentation! — pylinkage 0.5.3 documentation @@ -238,7 +238,7 @@

Short demo# Let's use the result in our linkage! my_linkage.set_num_constraints(constraints) # Dimensions -my_linkage.set_coords(init_pos) # Intial position +my_linkage.set_coords(init_pos) # Initial position pl.show_linkage(my_linkage) @@ -366,7 +366,7 @@

Optimizationinit_pos = my_linkage.get_coords() @pl.kinematic_minimizastion -def fitness_func(loci, **kwargs): +def fitness_func(loci, **_kwargs): """ Return how fit the locus is to describe a quarter of circle. @@ -450,15 +450,24 @@

Structure
  • linkage.py this module describes joints and linkages

      -
    • Due to the geometric approach, joints (instances of Joint object) are defined without links.

    • +
    • Due to the geometric approach, joints (instances of Joint object) +are defined without links.

    • The Linkage class that will make your code shorter.

  • optimizer.py proposes three optimizations based on three techniques:

      -
    • The “exhaustive” optimization (exhaustive_optimization function) is a simple grid search optimization method, consisting or trying sequencially all positions. It is here for demonstration purposes only, and you should not use it if you are looking for an efficient technique.

    • -
    • The built-in Particle Swarm Optimizer (PSO). I started with it, so it offers a large set of useful options for linkage optimization. However, it is here for legacy purposes, and is much short than the PySwarms module.

    • -
    • PSO using PySwarms. We provide a wrapper function to PySwarm from ljvmiranda921, that will progressively be extended.

    • +
    • The “exhaustive” optimization (exhaustive_optimization function) +is a simple grid search optimization method, +consisting or trying sequentially all positions. +It is here for demonstration purposes only, +and you should not use it if you are looking for an efficient technique.

    • +
    • The built-in Particle Swarm Optimizer (PSO). +I started with it, so it offers a large set of useful options for linkage optimization. +However, it is here for legacy purposes, and is much shorter than the PySwarms module.

    • +
    • PSO using PySwarms. +We provide a wrapper function to PySwarm from ljvmiranda921, +that will progressively be extended.

  • visualizer.py can make graphic illustrations of your linkage using matplotlib.

    diff --git a/docs/readmelink.html b/docs/readmelink.html index b2fe125..f948cb4 100644 --- a/docs/readmelink.html +++ b/docs/readmelink.html @@ -1,7 +1,7 @@ - + Pylinkage — pylinkage 0.5.3 documentation @@ -173,7 +173,7 @@

    Short demo# Let's use the result in our linkage! my_linkage.set_num_constraints(constraints) # Dimensions -my_linkage.set_coords(init_pos) # Intial position +my_linkage.set_coords(init_pos) # Initial position pl.show_linkage(my_linkage) @@ -301,7 +301,7 @@

    Optimizationinit_pos = my_linkage.get_coords() @pl.kinematic_minimizastion -def fitness_func(loci, **kwargs): +def fitness_func(loci, **_kwargs): """ Return how fit the locus is to describe a quarter of circle. @@ -385,15 +385,24 @@

    Structure
  • linkage.py this module describes joints and linkages

      -
    • Due to the geometric approach, joints (instances of Joint object) are defined without links.

    • +
    • Due to the geometric approach, joints (instances of Joint object) +are defined without links.

    • The Linkage class that will make your code shorter.

  • optimizer.py proposes three optimizations based on three techniques:

      -
    • The “exhaustive” optimization (exhaustive_optimization function) is a simple grid search optimization method, consisting or trying sequencially all positions. It is here for demonstration purposes only, and you should not use it if you are looking for an efficient technique.

    • -
    • The built-in Particle Swarm Optimizer (PSO). I started with it, so it offers a large set of useful options for linkage optimization. However, it is here for legacy purposes, and is much short than the PySwarms module.

    • -
    • PSO using PySwarms. We provide a wrapper function to PySwarm from ljvmiranda921, that will progressively be extended.

    • +
    • The “exhaustive” optimization (exhaustive_optimization function) +is a simple grid search optimization method, +consisting or trying sequentially all positions. +It is here for demonstration purposes only, +and you should not use it if you are looking for an efficient technique.

    • +
    • The built-in Particle Swarm Optimizer (PSO). +I started with it, so it offers a large set of useful options for linkage optimization. +However, it is here for legacy purposes, and is much shorter than the PySwarms module.

    • +
    • PSO using PySwarms. +We provide a wrapper function to PySwarm from ljvmiranda921, +that will progressively be extended.

  • visualizer.py can make graphic illustrations of your linkage using matplotlib.

    diff --git a/docs/searchindex.js b/docs/searchindex.js index 11ae86d..493ea31 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"1. Correction": [[7, "correction"]], "2. Warning": [[7, "warning"]], "3. Temporary Ban": [[7, "temporary-ban"]], "4. Permanent Ban": [[7, "permanent-ban"]], "Added": [[6, "added"]], "Added in 0.0.1": [[6, "added-in-0-0-1"]], "Added in 0.2.0": [[6, "added-in-0-2-0"]], "Added in 0.2.1": [[6, "added-in-0-2-1"]], "Added in 0.2.2": [[6, "added-in-0-2-2"]], "Added in 0.3.0": [[6, "added-in-0-3-0"]], "Added in 0.4.0": [[6, "added-in-0-4-0"]], "Added in 0.4.1": [[6, "added-in-0-4-1"]], "Added in 0.5.0": [[6, "added-in-0-5-0"]], "Added in 0.5.1": [[6, "added-in-0-5-1"]], "Added in 0.5.2": [[6, "added-in-0-5-2"]], "Added in 0.5.3": [[6, "added-in-0-5-3"]], "Agent": [[0, "module-pylinkage.collections.agent"]], "Arguments": [[2, "arguments"], [2, "id1"]], "Attribution": [[7, "attribution"]], "Base module for geometric abstractions": [[1, "module-pylinkage.geometry"]], "Changed": [[6, "changed"]], "Changed in 0.2.0": [[6, "changed-in-0-2-0"]], "Changed in 0.2.1": [[6, "changed-in-0-2-1"]], "Changed in 0.3.0": [[6, "changed-in-0-3-0"]], "Changed in 0.4.0": [[6, "changed-in-0-4-0"]], "Changed in 0.4.1": [[6, "changed-in-0-4-1"]], "Changed in 0.5.0": [[6, "changed-in-0-5-0"]], "Changed in 0.5.1": [[6, "changed-in-0-5-1"]], "Changed in 0.5.2": [[6, "changed-in-0-5-2"]], "Changed in 0.5.3": [[6, "changed-in-0-5-3"]], "Changelog": [[6, "changelog"]], "Complete example": [[8, "complete-example"], [9, "complete-example"]], "Contributing": [[8, "contributing"], [9, "contributing"]], "Contributor Covenant Code of Conduct": [[7, "contributor-covenant-code-of-conduct"]], "Deprecated": [[6, "deprecated"]], "Deprecated in 0.5.3": [[6, "deprecated-in-0-5-3"]], "Enforcement": [[7, "enforcement"]], "Enforcement Guidelines": [[7, "enforcement-guidelines"]], "Enforcement Responsibilities": [[7, "enforcement-responsibilities"]], "Exceptions": [[2, "module-pylinkage.interface.exceptions"]], "Fixed": [[6, "fixed"]], "Fixed in 0.2.1": [[6, "fixed-in-0-2-1"]], "Fixed in 0.2.2": [[6, "fixed-in-0-2-2"]], "Fixed in 0.3.0": [[6, "fixed-in-0-3-0"]], "Fixed in 0.4.0": [[6, "fixed-in-0-4-0"]], "Fixed in 0.5.0": [[6, "fixed-in-0-5-0"]], "Fixed in 0.5.3": [[6, "fixed-in-0-5-3"]], "Indices and tables": [[8, "indices-and-tables"]], "Installation": [[8, "installation"], [9, "installation"]], "Introduction": [[8, null]], "Joint definition": [[2, "module-pylinkage.interface.joint"]], "Joints definition": [[8, "joints-definition"], [9, "joints-definition"]], "Linkage definition": [[2, "module-pylinkage.interface.linkage"]], "Linkage definition and simulation": [[8, "linkage-definition-and-simulation"], [9, "linkage-definition-and-simulation"]], "Modules": [[8, null]], "MutableAgent": [[0, "module-pylinkage.collections.mutable_agent"]], "Optimization": [[8, "optimization"], [9, "optimization"]], "Our Pledge": [[7, "our-pledge"]], "Our Standards": [[7, "our-standards"]], "Parameters": [[2, "parameters"]], "Particle Swarm Optimization": [[3, "module-pylinkage.optimization.particle_swarm"]], "Pylinkage": [[8, "pylinkage"], [9, "pylinkage"]], "Quick Links": [[8, null]], "Removed in 0.4.0": [[6, "removed-in-0-4-0"]], "Requirements": [[8, "requirements"], [9, "requirements"]], "Returns": [[2, "returns"]], "Revolute joint definition": [[2, "module-pylinkage.interface.revolute_joint"]], "Scope": [[7, "scope"]], "Setting up Virtual Environment": [[8, "setting-up-virtual-environment"], [9, "setting-up-virtual-environment"]], "Short demo": [[8, "short-demo"], [9, "short-demo"]], "Simple plotter for your linkages": [[5, "module-pylinkage.visualizer"]], "Structure": [[8, "structure"], [9, "structure"]], "Trials and errors (grid search)": [[3, "module-pylinkage.optimization.grid_search"]], "Using pip": [[8, "using-pip"], [9, "using-pip"]], "Utility": [[3, "module-pylinkage.optimization.utils"]], "Various functions to help you handle linkages": [[4, "module-pylinkage.utility"]], "Visualization": [[8, "visualization"], [9, "visualization"]], "Welcome to pylinkage\u2019s documentation!": [[8, "welcome-to-pylinkage-s-documentation"]], "[0.0.1] - 2021-06-12": [[6, "id11"]], "[0.2.0] - 2021-06-14": [[6, "id10"]], "[0.2.1] - 2021-06-16": [[6, "id9"]], "[0.2.2] - 2021-06-22": [[6, "id8"]], "[0.3.0] - 2021-07-05": [[6, "id7"]], "[0.4.0] - 2021-07-06": [[6, "id6"]], "[0.4.1] - 2021-07-11": [[6, "id5"]], "[0.5.0] - 2021-07-12": [[6, "id4"]], "[0.5.1] - 2021-07-14": [[6, "id3"]], "[0.5.2] - 2021-07-21": [[6, "id2"]], "[0.5.3] - 2023-06-23": [[6, "id1"]], "[Unreleased]": [[6, "unreleased"]], "collections": [[0, "collections"]], "geometry": [[1, "geometry"]], "interface": [[2, "interface"]], "optimization": [[3, "optimization"]], "utility": [[4, "utility"]], "visualizer": [[5, "visualizer"]]}, "docnames": ["api/collections", "api/geometry", "api/interface", "api/optimization", "api/utility", "api/visualizer", "changeloglink", "code_of_conductlink", "index", "readmelink"], "envversion": {"sphinx": 61, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["api/collections.rst", "api/geometry.rst", "api/interface.rst", "api/optimization.rst", "api/utility.rst", "api/visualizer.rst", "changeloglink.rst", "code_of_conductlink.rst", "index.rst", "readmelink.rst"], "indexentries": {"__init__() (pylinkage.collections.mutable_agent.mutableagent method)": [[0, "pylinkage.collections.mutable_agent.MutableAgent.__init__", false]], "__init__() (pylinkage.interface.exceptions.hypostaticerror method)": [[2, "pylinkage.interface.exceptions.HypostaticError.__init__", false]], "__init__() (pylinkage.interface.exceptions.unbuildableerror method)": [[2, "pylinkage.interface.exceptions.UnbuildableError.__init__", false]], "__init__() (pylinkage.interface.joint.crank method)": [[2, "pylinkage.interface.joint.Crank.__init__", false]], "__init__() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.__init__", false]], "__init__() (pylinkage.interface.joint.joint method)": [[2, "pylinkage.interface.joint.Joint.__init__", false]], "__init__() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.__init__", false]], "__init__() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.__init__", false]], "__init__() (pylinkage.interface.revolute_joint.pivot method)": [[2, "pylinkage.interface.revolute_joint.Pivot.__init__", false]], "__init__() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.__init__", false]], "_abc_impl (pylinkage.interface.joint.crank attribute)": [[2, "pylinkage.interface.joint.Crank._abc_impl", false]], "_abc_impl (pylinkage.interface.joint.fixed attribute)": [[2, "pylinkage.interface.joint.Fixed._abc_impl", false]], "_abc_impl (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint._abc_impl", false]], "_abc_impl (pylinkage.interface.joint.static attribute)": [[2, "pylinkage.interface.joint.Static._abc_impl", false]], "_abc_impl (pylinkage.interface.revolute_joint.pivot attribute)": [[2, "pylinkage.interface.revolute_joint.Pivot._abc_impl", false]], "_abc_impl (pylinkage.interface.revolute_joint.revolute attribute)": [[2, "pylinkage.interface.revolute_joint.Revolute._abc_impl", false]], "_cranks (pylinkage.interface.linkage.linkage attribute)": [[2, "pylinkage.interface.linkage.Linkage._cranks", false]], "_get_color() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer._get_color", false]], "_solve_order (pylinkage.interface.linkage.linkage attribute)": [[2, "pylinkage.interface.linkage.Linkage._solve_order", false]], "agent (class in pylinkage.collections.agent)": [[0, "pylinkage.collections.agent.Agent", false]], "angle (pylinkage.interface.joint.crank attribute)": [[2, "pylinkage.interface.joint.Crank.angle", false]], "angle (pylinkage.interface.joint.fixed attribute)": [[2, "pylinkage.interface.joint.Fixed.angle", false]], "bounding_box() (in module pylinkage.utility)": [[4, "pylinkage.utility.bounding_box", false]], "circle() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.circle", false]], "circle_intersect() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.circle_intersect", false]], "coord() (pylinkage.interface.joint.joint method)": [[2, "pylinkage.interface.joint.Joint.coord", false]], "crank (class in pylinkage.interface.joint)": [[2, "pylinkage.interface.joint.Crank", false]], "cyl_to_cart() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.cyl_to_cart", false]], "dimensions (pylinkage.collections.mutable_agent.mutableagent attribute)": [[0, "pylinkage.collections.mutable_agent.MutableAgent.dimensions", false]], "dist_builtin() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.dist_builtin", false]], "fast_variator() (in module pylinkage.optimization.grid_search)": [[3, "pylinkage.optimization.grid_search.fast_variator", false]], "fixed (class in pylinkage.interface.joint)": [[2, "pylinkage.interface.joint.Fixed", false]], "generate_bounds() (in module pylinkage.optimization.utils)": [[3, "pylinkage.optimization.utils.generate_bounds", false]], "get_constraints() (pylinkage.interface.joint.crank method)": [[2, "pylinkage.interface.joint.Crank.get_constraints", false]], "get_constraints() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.get_constraints", false]], "get_constraints() (pylinkage.interface.joint.joint method)": [[2, "pylinkage.interface.joint.Joint.get_constraints", false]], "get_constraints() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.get_constraints", false]], "get_constraints() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.get_constraints", false]], "get_coords() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.get_coords", false]], "get_num_constraints() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.get_num_constraints", false]], "get_rotation_period() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.get_rotation_period", false]], "hyperstaticity() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.hyperstaticity", false]], "hypostaticerror": [[2, "pylinkage.interface.exceptions.HypostaticError", false]], "init_positions (pylinkage.collections.mutable_agent.mutableagent attribute)": [[0, "pylinkage.collections.mutable_agent.MutableAgent.init_positions", false]], "intersection() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.intersection", false]], "joint (class in pylinkage.interface.joint)": [[2, "pylinkage.interface.joint.Joint", false]], "joint0 (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint.joint0", false]], "joint1 (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint.joint1", false]], "joints (pylinkage.interface.linkage.linkage attribute)": [[2, "pylinkage.interface.linkage.Linkage.joints", false]], "kinematic_default_test() (in module pylinkage.utility)": [[4, "pylinkage.utility.kinematic_default_test", false]], "kinematic_maximization() (in module pylinkage.utility)": [[4, "pylinkage.utility.kinematic_maximization", false]], "kinematic_minimization() (in module pylinkage.utility)": [[4, "pylinkage.utility.kinematic_minimization", false]], "linkage (class in pylinkage.interface.linkage)": [[2, "pylinkage.interface.linkage.Linkage", false]], "module": [[0, "module-pylinkage.collections.agent", false], [0, "module-pylinkage.collections.mutable_agent", false], [1, "module-pylinkage.geometry", false], [2, "module-pylinkage.interface.exceptions", false], [2, "module-pylinkage.interface.joint", false], [2, "module-pylinkage.interface.linkage", false], [2, "module-pylinkage.interface.revolute_joint", false], [3, "module-pylinkage.optimization.grid_search", false], [3, "module-pylinkage.optimization.particle_swarm", false], [3, "module-pylinkage.optimization.utils", false], [4, "module-pylinkage.utility", false], [5, "module-pylinkage.visualizer", false]], "movement_bounding_bow() (in module pylinkage.utility)": [[4, "pylinkage.utility.movement_bounding_bow", false]], "movement_bounding_box() (in module pylinkage.utility)": [[4, "pylinkage.utility.movement_bounding_box", false]], "mutableagent (class in pylinkage.collections.mutable_agent)": [[0, "pylinkage.collections.mutable_agent.MutableAgent", false]], "name (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint.name", false]], "name (pylinkage.interface.linkage.linkage attribute)": [[2, "pylinkage.interface.linkage.Linkage.name", false]], "norm() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.norm", false]], "particle_swarm_optimization() (in module pylinkage.optimization.particle_swarm)": [[3, "pylinkage.optimization.particle_swarm.particle_swarm_optimization", false]], "pivot (class in pylinkage.interface.revolute_joint)": [[2, "pylinkage.interface.revolute_joint.Pivot", false]], "plot_kinematic_linkage() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer.plot_kinematic_linkage", false]], "plot_static_linkage() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer.plot_static_linkage", false]], "pylinkage.collections.agent": [[0, "module-pylinkage.collections.agent", false]], "pylinkage.collections.mutable_agent": [[0, "module-pylinkage.collections.mutable_agent", false]], "pylinkage.geometry": [[1, "module-pylinkage.geometry", false]], "pylinkage.interface.exceptions": [[2, "module-pylinkage.interface.exceptions", false]], "pylinkage.interface.joint": [[2, "module-pylinkage.interface.joint", false]], "pylinkage.interface.linkage": [[2, "module-pylinkage.interface.linkage", false]], "pylinkage.interface.revolute_joint": [[2, "module-pylinkage.interface.revolute_joint", false]], "pylinkage.optimization.grid_search": [[3, "module-pylinkage.optimization.grid_search", false]], "pylinkage.optimization.particle_swarm": [[3, "module-pylinkage.optimization.particle_swarm", false]], "pylinkage.optimization.utils": [[3, "module-pylinkage.optimization.utils", false]], "pylinkage.utility": [[4, "module-pylinkage.utility", false]], "pylinkage.visualizer": [[5, "module-pylinkage.visualizer", false]], "r (pylinkage.interface.joint.crank attribute)": [[2, "pylinkage.interface.joint.Crank.r", false]], "r (pylinkage.interface.joint.fixed attribute)": [[2, "pylinkage.interface.joint.Fixed.r", false]], "r0 (pylinkage.interface.revolute_joint.pivot attribute)": [[2, "pylinkage.interface.revolute_joint.Pivot.r0", false]], "r0 (pylinkage.interface.revolute_joint.revolute attribute)": [[2, "pylinkage.interface.revolute_joint.Revolute.r0", false]], "r1 (pylinkage.interface.revolute_joint.pivot attribute)": [[2, "pylinkage.interface.revolute_joint.Pivot.r1", false]], "r1 (pylinkage.interface.revolute_joint.revolute attribute)": [[2, "pylinkage.interface.revolute_joint.Revolute.r1", false]], "rebuild() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.rebuild", false]], "reload() (pylinkage.interface.joint.crank method)": [[2, "pylinkage.interface.joint.Crank.reload", false]], "reload() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.reload", false]], "reload() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.reload", false]], "reload() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.reload", false]], "revolute (class in pylinkage.interface.revolute_joint)": [[2, "pylinkage.interface.revolute_joint.Revolute", false]], "score (pylinkage.collections.mutable_agent.mutableagent attribute)": [[0, "pylinkage.collections.mutable_agent.MutableAgent.score", false]], "sequential_variator() (in module pylinkage.optimization.grid_search)": [[3, "pylinkage.optimization.grid_search.sequential_variator", false]], "set_anchor0() (pylinkage.interface.joint.crank method)": [[2, "pylinkage.interface.joint.Crank.set_anchor0", false]], "set_anchor0() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.set_anchor0", false]], "set_anchor0() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.set_anchor0", false]], "set_anchor0() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.set_anchor0", false]], "set_anchor1() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.set_anchor1", false]], "set_anchor1() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.set_anchor1", false]], "set_anchor1() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.set_anchor1", false]], "set_completely() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.set_completely", false]], "set_constraints() (pylinkage.interface.joint.crank method)": [[2, "pylinkage.interface.joint.Crank.set_constraints", false]], "set_constraints() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.set_constraints", false]], "set_constraints() (pylinkage.interface.joint.joint method)": [[2, "pylinkage.interface.joint.Joint.set_constraints", false]], "set_constraints() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.set_constraints", false]], "set_constraints() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.set_constraints", false]], "set_coord() (pylinkage.interface.joint.joint method)": [[2, "pylinkage.interface.joint.Joint.set_coord", false]], "set_coords() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.set_coords", false]], "set_num_constraints() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.set_num_constraints", false]], "show_linkage() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer.show_linkage", false]], "sqr_dist() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.sqr_dist", false]], "static (class in pylinkage.interface.joint)": [[2, "pylinkage.interface.joint.Static", false]], "step() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.step", false]], "swarm_tiled_repr() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer.swarm_tiled_repr", false]], "tqdm_verbosity() (in module pylinkage.optimization.grid_search)": [[3, "pylinkage.optimization.grid_search.tqdm_verbosity", false]], "trials_and_errors_optimization() (in module pylinkage.optimization.grid_search)": [[3, "pylinkage.optimization.grid_search.trials_and_errors_optimization", false]], "unbuildableerror": [[2, "pylinkage.interface.exceptions.UnbuildableError", false]], "update_animated_plot() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer.update_animated_plot", false]], "x (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint.x", false]], "y (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint.y", false]]}, "objects": {"pylinkage": [[1, 0, 0, "-", "geometry"], [4, 0, 0, "-", "utility"], [5, 0, 0, "-", "visualizer"]], "pylinkage.collections": [[0, 0, 0, "-", "agent"], [0, 0, 0, "-", "mutable_agent"]], "pylinkage.collections.agent": [[0, 1, 1, "", "Agent"]], "pylinkage.collections.mutable_agent": [[0, 1, 1, "", "MutableAgent"]], "pylinkage.collections.mutable_agent.MutableAgent": [[0, 2, 1, "", "__init__"], [0, 3, 1, "", "dimensions"], [0, 3, 1, "", "init_positions"], [0, 3, 1, "", "score"]], "pylinkage.geometry": [[1, 4, 1, "", "circle_intersect"], [1, 4, 1, "", "cyl_to_cart"], [1, 4, 1, "", "dist_builtin"], [1, 4, 1, "", "intersection"], [1, 4, 1, "", "norm"], [1, 4, 1, "", "sqr_dist"]], "pylinkage.interface": [[2, 0, 0, "-", "exceptions"], [2, 0, 0, "-", "joint"], [2, 0, 0, "-", "linkage"], [2, 0, 0, "-", "revolute_joint"]], "pylinkage.interface.exceptions": [[2, 5, 1, "", "HypostaticError"], [2, 5, 1, "", "UnbuildableError"]], "pylinkage.interface.exceptions.HypostaticError": [[2, 2, 1, "", "__init__"]], "pylinkage.interface.exceptions.UnbuildableError": [[2, 2, 1, "", "__init__"]], "pylinkage.interface.joint": [[2, 1, 1, "", "Crank"], [2, 1, 1, "", "Fixed"], [2, 1, 1, "", "Joint"], [2, 1, 1, "", "Static"]], "pylinkage.interface.joint.Crank": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 3, 1, "", "angle"], [2, 2, 1, "", "get_constraints"], [2, 3, 1, "", "r"], [2, 2, 1, "", "reload"], [2, 2, 1, "", "set_anchor0"], [2, 2, 1, "", "set_constraints"]], "pylinkage.interface.joint.Fixed": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 3, 1, "", "angle"], [2, 2, 1, "", "get_constraints"], [2, 3, 1, "", "r"], [2, 2, 1, "", "reload"], [2, 2, 1, "", "set_anchor0"], [2, 2, 1, "", "set_anchor1"], [2, 2, 1, "", "set_constraints"]], "pylinkage.interface.joint.Joint": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 2, 1, "", "coord"], [2, 2, 1, "", "get_constraints"], [2, 3, 1, "", "joint0"], [2, 3, 1, "", "joint1"], [2, 3, 1, "", "name"], [2, 2, 1, "", "set_constraints"], [2, 2, 1, "", "set_coord"], [2, 3, 1, "", "x"], [2, 3, 1, "", "y"]], "pylinkage.interface.joint.Static": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 2, 1, "", "get_constraints"], [2, 2, 1, "", "reload"], [2, 2, 1, "", "set_anchor0"], [2, 2, 1, "", "set_anchor1"], [2, 2, 1, "", "set_constraints"]], "pylinkage.interface.linkage": [[2, 1, 1, "", "Linkage"]], "pylinkage.interface.linkage.Linkage": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_cranks"], [2, 3, 1, "", "_solve_order"], [2, 2, 1, "", "get_coords"], [2, 2, 1, "", "get_num_constraints"], [2, 2, 1, "", "get_rotation_period"], [2, 2, 1, "", "hyperstaticity"], [2, 3, 1, "", "joints"], [2, 3, 1, "", "name"], [2, 2, 1, "", "rebuild"], [2, 2, 1, "", "set_completely"], [2, 2, 1, "", "set_coords"], [2, 2, 1, "", "set_num_constraints"], [2, 2, 1, "", "step"]], "pylinkage.interface.revolute_joint": [[2, 1, 1, "", "Pivot"], [2, 1, 1, "", "Revolute"]], "pylinkage.interface.revolute_joint.Pivot": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 3, 1, "", "r0"], [2, 3, 1, "", "r1"]], "pylinkage.interface.revolute_joint.Revolute": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 2, 1, "", "circle"], [2, 2, 1, "", "get_constraints"], [2, 3, 1, "", "r0"], [2, 3, 1, "", "r1"], [2, 2, 1, "", "reload"], [2, 2, 1, "", "set_anchor0"], [2, 2, 1, "", "set_anchor1"], [2, 2, 1, "", "set_constraints"]], "pylinkage.optimization": [[3, 0, 0, "-", "grid_search"], [3, 0, 0, "-", "particle_swarm"], [3, 0, 0, "-", "utils"]], "pylinkage.optimization.grid_search": [[3, 4, 1, "", "fast_variator"], [3, 4, 1, "", "sequential_variator"], [3, 4, 1, "", "tqdm_verbosity"], [3, 4, 1, "", "trials_and_errors_optimization"]], "pylinkage.optimization.particle_swarm": [[3, 4, 1, "", "particle_swarm_optimization"]], "pylinkage.optimization.utils": [[3, 4, 1, "", "generate_bounds"]], "pylinkage.utility": [[4, 4, 1, "", "bounding_box"], [4, 4, 1, "", "kinematic_default_test"], [4, 4, 1, "", "kinematic_maximization"], [4, 4, 1, "", "kinematic_minimization"], [4, 4, 1, "", "movement_bounding_bow"], [4, 4, 1, "", "movement_bounding_box"]], "pylinkage.visualizer": [[5, 4, 1, "", "_get_color"], [5, 4, 1, "", "plot_kinematic_linkage"], [5, 4, 1, "", "plot_static_linkage"], [5, 4, 1, "", "show_linkage"], [5, 4, 1, "", "swarm_tiled_repr"], [5, 4, 1, "", "update_animated_plot"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"], "5": ["py", "exception", "Python exception"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function", "5": "py:exception"}, "terms": {"": [6, 7, 9], "0": [1, 2, 3, 4, 5, 7, 8, 9], "00": 4, "01": 4, "05": [8, 9], "06": [2, 8], "07": 8, "1": [1, 2, 3, 5, 8, 9], "10": [3, 6], "100": [3, 5, 6], "11": 8, "12": [4, 5, 8], "13": [3, 5, 6], "14": [5, 8], "15": 2, "16": [2, 8], "17": [1, 3], "1997": 1, "2": [1, 2, 3, 8, 9], "20": [2, 6], "200": 3, "2019": 3, "2021": [1, 2, 4, 5, 8], "2023": 8, "21": [2, 8], "22": 8, "23": 8, "24": 5, "25": [8, 9], "27": 6, "2d": [1, 2, 6], "3": [0, 1, 3, 5, 8, 9], "31": [8, 9], "34": 1, "39": 2, "4": 8, "40": 5, "45": [1, 3], "5": [1, 3, 5, 8, 9], "51": 3, "58": 5, "6": [2, 3, 4, 6], "7": [2, 3, 4, 6], "8": [1, 3], "9": 6, "90": [8, 9], "A": [0, 2, 3, 4, 5, 6, 7, 8, 9], "And": [8, 9], "As": [8, 9], "Being": 7, "But": [8, 9], "For": [6, 7, 8, 9], "If": [2, 3, 5, 8, 9], "In": [4, 6, 8, 9], "It": [0, 1, 2, 3, 6, 8, 9], "Its": 3, "NOT": 2, "No": [0, 7], "On": [8, 9], "That": [8, 9], "The": [1, 2, 3, 4, 5, 6, 7, 8, 9], "Then": [8, 9], "There": 3, "To": [5, 8, 9], "With": [6, 8, 9], "__find_solving_order__": 6, "__init__": [0, 2, 6], "_abc": 2, "_abc_data": 2, "_abc_impl": 2, "_crank": 2, "_get_color": 5, "_solve_ord": 2, "_subplot": 5, "ab": 3, "abc": 2, "abcsic": 6, "about": 7, "abov": [8, 9], "abscissa": [1, 2], "absolut": [1, 6], "abstract": [2, 8], "abus": 7, "accept": 7, "access": 2, "account": 7, "achiev": [8, 9], "across": 2, "act": 7, "action": 7, "actual": [8, 9], "ad": 3, "adapt": 7, "add": [5, 6, 8, 9], "address": 7, "adher": 6, "advanc": 7, "advis": 6, "affect": [2, 6, 7], "after": 6, "ag": 7, "agent": [3, 5, 6, 8, 9], "aggress": 7, "align": [6, 7], "all": [2, 3, 5, 6, 7, 8, 9], "allow": [2, 6, 7], "almost": 3, "alpha": 6, "also": [2, 7, 8, 9], "alwai": 2, "ambigu": 2, "amount": 2, "amplitud": [8, 9], "an": [2, 3, 5, 6, 7, 8, 9], "anchor": 2, "angl": [1, 2, 6, 8, 9], "ani": [1, 4, 5, 7, 8, 9], "anim": [5, 6], "anoth": 6, "answer": 7, "anymor": 6, "anyth": 3, "anywai": 6, "apolog": 7, "apologi": 7, "appear": 7, "appli": [2, 7], "appoint": 7, "approach": [8, 9], "appropri": 7, "apr": 2, "ar": [1, 2, 3, 5, 6, 7, 8, 9], "arbitrari": [1, 6], "arg": [2, 3], "argument": [3, 6, 8, 9], "around": 7, "arrai": [3, 6], "article_swarm_optim": 6, "artist": 5, "ask": [6, 8, 9], "assign": [0, 2, 3, 6], "attack": 7, "attent": 7, "attribut": 8, "author": [1, 2, 3, 4, 5], "automat": [2, 5, 6, 8, 9], "avail": 7, "averag": 6, "avoid": [6, 7], "ax": [5, 6], "axessubplot": 5, "axi": [1, 2, 5], "b": [8, 9], "back": 6, "backward": 0, "bar": [6, 8, 9], "base": [0, 2, 6, 8, 9], "basi": 6, "basic": 6, "becaus": [3, 6, 8, 9], "bee": [8, 9], "been": [2, 6], "befor": [4, 5, 6], "begin": 6, "behavior": [6, 7], "behaviour": 6, "behind": [8, 9], "best": [2, 3, 6, 7, 8, 9], "beta": [6, 8, 9], "better": 3, "between": [1, 2, 3, 5, 6, 8, 9], "big": 3, "bigger": 6, "bit": [6, 8, 9], "bodi": 7, "bool": [2, 3, 5], "both": [2, 6, 8, 9], "bound": [3, 4, 6, 8, 9], "bounding_box": [4, 6, 8, 9], "bourk": 1, "box": [4, 6, 8, 9], "branch": 6, "break": 6, "build": [8, 9], "buildabl": 6, "builder": [6, 8, 9], "built": [1, 2, 3, 6, 8, 9], "bump2vers": 6, "c": [8, 9], "c1": 3, "c2": 3, "calcul": [6, 8, 9], "call": [2, 3, 8, 9], "callabl": [3, 4, 5], "can": [1, 2, 3, 6, 8, 9], "candid": [3, 8, 9], "cannot": 2, "capabl": [8, 9], "cartesian": [1, 2], "case": [0, 2, 4, 6], "caus": 6, "center": [2, 3], "certain": [8, 9], "certainli": 3, "cfg": 6, "chang": 3, "changelog": 8, "channel": 7, "characterist": [2, 7], "check": 6, "checker": 6, "choos": [6, 8, 9], "circl": [1, 2, 6, 8, 9], "circle1": 1, "circle2": 1, "circle_intersect": 1, "circlespher": 1, "circular": 2, "clarifi": 7, "clariti": 7, "class": [0, 2, 6, 7, 8, 9], "classic": [8, 9], "clear": 6, "clearli": 6, "close": [8, 9], "closer": [8, 9], "code": [6, 8, 9], "code_of_conduct": [6, 7, 8, 9], "coeffici": 3, "collect": [6, 8], "color": [5, 6], "color_switch": [5, 6], "combin": [3, 6], "come": [6, 8, 9], "comment": 7, "commit": 7, "common": [2, 3, 4, 7, 8, 9], "commun": [7, 8, 9], "compar": 3, "compat": [0, 6], "complaint": 7, "complet": [4, 6], "complex": [8, 9], "compress": [3, 6], "comput": [2, 4, 6], "conda": [6, 8, 9], "conduct": 8, "configur": 6, "confus": 6, "consecut": 3, "consequ": [6, 7], "consid": [1, 3, 6, 7, 8, 9], "consist": [2, 6, 8, 9], "consol": 3, "constant": [2, 8, 9], "constrain": [2, 6], "constraint": [2, 3, 8, 9], "construct": 7, "contain": [3, 6], "continu": [6, 7], "contribut": 7, "converg": 6, "convert": 1, "cool": [8, 9], "coord": [2, 8, 9], "coordin": [1, 2, 5, 8, 9], "corner": [8, 9], "correspond": [2, 5], "cost": 6, "could": [6, 7], "crank": [2, 5, 8, 9], "creat": [1, 2, 3, 4, 5, 8, 9], "criterion": [8, 9], "crucial": [8, 9], "curr_bb": [8, 9], "current": [2, 8, 9], "curtain": [8, 9], "custom": [0, 6], "cyl_to_cart": 1, "d": [3, 8, 9], "de": 2, "decis": 7, "decor": [4, 6, 8, 9], "deem": 7, "def": [8, 9], "default": [1, 2, 3, 5, 6], "defin": [2, 6, 8, 9], "definit": 6, "deform": [8, 9], "degre": 2, "delai": 5, "delta_dim": [3, 6], "demo": 6, "demonstr": [7, 8, 9], "denomin": 2, "deprec": [2, 3, 4], "derogatori": 7, "describ": [3, 8, 9], "descript": 5, "determin": 7, "develop": 6, "dict": 3, "dictionari": 0, "differ": [2, 7, 8, 9], "digit": 2, "dilat": [3, 6], "dim": 6, "dimens": [0, 2, 3, 5, 6, 8, 9], "dimension": [2, 8, 9], "dimension_func": 5, "disabl": [3, 6, 7], "disparag": 7, "displai": [5, 6], "dist": 1, "dist_builtin": 1, "distanc": [1, 2, 8, 9], "distance0": [2, 8, 9], "distance1": [2, 8, 9], "divers": 7, "divis": [3, 6, 8, 9], "do": [2, 6, 8, 9], "doc": 6, "docstr": 6, "document": 6, "doesn": [8, 9], "don": [8, 9], "done": 6, "download": [8, 9], "draw": [5, 8, 9], "dt": [2, 8, 9], "due": [6, 8, 9], "durat": 5, "dure": 7, "e": 7, "each": [1, 2, 3, 5, 6, 8, 9], "easi": 5, "easier": 6, "econom": 7, "edg": [8, 9], "edit": 7, "educ": 7, "effici": [6, 8, 9], "either": [2, 8, 9], "element": [0, 2, 3, 5], "els": 3, "email": 7, "empathi": 7, "emphas": [8, 9], "empti": 2, "end": 6, "enforc": 8, "engin": 2, "enough": [6, 8, 9], "env": [8, 9], "environ": [6, 7], "equal": 1, "equival": [1, 6], "error": [4, 6, 8, 9], "error_penalti": 4, "ethnic": 7, "euclidian": 1, "eval_func": [3, 6, 8, 9], "evalu": [3, 4, 8, 9], "even": [6, 8, 9], "event": 7, "everyon": 7, "everyth": [6, 8, 9], "exactli": [8, 9], "exampl": [3, 6, 7], "except": [6, 8], "execut": 6, "exhaust": [6, 8, 9], "exhaustive_optim": [6, 8, 9], "exist": [2, 6], "expand": 6, "experi": 7, "experiment": [2, 6], "explan": [7, 8, 9], "explicit": 7, "express": [2, 7], "extend": [8, 9], "extens": [1, 6], "extern": 7, "extra": 3, "extrem": [8, 9], "factor": [3, 6], "fail": 6, "fair": 7, "fairli": 7, "fals": [2, 5, 6], "faq": 7, "fast_vari": 3, "faster": [1, 5, 6], "favor": [2, 6], "featur": [8, 9], "feedback": 7, "few": [8, 9], "field": 0, "fig": 5, "figur": 5, "file": [6, 8, 9], "find": [8, 9], "finish": [2, 6, 8, 9], "finit": 6, "first": [1, 2, 6, 8, 9], "fit": [2, 4, 6, 8, 9], "fitness_func": [8, 9], "fix": [2, 8, 9], "flake8": 6, "flat": [2, 6], "flexibl": 6, "float": [0, 1, 2, 3, 4, 5, 8, 9], "fly": [8, 9], "focus": 7, "folder": 6, "follow": [3, 6, 7, 8, 9], "forc": 2, "form": [3, 8, 9], "formal": 2, "format": [3, 5, 6], "former": 6, "found": 1, "four": [8, 9], "fourbar_linkag": 6, "fp": 5, "fraction": 2, "frame": [2, 5, 6], "free": 7, "fri": [2, 3], "friendli": [2, 8, 9], "from": [1, 2, 3, 5, 6, 7, 8, 9], "full": 6, "fulli": 2, "func": 4, "function": [1, 3, 6, 8, 9], "gender": 7, "gener": [1, 2, 3, 6], "generate_bound": [3, 6, 8, 9], "geometr": [2, 3, 8, 9], "geometri": [6, 8], "get": [1, 6, 8, 9], "get_constraint": [2, 6], "get_coord": [2, 6, 8, 9], "get_num_constraint": [2, 3, 6, 8, 9], "get_po": 6, "get_rotation_period": [2, 6], "git": 6, "github": [6, 7], "gitignor": 6, "give": [2, 3, 7, 8, 9], "given": 2, "global": 6, "go": 6, "goe": 6, "good": [8, 9], "gracefulli": 7, "graph": 5, "graphic": [8, 9], "greatli": 6, "greedi": [8, 9], "grid": [8, 9], "grid_search": [3, 6], "group": 4, "guaranti": 0, "guidelin": [8, 9], "ha": [2, 3, 6], "had": 6, "handl": [6, 8, 9], "happen": [8, 9], "harass": 7, "harm": 7, "have": [3, 6, 7, 8, 9], "head": [8, 9], "header": 6, "healthi": 7, "help": 8, "here": [3, 6, 8, 9], "hesit": [8, 9], "hi": [6, 8, 9], "high": 6, "highest": 3, "highli": [1, 8, 9], "highlight": 5, "hing": 2, "histori": 6, "horizont": 2, "hour": 6, "how": [3, 8, 9], "howev": [8, 9], "html": 7, "http": [1, 7], "huge": 3, "hugofara": [1, 2, 3, 4, 5], "human": [2, 6, 8, 9], "hyperstat": [2, 6], "hypo": 2, "hypostaticerror": 2, "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "id": 2, "ident": 7, "illustr": [8, 9], "im": 5, "imag": [5, 6], "imageri": 7, "imagin": [8, 9], "immut": 6, "impact": 7, "implement": 3, "implicitli": 6, "import": [3, 6, 8, 9], "improv": 6, "inappropri": 7, "incid": 7, "includ": [4, 6, 7], "inclus": 7, "incompat": [8, 9], "index": [0, 5, 6, 8], "individu": 7, "inertia": 3, "inf": [4, 8, 9], "infin": 6, "inform": 7, "inherit": [2, 6], "ini": 6, "init_po": [8, 9], "init_posit": 0, "initi": [2, 3, 5, 6, 8, 9], "initial_coordin": 3, "input": [1, 3, 6], "insert": 6, "inspir": 7, "instanc": [6, 7, 8, 9], "instead": [5, 6], "insult": 7, "int": [1, 2, 3, 5], "integr": 6, "intend": 6, "interact": 7, "interest": [8, 9], "interfac": [6, 8], "intersect": [1, 8, 9], "interv": 5, "intial": [8, 9], "introduc": 6, "investig": 7, "invis": 7, "involv": 7, "isn": [8, 9], "issu": [6, 7, 8, 9], "issue_templ": 6, "ite": 3, "iter": [2, 3, 4, 5, 6, 8, 9], "iteration_factor": 5, "its": [2, 6, 8, 9], "joint": [5, 6], "joint0": [2, 8, 9], "joint1": [2, 8, 9], "jul": 4, "jun": [2, 5], "just": [7, 8, 9], "keep": [2, 6, 8, 9], "keyword": 3, "kind": [2, 6, 7], "kinemat": [2, 4, 6, 8, 9], "kinematic_default_test": 4, "kinematic_maxim": 4, "kinematic_minim": [4, 6], "kinematic_minimizast": [8, 9], "kinematic_optimizatino": 6, "know": [2, 8, 9], "known": 6, "kwarg": [3, 8, 9], "ladder": 7, "languag": [7, 8, 9], "larg": [8, 9], "last": [6, 8, 9], "launch": 6, "lead": 7, "leader": [3, 7], "learn": [3, 7], "least": [8, 9], "legaci": [1, 6, 8, 9], "legend": [5, 6], "leggedsnak": 6, "len": [3, 5], "less": 6, "let": [3, 6, 8, 9], "level": 7, "lib": 6, "librari": [8, 9], "licens": 6, "life": 6, "like": [7, 8, 9], "line": [8, 9], "link": [2, 6, 9], "linkag": [0, 3, 6], "lint": 6, "list": [2, 3, 4, 5], "ljvmiranda921": [8, 9], "local": [2, 3], "localbestpso": 3, "locat": 2, "loci": [4, 5, 6, 8, 9], "locu": [4, 8, 9], "locus_highlight": [5, 6], "longer": 6, "look": [3, 8, 9], "loop": [8, 9], "lot": 6, "lower": [8, 9], "lower_bound": 3, "made": [8, 9], "magic": [8, 9], "mai": [1, 2, 6, 7, 8, 9], "mail": 7, "main": [6, 8, 9], "mainli": 3, "make": [2, 3, 4, 5, 6, 7, 8, 9], "mandatori": 6, "mani": [6, 8, 9], "manifest": 6, "manual": 2, "mar": 3, "mast": [8, 9], "master": 6, "math": 1, "mathemat": [6, 8, 9], "matplotlib": [5, 6, 8, 9], "matt": 1, "max": 3, "max_dim": 3, "max_factor": 3, "max_i": [8, 9], "max_x": [8, 9], "maxim": [3, 6], "md": [6, 8, 9], "mechan": [8, 9], "media": 7, "member": 7, "mention": 6, "mere": 6, "messag": [2, 6], "method": [1, 2, 6, 8, 9], "middl": 3, "millisecond": 5, "min": [3, 8, 9], "min_dim": 3, "min_i": [8, 9], "min_ratio": 3, "min_x": [8, 9], "minim": [3, 6, 8, 9], "minimum": [8, 9], "minor": 6, "misbehav": 6, "miss": 6, "mistak": 7, "mit": 6, "mode": [2, 5], "moder": 7, "modifi": [3, 5, 6], "modul": [2, 4, 5, 6, 9], "mon": [4, 5], "more": [6, 8, 9], "most": 6, "mostli": 2, "motor": [2, 6, 8, 9], "move": [2, 6, 8, 9], "movement": [5, 8, 9], "movement_bounding_bow": [4, 6], "movement_bounding_box": [4, 6], "mozilla": 7, "much": [6, 8, 9], "multipl": [2, 6], "mutabl": [0, 6], "mutable_ag": 0, "mutableag": [3, 6, 8], "my": [8, 9], "my_linkag": [8, 9], "n": [8, 9], "n_particl": 3, "n_result": [3, 8, 9], "name": [2, 6, 8, 9], "namedtupl": [0, 6], "nation": 7, "natur": 7, "navig": 6, "need": [2, 6, 8, 9], "neg": 6, "neighbor": [3, 8, 9], "net": 1, "new": 6, "none": [0, 1, 2, 3, 5], "norm": 1, "notabl": 6, "note": [8, 9], "noth": 2, "notic": [8, 9], "now": [6, 8, 9], "num_constraint": 3, "number": [2, 3, 5, 6, 8, 9], "numer": 2, "numpi": [8, 9], "numpydoc": 6, "o": 2, "obj_1": 1, "obj_2": 1, "object": [0, 1, 2, 6, 8, 9], "oblig": 7, "offens": 7, "offer": [8, 9], "offici": [6, 7], "offlin": 7, "often": [3, 6, 8, 9], "onc": [8, 9], "one": [1, 2, 6, 8, 9], "onli": [0, 2, 3, 6, 8, 9], "onlin": 7, "open": [7, 8, 9], "opinion": 7, "optim": [0, 1, 6], "option": [2, 5, 6, 8, 9], "order": [2, 3, 6, 8, 9], "order_rel": [3, 6, 8, 9], "ordin": [2, 6], "org": 7, "organ": 6, "ori": 1, "orient": [2, 7], "origin": [1, 2, 5], "ot": 6, "other": [0, 2, 7], "otherwis": [7, 8, 9], "our": [8, 9], "output": [3, 5, 6], "over": [2, 6], "overal": 7, "own": [2, 6], "packag": [6, 8, 9], "pad": 6, "page": [6, 8], "paramet": [1, 3, 4, 5, 6, 8, 9], "parent": [2, 8, 9], "part": [2, 8, 9], "particip": 7, "particl": [6, 8, 9], "particle_swarm": [3, 6], "particle_swarm_optim": [3, 6, 8, 9], "particularli": [8, 9], "pass": [2, 3, 4, 5, 8, 9], "path": [6, 8, 9], "pattern": 7, "paul": 1, "paulbourk": 1, "penalti": [4, 8, 9], "peopl": 7, "per": 5, "perfect": 6, "period": [2, 7], "permiss": 7, "person": 7, "perspect": 6, "physic": 7, "pin": [2, 8, 9], "pivot": [2, 6, 8, 9], "pl": [8, 9], "plai": [8, 9], "planar": [8, 9], "pleas": [8, 9], "pledg": 8, "plot": [5, 6], "plot_kinematic_linkag": [5, 6], "plot_static_linkag": [5, 6], "plotter": 8, "po": [2, 6, 8, 9], "point": [1, 2, 4, 5, 6, 8, 9], "point1": 1, "point2": 1, "polar": 1, "polit": 7, "poorli": 6, "posit": [2, 3, 5, 6, 7, 8, 9], "possibl": [2, 3, 6, 8, 9], "post": [7, 8, 9], "preassign": 0, "precis": 2, "preserv": 2, "prev": 5, "previou": [2, 5, 6, 8, 9], "principl": [8, 9], "print": [3, 6], "privaci": 7, "privat": 7, "problem": [3, 6, 8, 9], "profession": 7, "program": 1, "progress": [6, 8, 9], "project": [2, 6], "promptli": 7, "properli": 6, "propos": [8, 9], "provid": [1, 4, 6, 7, 8, 9], "pso": [3, 6, 8, 9], "public": 7, "publish": [6, 7], "pull": [8, 9], "purpos": [8, 9], "put": [8, 9], "py": [6, 8, 9], "pycharm": 6, "pylinkag": [0, 1, 2, 3, 4, 5, 6], "pypi": [6, 8, 9], "pyproject": 6, "pyswarm": [3, 6, 8, 9], "python": [1, 6, 8, 9], "quadrant": [8, 9], "quarter": [8, 9], "question": 7, "quick": 2, "quicker": 6, "r": 2, "r0": 2, "r1": 2, "race": 7, "radian": [2, 8, 9], "radiu": [1, 2], "rais": [2, 6], "randomli": 3, "rare": [8, 9], "rate": 6, "ratio": 3, "readabl": 2, "readm": [6, 8], "real": 5, "rearrang": [8, 9], "reason": [7, 8, 9], "rebuild": 2, "recap": [8, 9], "recat": 2, "receiv": [6, 8, 9], "recommend": [6, 8, 9], "recreat": 5, "redefin": 2, "ref_bb": [8, 9], "ref_po": [8, 9], "refer": [2, 3, 8, 9], "regardless": 7, "regener": 6, "reject": 7, "rel": [2, 6], "relat": 6, "relev": [8, 9], "religion": 7, "reload": [2, 6, 8, 9], "rememb": [8, 9], "remov": [2, 3, 4, 7], "renam": 6, "reorgan": 6, "replac": [4, 6], "report": 7, "repr_polar_swarm": 6, "repres": 7, "represent": [2, 6], "request": [7, 8, 9], "requir": 6, "reset": [8, 9], "resolut": 2, "resourc": [8, 9], "respect": [7, 8, 9], "respons": 8, "rest": 6, "result": [3, 5, 6, 8, 9], "return": [1, 3, 4, 5, 6, 8, 9], "revamp": 6, "review": 7, "revolut": [5, 6, 8], "revolute_joint": [2, 6], "right": [7, 8, 9], "risk": 6, "robust": [6, 8, 9], "rocker": [8, 9], "role": [8, 9], "rotat": [2, 6, 8, 9], "roughli": 0, "run": [2, 4, 5, 6, 8, 9], "sai": [8, 9], "same": [4, 6], "satisfactori": 6, "satisfi": 2, "save": [5, 6, 8, 9], "scalar": 2, "scope": 8, "score": [0, 3, 5, 6, 8, 9], "script": 6, "search": [5, 8, 9], "second": [1, 2, 5, 6, 8, 9], "secur": 7, "see": [5, 6, 7, 8, 9], "seem": [6, 8, 9], "seen": 6, "segment": [8, 9], "self": 2, "semant": 6, "sens": [8, 9], "separ": [6, 8, 9], "sequenc": [2, 3, 5], "sequenci": [8, 9], "sequenti": 3, "sequential_vari": 3, "seri": 7, "serial": [8, 9], "seriou": 7, "set": [2, 3, 5, 6, 7], "set_anchor0": 2, "set_anchor1": 2, "set_complet": [2, 6], "set_constraint": [2, 6], "set_coord": [2, 6, 8, 9], "set_num_constraint": [2, 6, 8, 9], "setup": 6, "sex": 7, "sexual": 7, "shape": 3, "shorter": [8, 9], "should": [0, 1, 2, 3, 5, 6, 8, 9], "show": [5, 6, 8, 9], "show_legend": 5, "show_linkag": [5, 8, 9], "sidebar": 6, "signatur": 6, "similar": 6, "simpl": [2, 3, 6, 8, 9], "simplif": 6, "simplifi": [6, 8, 9], "simul": 4, "sinc": [2, 3, 4], "singl": [3, 7, 8, 9], "size": [3, 7], "small": 3, "so": [1, 2, 3, 6, 8, 9], "social": [3, 7], "socio": 7, "solut": [2, 6, 8, 9], "solv": [2, 8, 9], "some": [6, 8, 9], "someth": [8, 9], "sometim": 6, "sort": 7, "sourc": [6, 8], "space": [2, 3, 7, 8, 9], "special": [2, 5], "specif": 6, "specifi": [3, 6, 7, 8, 9], "sphinx": 6, "split": 6, "sqr_dist": 1, "squar": [1, 8, 9], "stai": [8, 9], "standard": [2, 4, 6, 8, 9], "start": [1, 8, 9], "state": [2, 3], "static": [2, 6], "statu": 7, "step": [2, 3, 5, 6, 8, 9], "still": [8, 9], "stop": [6, 8, 9], "str": [2, 5], "strider": 6, "structur": [2, 4], "style": 6, "subdivid": 5, "subdivis": [3, 6, 8, 9], "subplot": 5, "subscript": 0, "subset": 2, "sugar": 6, "sum": [8, 9], "support": [0, 5, 8, 9], "sure": 3, "sustain": 7, "swarm": [5, 6, 8, 9], "swarm_tiled_repr": [5, 6], "switch": [8, 9], "syntact": 6, "system": 2, "t": [2, 6, 8, 9], "tadaaa": [8, 9], "tag": 6, "tail": [8, 9], "take": [2, 3, 6, 7, 8, 9], "target": 6, "techniqu": [8, 9], "templat": 6, "term": [2, 7], "test": [6, 8, 9], "test_converg": 6, "test_geometri": 6, "test_linkag": 6, "test_optim": 6, "testpso": 6, "than": [1, 3, 8, 9], "thank": 6, "thei": [2, 5, 6, 7, 8, 9], "them": [2, 5, 8, 9], "theoret": [8, 9], "thereaft": 2, "theta": 1, "thi": [2, 3, 4, 6, 7, 8, 9], "thing": [8, 9], "think": [8, 9], "those": 7, "threaten": 7, "three": [8, 9], "through": 7, "tile": 5, "time": [6, 7, 8, 9], "tip_locu": [8, 9], "titl": 5, "todai": [8, 9], "togeth": [8, 9], "tol": 1, "toler": [1, 3], "toml": 6, "too": 3, "top": [8, 9], "toward": 7, "tox": 6, "tqdm": [3, 6], "tqdm_verbos": [3, 6], "transcript": 1, "transit": 6, "translat": 7, "trial": [6, 8, 9], "trials_and_error": 6, "trials_and_error_optim": 6, "trials_and_errors_optim": [3, 6, 8, 9], "trials_and_errors_optimizatt": 6, "triangl": [8, 9], "trick": [8, 9], "trigonometr": 2, "troll": 7, "true": [2, 3, 6], "try": [8, 9], "tupl": [0, 1, 2, 3, 4, 8, 9], "turn": [2, 8, 9], "two": [1, 2, 3, 6, 8, 9], "txt": 6, "type": [1, 2, 3, 4, 5, 6], "typo": 6, "u": [2, 7], "ugli": 6, "unabl": 2, "unaccept": 7, "unbuild": 4, "unbuildableerror": 2, "under": [1, 2], "uniform": 0, "union": 2, "unittest": 6, "unoptim": 1, "unprofession": 7, "unreleas": 8, "unsolicit": 7, "unus": 2, "unwelcom": 7, "updat": [5, 6, 8, 9], "update_animated_plot": 5, "upl": 3, "uplet": [3, 8, 9], "upper": 3, "upper_bound": 3, "us": [0, 1, 2, 3, 4, 5, 6, 7], "useless": 5, "user": [2, 6], "util": [6, 8], "valid": 6, "valu": [1, 2, 3, 4, 5, 6], "vari": [3, 8, 9], "variabl": 6, "variat": [3, 6], "variou": [6, 8], "vec": 1, "vectori": [8, 9], "verbos": [3, 6], "veri": [3, 6], "verifi": [8, 9], "version": [2, 3, 4, 5, 6, 7], "vertic": 2, "via": 7, "video": 5, "view": [2, 6, 8, 9], "viewpoint": 7, "violat": 7, "violent": 3, "visibl": 7, "visual": 6, "vizual": 6, "vulner": 6, "w": 3, "wa": [4, 6, 7], "wai": [2, 5, 6, 7, 8, 9], "wait": [8, 9], "walkthrough": 6, "want": [2, 3, 5, 8, 9], "warn": 6, "wasn": 6, "we": [2, 3, 5, 6, 7, 8, 9], "websit": 6, "wed": [1, 2], "welcom": 7, "well": [6, 7], "were": [6, 7], "what": [7, 8, 9], "when": [1, 2, 5, 6, 7, 8, 9], "whether": 2, "which": [1, 2, 3, 7, 8, 9], "whole": 2, "why": [7, 8, 9], "wiki": 7, "windshield": [8, 9], "wiper": [8, 9], "within": 7, "without": [5, 6, 7, 8, 9], "won": 2, "wonder": [8, 9], "woodhead": 1, "work": [6, 8, 9], "workflow": 6, "would": [6, 8, 9], "wrapper": [3, 6, 8, 9], "write": [8, 9], "written": 7, "wrongli": 6, "www": 7, "x": [2, 3, 6, 8, 9], "x_max": 4, "x_min": 4, "y": [2, 6, 8, 9], "y_max": 4, "y_min": 4, "yet": 6, "yml": [6, 8, 9], "you": [0, 2, 3, 5, 6, 8, 9], "your": [6, 8, 9], "yourself": [8, 9], "zip": [8, 9]}, "titles": ["collections", "geometry", "interface", "optimization", "utility", "visualizer", "Changelog", "Contributor Covenant Code of Conduct", "Welcome to pylinkage\u2019s documentation!", "Pylinkage"], "titleterms": {"": 8, "0": 6, "05": 6, "06": 6, "07": 6, "1": [6, 7], "11": 6, "12": 6, "14": 6, "16": 6, "2": [6, 7], "2021": 6, "2023": 6, "21": 6, "22": 6, "23": 6, "3": [6, 7], "4": [6, 7], "5": 6, "abstract": 1, "ad": 6, "agent": 0, "argument": 2, "attribut": 7, "ban": 7, "base": 1, "chang": 6, "changelog": 6, "code": 7, "collect": 0, "complet": [8, 9], "conduct": 7, "contribut": [8, 9], "contributor": 7, "correct": 7, "coven": 7, "definit": [2, 8, 9], "demo": [8, 9], "deprec": 6, "document": 8, "enforc": 7, "environ": [8, 9], "error": 3, "exampl": [8, 9], "except": 2, "fix": 6, "function": 4, "geometr": 1, "geometri": 1, "grid": 3, "guidelin": 7, "handl": 4, "help": 4, "indic": 8, "instal": [8, 9], "interfac": 2, "introduct": 8, "joint": [2, 8, 9], "link": 8, "linkag": [2, 4, 5, 8, 9], "modul": [1, 8], "mutableag": 0, "optim": [3, 8, 9], "our": 7, "paramet": 2, "particl": 3, "perman": 7, "pip": [8, 9], "pledg": 7, "plotter": 5, "pylinkag": [8, 9], "quick": 8, "remov": 6, "requir": [8, 9], "respons": 7, "return": 2, "revolut": 2, "scope": 7, "search": 3, "set": [8, 9], "short": [8, 9], "simpl": 5, "simul": [8, 9], "standard": 7, "structur": [8, 9], "swarm": 3, "tabl": 8, "temporari": 7, "trial": 3, "unreleas": 6, "up": [8, 9], "us": [8, 9], "util": [3, 4], "variou": 4, "virtual": [8, 9], "visual": [5, 8, 9], "warn": 7, "welcom": 8, "you": 4, "your": 5}}) \ No newline at end of file +Search.setIndex({"alltitles": {"1. Correction": [[7, "correction"]], "2. Warning": [[7, "warning"]], "3. Temporary Ban": [[7, "temporary-ban"]], "4. Permanent Ban": [[7, "permanent-ban"]], "Added": [[6, "added"]], "Added in 0.0.1": [[6, "added-in-0-0-1"]], "Added in 0.2.0": [[6, "added-in-0-2-0"]], "Added in 0.2.1": [[6, "added-in-0-2-1"]], "Added in 0.2.2": [[6, "added-in-0-2-2"]], "Added in 0.3.0": [[6, "added-in-0-3-0"]], "Added in 0.4.0": [[6, "added-in-0-4-0"]], "Added in 0.4.1": [[6, "added-in-0-4-1"]], "Added in 0.5.0": [[6, "added-in-0-5-0"]], "Added in 0.5.1": [[6, "added-in-0-5-1"]], "Added in 0.5.2": [[6, "added-in-0-5-2"]], "Added in 0.5.3": [[6, "added-in-0-5-3"]], "Agent": [[0, "module-pylinkage.collections.agent"]], "Arguments": [[2, "arguments"], [2, "id1"]], "Attribution": [[7, "attribution"]], "Base module for geometric abstractions": [[1, "module-pylinkage.geometry"]], "Changed": [[6, "changed"]], "Changed in 0.2.0": [[6, "changed-in-0-2-0"]], "Changed in 0.2.1": [[6, "changed-in-0-2-1"]], "Changed in 0.3.0": [[6, "changed-in-0-3-0"]], "Changed in 0.4.0": [[6, "changed-in-0-4-0"]], "Changed in 0.4.1": [[6, "changed-in-0-4-1"]], "Changed in 0.5.0": [[6, "changed-in-0-5-0"]], "Changed in 0.5.1": [[6, "changed-in-0-5-1"]], "Changed in 0.5.2": [[6, "changed-in-0-5-2"]], "Changed in 0.5.3": [[6, "changed-in-0-5-3"]], "Changelog": [[6, null]], "Complete example": [[8, "complete-example"], [9, "complete-example"]], "Contributing": [[8, "contributing"], [9, "contributing"]], "Contributor Covenant Code of Conduct": [[7, null]], "Deprecated": [[6, "deprecated"]], "Deprecated in 0.5.3": [[6, "deprecated-in-0-5-3"]], "Enforcement": [[7, "enforcement"]], "Enforcement Guidelines": [[7, "enforcement-guidelines"]], "Enforcement Responsibilities": [[7, "enforcement-responsibilities"]], "Exceptions": [[2, "module-pylinkage.interface.exceptions"]], "Fixed": [[6, "fixed"]], "Fixed in 0.2.1": [[6, "fixed-in-0-2-1"]], "Fixed in 0.2.2": [[6, "fixed-in-0-2-2"]], "Fixed in 0.3.0": [[6, "fixed-in-0-3-0"]], "Fixed in 0.4.0": [[6, "fixed-in-0-4-0"]], "Fixed in 0.5.0": [[6, "fixed-in-0-5-0"]], "Fixed in 0.5.3": [[6, "fixed-in-0-5-3"]], "Indices and tables": [[8, "indices-and-tables"]], "Installation": [[8, "installation"], [9, "installation"]], "Introduction": [[8, null]], "Joint definition": [[2, "module-pylinkage.interface.joint"]], "Joints definition": [[8, "joints-definition"], [9, "joints-definition"]], "Linkage definition": [[2, "module-pylinkage.interface.linkage"]], "Linkage definition and simulation": [[8, "linkage-definition-and-simulation"], [9, "linkage-definition-and-simulation"]], "Modules": [[8, null]], "MutableAgent": [[0, "module-pylinkage.collections.mutable_agent"]], "Optimization": [[8, "optimization"], [9, "optimization"]], "Our Pledge": [[7, "our-pledge"]], "Our Standards": [[7, "our-standards"]], "Parameters": [[2, "parameters"]], "Particle Swarm Optimization": [[3, "module-pylinkage.optimization.particle_swarm"]], "Pylinkage": [[8, "pylinkage"], [9, null]], "Quick Links": [[8, null]], "Removed in 0.4.0": [[6, "removed-in-0-4-0"]], "Requirements": [[8, "requirements"], [9, "requirements"]], "Returns": [[2, "returns"]], "Revolute joint definition": [[2, "module-pylinkage.interface.revolute_joint"]], "Scope": [[7, "scope"]], "Setting up Virtual Environment": [[8, "setting-up-virtual-environment"], [9, "setting-up-virtual-environment"]], "Short demo": [[8, "short-demo"], [9, "short-demo"]], "Simple plotter for your linkages": [[5, "module-pylinkage.visualizer"]], "Structure": [[8, "structure"], [9, "structure"]], "Trials and errors (grid search)": [[3, "module-pylinkage.optimization.grid_search"]], "Using pip": [[8, "using-pip"], [9, "using-pip"]], "Utility": [[3, "module-pylinkage.optimization.utils"]], "Various functions to help you handle linkages": [[4, "module-pylinkage.utility"]], "Visualization": [[8, "visualization"], [9, "visualization"]], "Welcome to pylinkage\u2019s documentation!": [[8, null]], "[0.0.1] - 2021-06-12": [[6, "id11"]], "[0.2.0] - 2021-06-14": [[6, "id10"]], "[0.2.1] - 2021-06-16": [[6, "id9"]], "[0.2.2] - 2021-06-22": [[6, "id8"]], "[0.3.0] - 2021-07-05": [[6, "id7"]], "[0.4.0] - 2021-07-06": [[6, "id6"]], "[0.4.1] - 2021-07-11": [[6, "id5"]], "[0.5.0] - 2021-07-12": [[6, "id4"]], "[0.5.1] - 2021-07-14": [[6, "id3"]], "[0.5.2] - 2021-07-21": [[6, "id2"]], "[0.5.3] - 2023-06-23": [[6, "id1"]], "[Unreleased]": [[6, "unreleased"]], "collections": [[0, null]], "geometry": [[1, null]], "interface": [[2, null]], "optimization": [[3, null]], "utility": [[4, null]], "visualizer": [[5, null]]}, "docnames": ["api/collections", "api/geometry", "api/interface", "api/optimization", "api/utility", "api/visualizer", "changeloglink", "code_of_conductlink", "index", "readmelink"], "envversion": {"sphinx": 63, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["api/collections.rst", "api/geometry.rst", "api/interface.rst", "api/optimization.rst", "api/utility.rst", "api/visualizer.rst", "changeloglink.rst", "code_of_conductlink.rst", "index.rst", "readmelink.rst"], "indexentries": {"__init__() (pylinkage.collections.mutable_agent.mutableagent method)": [[0, "pylinkage.collections.mutable_agent.MutableAgent.__init__", false]], "__init__() (pylinkage.interface.exceptions.hypostaticerror method)": [[2, "pylinkage.interface.exceptions.HypostaticError.__init__", false]], "__init__() (pylinkage.interface.exceptions.unbuildableerror method)": [[2, "pylinkage.interface.exceptions.UnbuildableError.__init__", false]], "__init__() (pylinkage.interface.joint.crank method)": [[2, "pylinkage.interface.joint.Crank.__init__", false]], "__init__() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.__init__", false]], "__init__() (pylinkage.interface.joint.joint method)": [[2, "pylinkage.interface.joint.Joint.__init__", false]], "__init__() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.__init__", false]], "__init__() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.__init__", false]], "__init__() (pylinkage.interface.revolute_joint.pivot method)": [[2, "pylinkage.interface.revolute_joint.Pivot.__init__", false]], "__init__() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.__init__", false]], "_abc_impl (pylinkage.interface.joint.crank attribute)": [[2, "pylinkage.interface.joint.Crank._abc_impl", false]], "_abc_impl (pylinkage.interface.joint.fixed attribute)": [[2, "pylinkage.interface.joint.Fixed._abc_impl", false]], "_abc_impl (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint._abc_impl", false]], "_abc_impl (pylinkage.interface.joint.static attribute)": [[2, "pylinkage.interface.joint.Static._abc_impl", false]], "_abc_impl (pylinkage.interface.revolute_joint.pivot attribute)": [[2, "pylinkage.interface.revolute_joint.Pivot._abc_impl", false]], "_abc_impl (pylinkage.interface.revolute_joint.revolute attribute)": [[2, "pylinkage.interface.revolute_joint.Revolute._abc_impl", false]], "_cranks (pylinkage.interface.linkage.linkage attribute)": [[2, "pylinkage.interface.linkage.Linkage._cranks", false]], "_get_color() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer._get_color", false]], "_solve_order (pylinkage.interface.linkage.linkage attribute)": [[2, "pylinkage.interface.linkage.Linkage._solve_order", false]], "agent (class in pylinkage.collections.agent)": [[0, "pylinkage.collections.agent.Agent", false]], "angle (pylinkage.interface.joint.crank attribute)": [[2, "pylinkage.interface.joint.Crank.angle", false]], "angle (pylinkage.interface.joint.fixed attribute)": [[2, "pylinkage.interface.joint.Fixed.angle", false]], "bounding_box() (in module pylinkage.utility)": [[4, "pylinkage.utility.bounding_box", false]], "circle() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.circle", false]], "circle_intersect() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.circle_intersect", false]], "coord() (pylinkage.interface.joint.joint method)": [[2, "pylinkage.interface.joint.Joint.coord", false]], "crank (class in pylinkage.interface.joint)": [[2, "pylinkage.interface.joint.Crank", false]], "cyl_to_cart() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.cyl_to_cart", false]], "dimensions (pylinkage.collections.mutable_agent.mutableagent attribute)": [[0, "pylinkage.collections.mutable_agent.MutableAgent.dimensions", false]], "dist_builtin() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.dist_builtin", false]], "fast_variator() (in module pylinkage.optimization.grid_search)": [[3, "pylinkage.optimization.grid_search.fast_variator", false]], "fixed (class in pylinkage.interface.joint)": [[2, "pylinkage.interface.joint.Fixed", false]], "generate_bounds() (in module pylinkage.optimization.utils)": [[3, "pylinkage.optimization.utils.generate_bounds", false]], "get_constraints() (pylinkage.interface.joint.crank method)": [[2, "pylinkage.interface.joint.Crank.get_constraints", false]], "get_constraints() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.get_constraints", false]], "get_constraints() (pylinkage.interface.joint.joint method)": [[2, "pylinkage.interface.joint.Joint.get_constraints", false]], "get_constraints() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.get_constraints", false]], "get_constraints() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.get_constraints", false]], "get_coords() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.get_coords", false]], "get_num_constraints() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.get_num_constraints", false]], "get_rotation_period() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.get_rotation_period", false]], "hyperstaticity() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.hyperstaticity", false]], "hypostaticerror": [[2, "pylinkage.interface.exceptions.HypostaticError", false]], "init_positions (pylinkage.collections.mutable_agent.mutableagent attribute)": [[0, "pylinkage.collections.mutable_agent.MutableAgent.init_positions", false]], "intersection() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.intersection", false]], "joint (class in pylinkage.interface.joint)": [[2, "pylinkage.interface.joint.Joint", false]], "joint0 (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint.joint0", false]], "joint1 (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint.joint1", false]], "joints (pylinkage.interface.linkage.linkage attribute)": [[2, "pylinkage.interface.linkage.Linkage.joints", false]], "kinematic_default_test() (in module pylinkage.utility)": [[4, "pylinkage.utility.kinematic_default_test", false]], "kinematic_maximization() (in module pylinkage.utility)": [[4, "pylinkage.utility.kinematic_maximization", false]], "kinematic_minimization() (in module pylinkage.utility)": [[4, "pylinkage.utility.kinematic_minimization", false]], "linkage (class in pylinkage.interface.linkage)": [[2, "pylinkage.interface.linkage.Linkage", false]], "module": [[0, "module-pylinkage.collections.agent", false], [0, "module-pylinkage.collections.mutable_agent", false], [1, "module-pylinkage.geometry", false], [2, "module-pylinkage.interface.exceptions", false], [2, "module-pylinkage.interface.joint", false], [2, "module-pylinkage.interface.linkage", false], [2, "module-pylinkage.interface.revolute_joint", false], [3, "module-pylinkage.optimization.grid_search", false], [3, "module-pylinkage.optimization.particle_swarm", false], [3, "module-pylinkage.optimization.utils", false], [4, "module-pylinkage.utility", false], [5, "module-pylinkage.visualizer", false]], "movement_bounding_bow() (in module pylinkage.utility)": [[4, "pylinkage.utility.movement_bounding_bow", false]], "movement_bounding_box() (in module pylinkage.utility)": [[4, "pylinkage.utility.movement_bounding_box", false]], "mutableagent (class in pylinkage.collections.mutable_agent)": [[0, "pylinkage.collections.mutable_agent.MutableAgent", false]], "name (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint.name", false]], "name (pylinkage.interface.linkage.linkage attribute)": [[2, "pylinkage.interface.linkage.Linkage.name", false]], "norm() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.norm", false]], "particle_swarm_optimization() (in module pylinkage.optimization.particle_swarm)": [[3, "pylinkage.optimization.particle_swarm.particle_swarm_optimization", false]], "pivot (class in pylinkage.interface.revolute_joint)": [[2, "pylinkage.interface.revolute_joint.Pivot", false]], "plot_kinematic_linkage() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer.plot_kinematic_linkage", false]], "plot_static_linkage() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer.plot_static_linkage", false]], "pylinkage.collections.agent": [[0, "module-pylinkage.collections.agent", false]], "pylinkage.collections.mutable_agent": [[0, "module-pylinkage.collections.mutable_agent", false]], "pylinkage.geometry": [[1, "module-pylinkage.geometry", false]], "pylinkage.interface.exceptions": [[2, "module-pylinkage.interface.exceptions", false]], "pylinkage.interface.joint": [[2, "module-pylinkage.interface.joint", false]], "pylinkage.interface.linkage": [[2, "module-pylinkage.interface.linkage", false]], "pylinkage.interface.revolute_joint": [[2, "module-pylinkage.interface.revolute_joint", false]], "pylinkage.optimization.grid_search": [[3, "module-pylinkage.optimization.grid_search", false]], "pylinkage.optimization.particle_swarm": [[3, "module-pylinkage.optimization.particle_swarm", false]], "pylinkage.optimization.utils": [[3, "module-pylinkage.optimization.utils", false]], "pylinkage.utility": [[4, "module-pylinkage.utility", false]], "pylinkage.visualizer": [[5, "module-pylinkage.visualizer", false]], "r (pylinkage.interface.joint.crank attribute)": [[2, "pylinkage.interface.joint.Crank.r", false]], "r (pylinkage.interface.joint.fixed attribute)": [[2, "pylinkage.interface.joint.Fixed.r", false]], "r0 (pylinkage.interface.revolute_joint.pivot attribute)": [[2, "pylinkage.interface.revolute_joint.Pivot.r0", false]], "r0 (pylinkage.interface.revolute_joint.revolute attribute)": [[2, "pylinkage.interface.revolute_joint.Revolute.r0", false]], "r1 (pylinkage.interface.revolute_joint.pivot attribute)": [[2, "pylinkage.interface.revolute_joint.Pivot.r1", false]], "r1 (pylinkage.interface.revolute_joint.revolute attribute)": [[2, "pylinkage.interface.revolute_joint.Revolute.r1", false]], "rebuild() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.rebuild", false]], "reload() (pylinkage.interface.joint.crank method)": [[2, "pylinkage.interface.joint.Crank.reload", false]], "reload() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.reload", false]], "reload() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.reload", false]], "reload() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.reload", false]], "revolute (class in pylinkage.interface.revolute_joint)": [[2, "pylinkage.interface.revolute_joint.Revolute", false]], "score (pylinkage.collections.mutable_agent.mutableagent attribute)": [[0, "pylinkage.collections.mutable_agent.MutableAgent.score", false]], "sequential_variator() (in module pylinkage.optimization.grid_search)": [[3, "pylinkage.optimization.grid_search.sequential_variator", false]], "set_anchor0() (pylinkage.interface.joint.crank method)": [[2, "pylinkage.interface.joint.Crank.set_anchor0", false]], "set_anchor0() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.set_anchor0", false]], "set_anchor0() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.set_anchor0", false]], "set_anchor0() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.set_anchor0", false]], "set_anchor1() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.set_anchor1", false]], "set_anchor1() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.set_anchor1", false]], "set_anchor1() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.set_anchor1", false]], "set_completely() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.set_completely", false]], "set_constraints() (pylinkage.interface.joint.crank method)": [[2, "pylinkage.interface.joint.Crank.set_constraints", false]], "set_constraints() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.set_constraints", false]], "set_constraints() (pylinkage.interface.joint.joint method)": [[2, "pylinkage.interface.joint.Joint.set_constraints", false]], "set_constraints() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.set_constraints", false]], "set_constraints() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.set_constraints", false]], "set_coord() (pylinkage.interface.joint.joint method)": [[2, "pylinkage.interface.joint.Joint.set_coord", false]], "set_coords() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.set_coords", false]], "set_num_constraints() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.set_num_constraints", false]], "show_linkage() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer.show_linkage", false]], "sqr_dist() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.sqr_dist", false]], "static (class in pylinkage.interface.joint)": [[2, "pylinkage.interface.joint.Static", false]], "step() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.step", false]], "swarm_tiled_repr() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer.swarm_tiled_repr", false]], "tqdm_verbosity() (in module pylinkage.optimization.grid_search)": [[3, "pylinkage.optimization.grid_search.tqdm_verbosity", false]], "trials_and_errors_optimization() (in module pylinkage.optimization.grid_search)": [[3, "pylinkage.optimization.grid_search.trials_and_errors_optimization", false]], "unbuildableerror": [[2, "pylinkage.interface.exceptions.UnbuildableError", false]], "update_animated_plot() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer.update_animated_plot", false]], "x (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint.x", false]], "y (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint.y", false]]}, "objects": {"pylinkage": [[1, 0, 0, "-", "geometry"], [4, 0, 0, "-", "utility"], [5, 0, 0, "-", "visualizer"]], "pylinkage.collections": [[0, 0, 0, "-", "agent"], [0, 0, 0, "-", "mutable_agent"]], "pylinkage.collections.agent": [[0, 1, 1, "", "Agent"]], "pylinkage.collections.mutable_agent": [[0, 1, 1, "", "MutableAgent"]], "pylinkage.collections.mutable_agent.MutableAgent": [[0, 2, 1, "", "__init__"], [0, 3, 1, "", "dimensions"], [0, 3, 1, "", "init_positions"], [0, 3, 1, "", "score"]], "pylinkage.geometry": [[1, 4, 1, "", "circle_intersect"], [1, 4, 1, "", "cyl_to_cart"], [1, 4, 1, "", "dist_builtin"], [1, 4, 1, "", "intersection"], [1, 4, 1, "", "norm"], [1, 4, 1, "", "sqr_dist"]], "pylinkage.interface": [[2, 0, 0, "-", "exceptions"], [2, 0, 0, "-", "joint"], [2, 0, 0, "-", "linkage"], [2, 0, 0, "-", "revolute_joint"]], "pylinkage.interface.exceptions": [[2, 5, 1, "", "HypostaticError"], [2, 5, 1, "", "UnbuildableError"]], "pylinkage.interface.exceptions.HypostaticError": [[2, 2, 1, "", "__init__"]], "pylinkage.interface.exceptions.UnbuildableError": [[2, 2, 1, "", "__init__"]], "pylinkage.interface.joint": [[2, 1, 1, "", "Crank"], [2, 1, 1, "", "Fixed"], [2, 1, 1, "", "Joint"], [2, 1, 1, "", "Static"]], "pylinkage.interface.joint.Crank": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 3, 1, "", "angle"], [2, 2, 1, "", "get_constraints"], [2, 3, 1, "", "r"], [2, 2, 1, "", "reload"], [2, 2, 1, "", "set_anchor0"], [2, 2, 1, "", "set_constraints"]], "pylinkage.interface.joint.Fixed": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 3, 1, "", "angle"], [2, 2, 1, "", "get_constraints"], [2, 3, 1, "", "r"], [2, 2, 1, "", "reload"], [2, 2, 1, "", "set_anchor0"], [2, 2, 1, "", "set_anchor1"], [2, 2, 1, "", "set_constraints"]], "pylinkage.interface.joint.Joint": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 2, 1, "", "coord"], [2, 2, 1, "", "get_constraints"], [2, 3, 1, "", "joint0"], [2, 3, 1, "", "joint1"], [2, 3, 1, "", "name"], [2, 2, 1, "", "set_constraints"], [2, 2, 1, "", "set_coord"], [2, 3, 1, "", "x"], [2, 3, 1, "", "y"]], "pylinkage.interface.joint.Static": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 2, 1, "", "get_constraints"], [2, 2, 1, "", "reload"], [2, 2, 1, "", "set_anchor0"], [2, 2, 1, "", "set_anchor1"], [2, 2, 1, "", "set_constraints"]], "pylinkage.interface.linkage": [[2, 1, 1, "", "Linkage"]], "pylinkage.interface.linkage.Linkage": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_cranks"], [2, 3, 1, "", "_solve_order"], [2, 2, 1, "", "get_coords"], [2, 2, 1, "", "get_num_constraints"], [2, 2, 1, "", "get_rotation_period"], [2, 2, 1, "", "hyperstaticity"], [2, 3, 1, "", "joints"], [2, 3, 1, "", "name"], [2, 2, 1, "", "rebuild"], [2, 2, 1, "", "set_completely"], [2, 2, 1, "", "set_coords"], [2, 2, 1, "", "set_num_constraints"], [2, 2, 1, "", "step"]], "pylinkage.interface.revolute_joint": [[2, 1, 1, "", "Pivot"], [2, 1, 1, "", "Revolute"]], "pylinkage.interface.revolute_joint.Pivot": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 3, 1, "", "r0"], [2, 3, 1, "", "r1"]], "pylinkage.interface.revolute_joint.Revolute": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 2, 1, "", "circle"], [2, 2, 1, "", "get_constraints"], [2, 3, 1, "", "r0"], [2, 3, 1, "", "r1"], [2, 2, 1, "", "reload"], [2, 2, 1, "", "set_anchor0"], [2, 2, 1, "", "set_anchor1"], [2, 2, 1, "", "set_constraints"]], "pylinkage.optimization": [[3, 0, 0, "-", "grid_search"], [3, 0, 0, "-", "particle_swarm"], [3, 0, 0, "-", "utils"]], "pylinkage.optimization.grid_search": [[3, 4, 1, "", "fast_variator"], [3, 4, 1, "", "sequential_variator"], [3, 4, 1, "", "tqdm_verbosity"], [3, 4, 1, "", "trials_and_errors_optimization"]], "pylinkage.optimization.particle_swarm": [[3, 4, 1, "", "particle_swarm_optimization"]], "pylinkage.optimization.utils": [[3, 4, 1, "", "generate_bounds"]], "pylinkage.utility": [[4, 4, 1, "", "bounding_box"], [4, 4, 1, "", "kinematic_default_test"], [4, 4, 1, "", "kinematic_maximization"], [4, 4, 1, "", "kinematic_minimization"], [4, 4, 1, "", "movement_bounding_bow"], [4, 4, 1, "", "movement_bounding_box"]], "pylinkage.visualizer": [[5, 4, 1, "", "_get_color"], [5, 4, 1, "", "plot_kinematic_linkage"], [5, 4, 1, "", "plot_static_linkage"], [5, 4, 1, "", "show_linkage"], [5, 4, 1, "", "swarm_tiled_repr"], [5, 4, 1, "", "update_animated_plot"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"], "5": ["py", "exception", "Python exception"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function", "5": "py:exception"}, "terms": {"": [6, 7, 9], "0": [1, 2, 3, 4, 5, 7, 8, 9], "00": 4, "01": 4, "05": [8, 9], "06": [2, 8], "07": 8, "1": [1, 2, 3, 5, 8, 9], "10": [3, 6], "100": [3, 5, 6], "11": 8, "12": [4, 5, 8], "13": [3, 5, 6], "14": [5, 8], "15": 2, "16": [2, 8], "17": [1, 3], "1997": 1, "2": [1, 2, 3, 8, 9], "20": [2, 6], "200": 3, "2019": 3, "2021": [1, 2, 4, 5, 8], "2023": 8, "21": [2, 8], "22": 8, "23": 8, "24": 5, "25": [8, 9], "27": 6, "2d": [1, 2, 6], "3": [0, 1, 3, 5, 8, 9], "31": [8, 9], "34": 1, "39": 2, "4": 8, "40": 5, "45": [1, 3], "5": [1, 3, 5, 8, 9], "51": 3, "58": 5, "6": [2, 3, 4, 6], "7": [2, 3, 4, 6], "8": [1, 3], "9": 6, "90": [8, 9], "A": [0, 2, 3, 4, 5, 6, 7, 8, 9], "And": [8, 9], "As": [8, 9], "Being": 7, "But": [8, 9], "For": [6, 7, 8, 9], "If": [2, 3, 5, 8, 9], "In": [4, 6, 8, 9], "It": [0, 1, 2, 3, 6, 8, 9], "Its": 3, "NOT": 2, "No": [0, 7], "On": [8, 9], "That": [8, 9], "The": [1, 2, 3, 4, 5, 6, 7, 8, 9], "Then": [8, 9], "There": 3, "To": [5, 8, 9], "With": [6, 8, 9], "__find_solving_order__": 6, "__init__": [0, 2, 6], "_abc": 2, "_abc_data": 2, "_abc_impl": 2, "_crank": 2, "_get_color": 5, "_kwarg": [8, 9], "_solve_ord": 2, "_subplot": 5, "ab": 3, "abc": 2, "abcsic": 6, "about": 7, "abov": [8, 9], "abscissa": [1, 2], "absolut": [1, 6], "abstract": [2, 8], "abus": 7, "accept": 7, "access": 2, "account": 7, "achiev": [8, 9], "across": 2, "act": 7, "action": 7, "actual": [8, 9], "ad": 3, "adapt": 7, "add": [5, 6, 8, 9], "address": 7, "adher": 6, "advanc": 7, "advis": 6, "affect": [2, 6, 7], "after": 6, "ag": 7, "agent": [3, 5, 6, 8, 9], "aggress": 7, "align": [6, 7], "all": [2, 3, 5, 6, 7, 8, 9], "allow": [2, 6, 7], "almost": 3, "alpha": 6, "also": [2, 7, 8, 9], "alwai": 2, "ambigu": 2, "amount": 2, "amplitud": [8, 9], "an": [2, 3, 5, 6, 7, 8, 9], "anchor": 2, "angl": [1, 2, 6, 8, 9], "ani": [1, 4, 5, 7, 8, 9], "anim": [5, 6], "anoth": 6, "answer": 7, "anymor": 6, "anyth": 3, "anywai": 6, "apolog": 7, "apologi": 7, "appear": 7, "appli": [2, 7], "appoint": 7, "approach": [8, 9], "appropri": 7, "apr": 2, "ar": [1, 2, 3, 5, 6, 7, 8, 9], "arbitrari": [1, 6], "arg": [2, 3], "argument": [3, 6, 8, 9], "around": 7, "arrai": [3, 6], "article_swarm_optim": 6, "artist": 5, "ask": [6, 8, 9], "assign": [0, 2, 3, 6], "attack": 7, "attent": 7, "attribut": 8, "author": [1, 2, 3, 4, 5], "automat": [2, 5, 6, 8, 9], "avail": 7, "averag": 6, "avoid": [6, 7], "ax": [5, 6], "axessubplot": 5, "axi": [1, 2, 5], "b": [8, 9], "back": 6, "backward": 0, "bar": [6, 8, 9], "base": [0, 2, 6, 8, 9], "basi": 6, "basic": 6, "becaus": [3, 6, 8, 9], "bee": [8, 9], "been": [2, 6], "befor": [4, 5, 6], "begin": 6, "behavior": [6, 7], "behaviour": 6, "behind": [8, 9], "best": [2, 3, 6, 7, 8, 9], "beta": [6, 8, 9], "better": 3, "between": [1, 2, 3, 5, 6, 8, 9], "big": 3, "bigger": 6, "bit": [6, 8, 9], "bodi": 7, "bool": [2, 3, 5], "both": [2, 6, 8, 9], "bound": [3, 4, 6, 8, 9], "bounding_box": [4, 6, 8, 9], "bourk": 1, "box": [4, 6, 8, 9], "branch": 6, "break": 6, "build": [8, 9], "buildabl": 6, "builder": [6, 8, 9], "built": [1, 2, 3, 6, 8, 9], "bump2vers": 6, "c": [8, 9], "c1": 3, "c2": 3, "calcul": [6, 8, 9], "call": [2, 3, 8, 9], "callabl": [3, 4, 5], "can": [1, 2, 3, 6, 8, 9], "candid": [3, 8, 9], "cannot": 2, "capabl": [8, 9], "cartesian": [1, 2], "case": [0, 2, 4, 6], "caus": 6, "center": [2, 3], "certain": [8, 9], "certainli": 3, "cfg": 6, "chang": 3, "changelog": 8, "channel": 7, "characterist": [2, 7], "check": 6, "checker": 6, "choos": [6, 8, 9], "circl": [1, 2, 6, 8, 9], "circle1": 1, "circle2": 1, "circle_intersect": 1, "circlespher": 1, "circular": 2, "clarifi": 7, "clariti": 7, "class": [0, 2, 6, 7, 8, 9], "classic": [8, 9], "clear": 6, "clearli": 6, "close": [8, 9], "closer": [8, 9], "code": [6, 8, 9], "code_of_conduct": [6, 7, 8, 9], "coeffici": 3, "collect": [6, 8], "color": [5, 6], "color_switch": [5, 6], "combin": [3, 6], "come": [6, 8, 9], "comment": 7, "commit": 7, "common": [2, 3, 4, 7, 8, 9], "commun": [7, 8, 9], "compar": 3, "compat": [0, 6], "complaint": 7, "complet": [4, 6], "complex": [8, 9], "compress": [3, 6], "comput": [2, 4, 6], "conda": [6, 8, 9], "conduct": 8, "configur": 6, "confus": 6, "consecut": 3, "consequ": [6, 7], "consid": [1, 3, 6, 7, 8, 9], "consist": [2, 6, 8, 9], "consol": 3, "constant": [2, 8, 9], "constrain": [2, 6], "constraint": [2, 3, 8, 9], "construct": 7, "contain": [3, 6], "continu": [6, 7], "contribut": 7, "converg": 6, "convert": 1, "cool": [8, 9], "coord": [2, 8, 9], "coordin": [1, 2, 5, 8, 9], "corner": [8, 9], "correspond": [2, 5], "cost": 6, "could": [6, 7], "crank": [2, 5, 8, 9], "creat": [1, 2, 3, 4, 5, 8, 9], "criterion": [8, 9], "crucial": [8, 9], "curr_bb": [8, 9], "current": [2, 8, 9], "curtain": [8, 9], "custom": [0, 6], "cyl_to_cart": 1, "d": [3, 8, 9], "de": 2, "decis": 7, "decor": [4, 6, 8, 9], "deem": 7, "def": [8, 9], "default": [1, 2, 3, 5, 6], "defin": [2, 6, 8, 9], "definit": 6, "deform": [8, 9], "degre": 2, "delai": 5, "delta_dim": [3, 6], "demo": 6, "demonstr": [7, 8, 9], "denomin": 2, "deprec": [2, 3, 4], "derogatori": 7, "describ": [3, 8, 9], "descript": 5, "determin": 7, "develop": 6, "dict": 3, "dictionari": 0, "differ": [2, 7, 8, 9], "digit": 2, "dilat": [3, 6], "dim": 6, "dimens": [0, 2, 3, 5, 6, 8, 9], "dimension": [2, 8, 9], "dimension_func": 5, "disabl": [3, 6, 7], "disparag": 7, "displai": [5, 6], "dist": 1, "dist_builtin": 1, "distanc": [1, 2, 8, 9], "distance0": [2, 8, 9], "distance1": [2, 8, 9], "divers": 7, "divis": [3, 6, 8, 9], "do": [2, 6, 8, 9], "doc": 6, "docstr": 6, "document": 6, "doesn": [8, 9], "don": [8, 9], "done": 6, "download": [8, 9], "draw": [5, 8, 9], "dt": [2, 8, 9], "due": [6, 8, 9], "durat": 5, "dure": 7, "e": 7, "each": [1, 2, 3, 5, 6, 8, 9], "easi": 5, "easier": 6, "econom": 7, "edg": [8, 9], "edit": 7, "educ": 7, "effici": [6, 8, 9], "either": [2, 8, 9], "element": [0, 2, 3, 5], "els": 3, "email": 7, "empathi": 7, "emphas": [8, 9], "empti": 2, "end": 6, "enforc": 8, "engin": 2, "enough": [6, 8, 9], "env": [8, 9], "environ": [6, 7], "equal": 1, "equival": [1, 6], "error": [4, 6, 8, 9], "error_penalti": 4, "ethnic": 7, "euclidian": 1, "eval_func": [3, 6, 8, 9], "evalu": [3, 4, 8, 9], "even": [6, 8, 9], "event": 7, "everyon": 7, "everyth": [6, 8, 9], "exactli": [8, 9], "exampl": [3, 6, 7], "except": [6, 8], "execut": 6, "exhaust": [6, 8, 9], "exhaustive_optim": [6, 8, 9], "exist": [2, 6], "expand": 6, "experi": 7, "experiment": [2, 6], "explan": [7, 8, 9], "explicit": 7, "express": [2, 7], "extend": [8, 9], "extens": [1, 6], "extern": 7, "extra": 3, "extrem": [8, 9], "factor": [3, 6], "fail": 6, "fair": 7, "fairli": 7, "fals": [2, 5, 6], "faq": 7, "fast_vari": 3, "faster": [1, 5, 6], "favor": [2, 6], "featur": [8, 9], "feedback": 7, "few": [8, 9], "field": 0, "fig": 5, "figur": 5, "file": [6, 8, 9], "find": [8, 9], "finish": [2, 6, 8, 9], "finit": 6, "first": [1, 2, 6, 8, 9], "fit": [2, 4, 6, 8, 9], "fitness_func": [8, 9], "fix": [2, 8, 9], "flake8": 6, "flat": [2, 6], "flexibl": 6, "float": [0, 1, 2, 3, 4, 5, 8, 9], "fly": [8, 9], "focus": 7, "folder": 6, "follow": [3, 6, 7, 8, 9], "forc": 2, "form": [3, 8, 9], "formal": 2, "format": [3, 5, 6], "former": 6, "found": 1, "four": [8, 9], "fourbar_linkag": 6, "fp": 5, "fraction": 2, "frame": [2, 5, 6], "free": 7, "fri": [2, 3], "friendli": [2, 8, 9], "from": [1, 2, 3, 5, 6, 7, 8, 9], "full": 6, "fulli": 2, "func": 4, "function": [1, 3, 6, 8, 9], "gender": 7, "gener": [1, 2, 3, 6], "generate_bound": [3, 6, 8, 9], "geometr": [2, 3, 8, 9], "geometri": [6, 8], "get": [1, 6, 8, 9], "get_constraint": [2, 6], "get_coord": [2, 6, 8, 9], "get_num_constraint": [2, 3, 6, 8, 9], "get_po": 6, "get_rotation_period": [2, 6], "git": 6, "github": [6, 7], "gitignor": 6, "give": [2, 3, 7, 8, 9], "given": 2, "global": 6, "go": 6, "goe": 6, "good": [8, 9], "gracefulli": 7, "graph": 5, "graphic": [8, 9], "greatli": 6, "greedi": [8, 9], "grid": [8, 9], "grid_search": [3, 6], "group": 4, "guaranti": 0, "guidelin": [8, 9], "ha": [2, 3, 6], "had": 6, "handl": [6, 8, 9], "happen": [8, 9], "harass": 7, "harm": 7, "have": [3, 6, 7, 8, 9], "head": [8, 9], "header": 6, "healthi": 7, "help": 8, "here": [3, 6, 8, 9], "hesit": [8, 9], "hi": [6, 8, 9], "high": 6, "highest": 3, "highli": [1, 8, 9], "highlight": 5, "hing": 2, "histori": 6, "horizont": 2, "hour": 6, "how": [3, 8, 9], "howev": [8, 9], "html": 7, "http": [1, 7], "huge": 3, "hugofara": [1, 2, 3, 4, 5], "human": [2, 6, 8, 9], "hyperstat": [2, 6], "hypo": 2, "hypostaticerror": 2, "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "id": 2, "ident": 7, "illustr": [8, 9], "im": 5, "imag": [5, 6], "imageri": 7, "imagin": [8, 9], "immut": 6, "impact": 7, "implement": 3, "implicitli": 6, "import": [3, 6, 8, 9], "improv": 6, "inappropri": 7, "incid": 7, "includ": [4, 6, 7], "inclus": 7, "incompat": [8, 9], "index": [0, 5, 6, 8], "individu": 7, "inertia": 3, "inf": [4, 8, 9], "infin": 6, "inform": 7, "inherit": [2, 6], "ini": 6, "init_po": [8, 9], "init_posit": 0, "initi": [2, 3, 5, 6, 8, 9], "initial_coordin": 3, "input": [1, 3, 6], "insert": 6, "inspir": 7, "instanc": [6, 7, 8, 9], "instead": [5, 6], "insult": 7, "int": [1, 2, 3, 5], "integr": 6, "intend": 6, "interact": 7, "interest": [8, 9], "interfac": [6, 8], "intersect": [1, 8, 9], "interv": 5, "introduc": 6, "investig": 7, "invis": 7, "involv": 7, "isn": [8, 9], "issu": [6, 7, 8, 9], "issue_templ": 6, "ite": 3, "iter": [2, 3, 4, 5, 6, 8, 9], "iteration_factor": 5, "its": [2, 6, 8, 9], "joint": [5, 6], "joint0": [2, 8, 9], "joint1": [2, 8, 9], "jul": 4, "jun": [2, 5], "just": [7, 8, 9], "keep": [2, 6, 8, 9], "keyword": 3, "kind": [2, 6, 7], "kinemat": [2, 4, 6, 8, 9], "kinematic_default_test": 4, "kinematic_maxim": 4, "kinematic_minim": [4, 6], "kinematic_minimizast": [8, 9], "kinematic_optimizatino": 6, "know": [2, 8, 9], "known": 6, "kwarg": 3, "ladder": 7, "languag": [7, 8, 9], "larg": [8, 9], "last": [6, 8, 9], "launch": 6, "lead": 7, "leader": [3, 7], "learn": [3, 7], "least": [8, 9], "legaci": [1, 6, 8, 9], "legend": [5, 6], "leggedsnak": 6, "len": [3, 5], "less": 6, "let": [3, 6, 8, 9], "level": 7, "lib": 6, "librari": [8, 9], "licens": 6, "life": 6, "like": [7, 8, 9], "line": [8, 9], "link": [2, 6, 9], "linkag": [0, 3, 6], "lint": 6, "list": [2, 3, 4, 5], "ljvmiranda921": [8, 9], "local": [2, 3], "localbestpso": 3, "locat": 2, "loci": [4, 5, 6, 8, 9], "locu": [4, 8, 9], "locus_highlight": [5, 6], "longer": 6, "look": [3, 8, 9], "loop": [8, 9], "lot": 6, "lower": [8, 9], "lower_bound": 3, "made": [8, 9], "magic": [8, 9], "mai": [1, 2, 6, 7, 8, 9], "mail": 7, "main": [6, 8, 9], "mainli": 3, "make": [2, 3, 4, 5, 6, 7, 8, 9], "mandatori": 6, "mani": [6, 8, 9], "manifest": 6, "manual": 2, "mar": 3, "mast": [8, 9], "master": 6, "math": 1, "mathemat": [6, 8, 9], "matplotlib": [5, 6, 8, 9], "matt": 1, "max": 3, "max_dim": 3, "max_factor": 3, "max_i": [8, 9], "max_x": [8, 9], "maxim": [3, 6], "md": [6, 8, 9], "mechan": [8, 9], "media": 7, "member": 7, "mention": 6, "mere": 6, "messag": [2, 6], "method": [1, 2, 6, 8, 9], "middl": 3, "millisecond": 5, "min": [3, 8, 9], "min_dim": 3, "min_i": [8, 9], "min_ratio": 3, "min_x": [8, 9], "minim": [3, 6, 8, 9], "minimum": [8, 9], "minor": 6, "misbehav": 6, "miss": 6, "mistak": 7, "mit": 6, "mode": [2, 5], "moder": 7, "modifi": [3, 5, 6], "modul": [2, 4, 5, 6, 9], "mon": [4, 5], "more": [6, 8, 9], "most": 6, "mostli": 2, "motor": [2, 6, 8, 9], "move": [2, 6, 8, 9], "movement": [5, 8, 9], "movement_bounding_bow": [4, 6], "movement_bounding_box": [4, 6], "mozilla": 7, "much": [6, 8, 9], "multipl": [2, 6], "mutabl": [0, 6], "mutable_ag": 0, "mutableag": [3, 6, 8], "my": [8, 9], "my_linkag": [8, 9], "n": [8, 9], "n_particl": 3, "n_result": [3, 8, 9], "name": [2, 6, 8, 9], "namedtupl": [0, 6], "nation": 7, "natur": 7, "navig": 6, "need": [2, 6, 8, 9], "neg": 6, "neighbor": [3, 8, 9], "net": 1, "new": 6, "none": [0, 1, 2, 3, 5], "norm": 1, "notabl": 6, "note": [8, 9], "noth": 2, "notic": [8, 9], "now": [6, 8, 9], "num_constraint": 3, "number": [2, 3, 5, 6, 8, 9], "numer": 2, "numpi": [8, 9], "numpydoc": 6, "o": 2, "obj_1": 1, "obj_2": 1, "object": [0, 1, 2, 6, 8, 9], "oblig": 7, "offens": 7, "offer": [8, 9], "offici": [6, 7], "offlin": 7, "often": [3, 6, 8, 9], "onc": [8, 9], "one": [1, 2, 6, 8, 9], "onli": [0, 2, 3, 6, 8, 9], "onlin": 7, "open": [7, 8, 9], "opinion": 7, "optim": [0, 1, 6], "option": [2, 5, 6, 8, 9], "order": [2, 3, 6, 8, 9], "order_rel": [3, 6, 8, 9], "ordin": [2, 6], "org": 7, "organ": 6, "ori": 1, "orient": [2, 7], "origin": [1, 2, 5], "ot": 6, "other": [0, 2, 7], "otherwis": [7, 8, 9], "our": [8, 9], "output": [3, 5, 6], "over": [2, 6], "overal": 7, "own": [2, 6], "packag": [6, 8, 9], "pad": 6, "page": [6, 8], "paramet": [1, 3, 4, 5, 6, 8, 9], "parent": [2, 8, 9], "part": [2, 8, 9], "particip": 7, "particl": [6, 8, 9], "particle_swarm": [3, 6], "particle_swarm_optim": [3, 6, 8, 9], "particularli": [8, 9], "pass": [2, 3, 4, 5, 8, 9], "path": [6, 8, 9], "pattern": 7, "paul": 1, "paulbourk": 1, "penalti": [4, 8, 9], "peopl": 7, "per": 5, "perfect": 6, "period": [2, 7], "permiss": 7, "person": 7, "perspect": 6, "physic": 7, "pin": [2, 8, 9], "pivot": [2, 6, 8, 9], "pl": [8, 9], "plai": [8, 9], "planar": [8, 9], "pleas": [8, 9], "pledg": 8, "plot": [5, 6], "plot_kinematic_linkag": [5, 6], "plot_static_linkag": [5, 6], "plotter": 8, "po": [2, 6, 8, 9], "point": [1, 2, 4, 5, 6, 8, 9], "point1": 1, "point2": 1, "polar": 1, "polit": 7, "poorli": 6, "posit": [2, 3, 5, 6, 7, 8, 9], "possibl": [2, 3, 6, 8, 9], "post": [7, 8, 9], "preassign": 0, "precis": 2, "preserv": 2, "prev": 5, "previou": [2, 5, 6, 8, 9], "principl": [8, 9], "print": [3, 6], "privaci": 7, "privat": 7, "problem": [3, 6, 8, 9], "profession": 7, "program": 1, "progress": [6, 8, 9], "project": [2, 6], "promptli": 7, "properli": 6, "propos": [8, 9], "provid": [1, 4, 6, 7, 8, 9], "pso": [3, 6, 8, 9], "public": 7, "publish": [6, 7], "pull": [8, 9], "purpos": [8, 9], "put": [8, 9], "py": [6, 8, 9], "pycharm": 6, "pylinkag": [0, 1, 2, 3, 4, 5, 6], "pypi": [6, 8, 9], "pyproject": 6, "pyswarm": [3, 6, 8, 9], "python": [1, 6, 8, 9], "quadrant": [8, 9], "quarter": [8, 9], "question": 7, "quick": 2, "quicker": 6, "r": 2, "r0": 2, "r1": 2, "race": 7, "radian": [2, 8, 9], "radiu": [1, 2], "rais": [2, 6], "randomli": 3, "rare": [8, 9], "rate": 6, "ratio": 3, "readabl": 2, "readm": [6, 8], "real": 5, "rearrang": [8, 9], "reason": [7, 8, 9], "rebuild": 2, "recap": [8, 9], "recat": 2, "receiv": [6, 8, 9], "recommend": [6, 8, 9], "recreat": 5, "redefin": 2, "ref_bb": [8, 9], "ref_po": [8, 9], "refer": [2, 3, 8, 9], "regardless": 7, "regener": 6, "reject": 7, "rel": [2, 6], "relat": 6, "relev": [8, 9], "religion": 7, "reload": [2, 6, 8, 9], "rememb": [8, 9], "remov": [2, 3, 4, 7], "renam": 6, "reorgan": 6, "replac": [4, 6], "report": 7, "repr_polar_swarm": 6, "repres": 7, "represent": [2, 6], "request": [7, 8, 9], "requir": 6, "reset": [8, 9], "resolut": 2, "resourc": [8, 9], "respect": [7, 8, 9], "respons": 8, "rest": 6, "result": [3, 5, 6, 8, 9], "return": [1, 3, 4, 5, 6, 8, 9], "revamp": 6, "review": 7, "revolut": [5, 6, 8], "revolute_joint": [2, 6], "right": [7, 8, 9], "risk": 6, "robust": [6, 8, 9], "rocker": [8, 9], "role": [8, 9], "rotat": [2, 6, 8, 9], "roughli": 0, "run": [2, 4, 5, 6, 8, 9], "sai": [8, 9], "same": [4, 6], "satisfactori": 6, "satisfi": 2, "save": [5, 6, 8, 9], "scalar": 2, "scope": 8, "score": [0, 3, 5, 6, 8, 9], "script": 6, "search": [5, 8, 9], "second": [1, 2, 5, 6, 8, 9], "secur": 7, "see": [5, 6, 7, 8, 9], "seem": [6, 8, 9], "seen": 6, "segment": [8, 9], "self": 2, "semant": 6, "sens": [8, 9], "separ": [6, 8, 9], "sequenc": [2, 3, 5], "sequenti": [3, 8, 9], "sequential_vari": 3, "seri": 7, "serial": [8, 9], "seriou": 7, "set": [2, 3, 5, 6, 7], "set_anchor0": 2, "set_anchor1": 2, "set_complet": [2, 6], "set_constraint": [2, 6], "set_coord": [2, 6, 8, 9], "set_num_constraint": [2, 6, 8, 9], "setup": 6, "sex": 7, "sexual": 7, "shape": 3, "shorter": [8, 9], "should": [0, 1, 2, 3, 5, 6, 8, 9], "show": [5, 6, 8, 9], "show_legend": 5, "show_linkag": [5, 8, 9], "sidebar": 6, "signatur": 6, "similar": 6, "simpl": [2, 3, 6, 8, 9], "simplif": 6, "simplifi": [6, 8, 9], "simul": 4, "sinc": [2, 3, 4], "singl": [3, 7, 8, 9], "size": [3, 7], "small": 3, "so": [1, 2, 3, 6, 8, 9], "social": [3, 7], "socio": 7, "solut": [2, 6, 8, 9], "solv": [2, 8, 9], "some": [6, 8, 9], "someth": [8, 9], "sometim": 6, "sort": 7, "sourc": [6, 8], "space": [2, 3, 7, 8, 9], "special": [2, 5], "specif": 6, "specifi": [3, 6, 7, 8, 9], "sphinx": 6, "split": 6, "sqr_dist": 1, "squar": [1, 8, 9], "stai": [8, 9], "standard": [2, 4, 6, 8, 9], "start": [1, 8, 9], "state": [2, 3], "static": [2, 6], "statu": 7, "step": [2, 3, 5, 6, 8, 9], "still": [8, 9], "stop": [6, 8, 9], "str": [2, 5], "strider": 6, "structur": [2, 4], "style": 6, "subdivid": 5, "subdivis": [3, 6, 8, 9], "subplot": 5, "subscript": 0, "subset": 2, "sugar": 6, "sum": [8, 9], "support": [0, 5, 8, 9], "sure": 3, "sustain": 7, "swarm": [5, 6, 8, 9], "swarm_tiled_repr": [5, 6], "switch": [8, 9], "syntact": 6, "system": 2, "t": [2, 6, 8, 9], "tadaaa": [8, 9], "tag": 6, "tail": [8, 9], "take": [2, 3, 6, 7, 8, 9], "target": 6, "techniqu": [8, 9], "templat": 6, "term": [2, 7], "test": [6, 8, 9], "test_converg": 6, "test_geometri": 6, "test_linkag": 6, "test_optim": 6, "testpso": 6, "than": [1, 3, 8, 9], "thank": 6, "thei": [2, 5, 6, 7, 8, 9], "them": [2, 5, 8, 9], "theoret": [8, 9], "thereaft": 2, "theta": 1, "thi": [2, 3, 4, 6, 7, 8, 9], "thing": [8, 9], "think": [8, 9], "those": 7, "threaten": 7, "three": [8, 9], "through": 7, "tile": 5, "time": [6, 7, 8, 9], "tip_locu": [8, 9], "titl": 5, "todai": [8, 9], "togeth": [8, 9], "tol": 1, "toler": [1, 3], "toml": 6, "too": 3, "top": [8, 9], "toward": 7, "tox": 6, "tqdm": [3, 6], "tqdm_verbos": [3, 6], "transcript": 1, "transit": 6, "translat": 7, "trial": [6, 8, 9], "trials_and_error": 6, "trials_and_error_optim": 6, "trials_and_errors_optim": [3, 6, 8, 9], "trials_and_errors_optimizatt": 6, "triangl": [8, 9], "trick": [8, 9], "trigonometr": 2, "troll": 7, "true": [2, 3, 6], "try": [8, 9], "tupl": [0, 1, 2, 3, 4, 8, 9], "turn": [2, 8, 9], "two": [1, 2, 3, 6, 8, 9], "txt": 6, "type": [1, 2, 3, 4, 5, 6], "typo": 6, "u": [2, 7], "ugli": 6, "unabl": 2, "unaccept": 7, "unbuild": 4, "unbuildableerror": 2, "under": [1, 2], "uniform": 0, "union": 2, "unittest": 6, "unoptim": 1, "unprofession": 7, "unreleas": 8, "unsolicit": 7, "unus": 2, "unwelcom": 7, "updat": [5, 6, 8, 9], "update_animated_plot": 5, "upl": 3, "uplet": [3, 8, 9], "upper": 3, "upper_bound": 3, "us": [0, 1, 2, 3, 4, 5, 6, 7], "useless": 5, "user": [2, 6], "util": [6, 8], "valid": 6, "valu": [1, 2, 3, 4, 5, 6], "vari": [3, 8, 9], "variabl": 6, "variat": [3, 6], "variou": [6, 8], "vec": 1, "vectori": [8, 9], "verbos": [3, 6], "veri": [3, 6], "verifi": [8, 9], "version": [2, 3, 4, 5, 6, 7], "vertic": 2, "via": 7, "video": 5, "view": [2, 6, 8, 9], "viewpoint": 7, "violat": 7, "violent": 3, "visibl": 7, "visual": 6, "vizual": 6, "vulner": 6, "w": 3, "wa": [4, 6, 7], "wai": [2, 5, 6, 7, 8, 9], "wait": [8, 9], "walkthrough": 6, "want": [2, 3, 5, 8, 9], "warn": 6, "wasn": 6, "we": [2, 3, 5, 6, 7, 8, 9], "websit": 6, "wed": [1, 2], "welcom": 7, "well": [6, 7], "were": [6, 7], "what": [7, 8, 9], "when": [1, 2, 5, 6, 7, 8, 9], "whether": 2, "which": [1, 2, 3, 7, 8, 9], "whole": 2, "why": [7, 8, 9], "wiki": 7, "windshield": [8, 9], "wiper": [8, 9], "within": 7, "without": [5, 6, 7, 8, 9], "won": 2, "wonder": [8, 9], "woodhead": 1, "work": [6, 8, 9], "workflow": 6, "would": [6, 8, 9], "wrapper": [3, 6, 8, 9], "write": [8, 9], "written": 7, "wrongli": 6, "www": 7, "x": [2, 3, 6, 8, 9], "x_max": 4, "x_min": 4, "y": [2, 6, 8, 9], "y_max": 4, "y_min": 4, "yet": 6, "yml": [6, 8, 9], "you": [0, 2, 3, 5, 6, 8, 9], "your": [6, 8, 9], "yourself": [8, 9], "zip": [8, 9]}, "titles": ["collections", "geometry", "interface", "optimization", "utility", "visualizer", "Changelog", "Contributor Covenant Code of Conduct", "Welcome to pylinkage\u2019s documentation!", "Pylinkage"], "titleterms": {"": 8, "0": 6, "05": 6, "06": 6, "07": 6, "1": [6, 7], "11": 6, "12": 6, "14": 6, "16": 6, "2": [6, 7], "2021": 6, "2023": 6, "21": 6, "22": 6, "23": 6, "3": [6, 7], "4": [6, 7], "5": 6, "abstract": 1, "ad": 6, "agent": 0, "argument": 2, "attribut": 7, "ban": 7, "base": 1, "chang": 6, "changelog": 6, "code": 7, "collect": 0, "complet": [8, 9], "conduct": 7, "contribut": [8, 9], "contributor": 7, "correct": 7, "coven": 7, "definit": [2, 8, 9], "demo": [8, 9], "deprec": 6, "document": 8, "enforc": 7, "environ": [8, 9], "error": 3, "exampl": [8, 9], "except": 2, "fix": 6, "function": 4, "geometr": 1, "geometri": 1, "grid": 3, "guidelin": 7, "handl": 4, "help": 4, "indic": 8, "instal": [8, 9], "interfac": 2, "introduct": 8, "joint": [2, 8, 9], "link": 8, "linkag": [2, 4, 5, 8, 9], "modul": [1, 8], "mutableag": 0, "optim": [3, 8, 9], "our": 7, "paramet": 2, "particl": 3, "perman": 7, "pip": [8, 9], "pledg": 7, "plotter": 5, "pylinkag": [8, 9], "quick": 8, "remov": 6, "requir": [8, 9], "respons": 7, "return": 2, "revolut": 2, "scope": 7, "search": 3, "set": [8, 9], "short": [8, 9], "simpl": 5, "simul": [8, 9], "standard": 7, "structur": [8, 9], "swarm": 3, "tabl": 8, "temporari": 7, "trial": 3, "unreleas": 6, "up": [8, 9], "us": [8, 9], "util": [3, 4], "variou": 4, "virtual": [8, 9], "visual": [5, 8, 9], "warn": 7, "welcom": 8, "you": 4, "your": 5}}) \ No newline at end of file