Auxiliary Functions
Rigidity Checks
Main.DeformationPaths.is_rigid — Method
is_rigid(F[; tol, tol, tested_random_flexes, symmetric_newton])Heuristically checks if a geometric constraint system F is (continuously) rigid.
See DeformationPath(G::DeformationPaths.ConstraintSystem, motion_samples::Vector{<:Vector{<:Real}}) for a description of the possible parameters.
Main.DeformationPaths.is_inf_rigid — Method
is_inf_rigid(F[; tol_rank_drop])Checks if a geometric constraint system F is infinitesimally rigid.
Main.DeformationPaths.is_prestress_stable — Method
is_prestress_stable(F)Checks if a geometric constraint system F is prestress stable.
Main.DeformationPaths.is_second_order_rigid — Method
is_second_order_rigid(F)Checks if a geometric constraint system F is second-order rigid.
See also compute_nonblocked_flex for the possible keywords.
Predictor-Corrector Methods
Main.DeformationPaths.euler_step — Method
euler_step(G, step_size, prev_flex, point, K_n)Euler step predicting the next point along the approximate motion.
Returns
predicted_point::Vector{<:Real}: The next point predicted by Euler's method.predicted_inf_flex::Vector{<:Real}: The tangent vector predicted by Euler's method.
Main.DeformationPaths.newton_correct — Method
newton_correct(G, point)Apply Newton's method to correct point back to the constraints in G.
Arguments
G::ConstraintSystem: The underlying geometric constraint system.point::Vector{<:Real}: The initial point that Newton's method is applied to.
For further keywords, see newton_correct.
Returns
q::Vector{<:Real}: A pointqsuch that the Euclidean norm of the evaluated equations is at mosttol
Main.DeformationPaths.newton_correct — Method
newton_correct(equations, variables, jac, point[; tol, time_penalty])Apply Newton's method to correct point back to the constraints in equations.
Arguments
equations::Vector{Expression}: Equations to correctpointto.variables::Vector{Variable}: Variables from the affine coordinate ring.jac::Matrix{Expression}: Jacobian matrix corresponding toequationsandvariables.point::Vector{<:Real}: The initial point that Newton's method is applied to.tol::Real(optional): Numerical tolerance that is used as a stopping criterion for Newton's method. Default value:1e-13.time_penalty::Union{Real,Nothing}(optional): If Newton's method takes too long, we stop the iteration and throw an error. Here, "too long" is measured in terms oflength(point)/time_penaltyseconds. Default value:2.armijo_linesearch::Bool(optional): Flag for activating the Armijo backtracking line search procedure. Default value:true.
Returns
q::Vector{<:Real}: A pointqsuch that the Euclidean norm of the evaluated equations is at mosttol
Main.DeformationPaths.symmetric_newton_correct — Method
symmetric_newton_correct(G, point[; tol, time_penalty])Apply symmetric Newton's method to correct point back to the constraints in equations.
The symmetric Newton corrector evaluates the Jacobian matrix less often.
Arguments
G::ConstraintSystem: The underlying geometric constraint system.point::Vector{<:Real}: The initial point that Newton's method is applied to.tol::Real(optional): Numerical tolerance that is used as a stopping criterion for Newton's method. Default value:1e-13.time_penalty::Union{Real,Nothing}(optional): If Newton's method takes too long, we stop the iteration and throw an error. Here, "too long" is measured in terms oflength(point)/time_penaltyseconds. Default value:2.
Returns
q::Vector{<:Real}: A pointqsuch that the Euclidean norm of the evaluated equations is at mosttol
See also symmetric_newton_correct
Main.DeformationPaths.symmetric_newton_correct — Method
symmetric_newton_correct(equations, variables, jac, point[; tol, time_penalty])Apply symmetric Newton's method to correct point back to the constraints in equations.
The symmetric Newton corrector evaluates the Jacobian matrix less often.
Arguments
equations::Vector{Expression}: Equations to correctpointto.variables::Vector{Variable}: Variables from the affine coordinate ring.jac::Matrix{Expression}: Jacobian matrix corresponding toequationsandvariables.point::Vector{<:Real}: The initial point that Newton's method is applied to.tol::Real(optional): Numerical tolerance that is used as a stopping criterion for Newton's method. Default value:1e-13.time_penalty::Union{Real,Nothing}(optional): If Newton's method takes too long, we stop the iteration and throw an error. Here, "too long" is measured in terms oflength(point)/time_penaltyseconds. Default value:2.
Returns
q::Vector{<:Real}: A pointqsuch that the Euclidean norm of the evaluated equations is at mosttol
Infinitessimal Flexes
Main.DeformationPaths.compute_inf_flexes — Function
compute_inf_flexes(G, point[; tol])Compute all infinitesimal flexes of a geometric constraint system G in point.
Main.DeformationPaths.compute_equilibrium_stresses — Function
compute_equilibrium_stresses(G, point[; tol])Compute all equilibrium stresses of a geometric constraint system G in point.
Main.DeformationPaths.compute_nontrivial_inf_flexes — Method
compute_nontrivial_inf_flexes(G, point, K_n[; tol])Compute the nontrivial infinitesimal flexes of a geometric constraint system G in point.
Main.DeformationPaths.compute_nonblocked_flex — Method
compute_nonblocked_flex(F[; tol_rank_drop, tol])Compute an infinitesimal flex of F that is not blocked by an equilibrium stress.
Transformation Methods
Main.DeformationPaths.to_Array — Method
to_Array(G, p)Transform a realization p to a vector of coordinates.
Main.DeformationPaths.to_Array — Method
to_Array(F, p)Transform a realization p to a vector of coordinates.
Main.DeformationPaths.to_Array — Method
to_Array(F, p)Transform a realization p to a vector of coordinates.
Main.DeformationPaths.to_Matrix — Method
to_Matrix(G, q)Transform a vector of coordinates q to a realization matrix.
Main.DeformationPaths.to_Matrix — Method
to_Matrix(F, q)Transform a vector of coordinates q to a realization matrix.
Main.DeformationPaths.minors — Function
minors(A, k)Compute the (k+1)x(k+1) minors of the matrix A
Special Polytope Methods
Main.DeformationPaths.fix_antipodals! — Method
fix_antipodals!(F)Entangles the antipodal points in a polytope F so that their position is constrained to antipodal points on a sphere.
Main.DeformationPaths.tetrahedral_symmetry! — Method
tetrahedral_symmetry!(F)Add constraints to a polytope F representing a tetrahedral symmetry.
Main.DeformationPaths.triangle_shrinking — Method
triangle_shrinking(F)Evenly shrink the triangular facets of a given polytope and compute the nontrivial infinitesimal flexes in each step.