ShapeOp  0.1.0
Typedefs | Enumerations | Functions
API.h File Reference
#include "Common.h"

Go to the source code of this file.

Typedefs

typedef struct ShapeOpSolver ShapeOpSolver
 C structure that containts the C++ ShapeOp::Solver.
 
typedef enum shapeop_err shapeop_err
 ShapeOp Success and Error type. This list might be extended. To simply test for errors, use =! SO_SUCCESS.
 

Enumerations

enum  shapeop_err { SO_SUCCESS = 0, SO_INVALID_CONSTRAINT_TYPE = 1, SO_INVALID_ARGUMENT_LENGTH = 2, SO_UNMATCHING_CONSTRAINT_ID = 3 }
 ShapeOp Success and Error type. This list might be extended. To simply test for errors, use =! SO_SUCCESS. More...
 

Functions

SHAPEOP_API ShapeOpSolvershapeop_create ()
 Create the ShapeOp solver. For more details see ShapeOp::Solver.
 
SHAPEOP_API void shapeop_delete (ShapeOpSolver *op)
 Delete the ShapeOp solver. For more details see ShapeOp::Solver.
 
SHAPEOP_API int shapeop_init (ShapeOpSolver *op)
 Initialize the ShapeOp solver for static geometry processing. For more details see ShapeOp::Solver. More...
 
SHAPEOP_API int shapeop_initDynamic (ShapeOpSolver *op, ShapeOpScalar masses, ShapeOpScalar damping, ShapeOpScalar timestep)
 Initialize the ShapeOp solver for dynamic geometry processing. For more details see ShapeOp::Solver. More...
 
SHAPEOP_API int shapeop_solve (ShapeOpSolver *op, unsigned int iteration)
 Run the optimization. For more details see ShapeOp::Solver. More...
 
SHAPEOP_API void shapeop_setPoints (ShapeOpSolver *op, ShapeOpScalar *points, int nb_points)
 Set the vertices to the ShapeOp solver. For more details see ShapeOp::Solver.
 
SHAPEOP_API void shapeop_getPoints (ShapeOpSolver *op, ShapeOpScalar *points, int nb_points)
 Get the vertices back from the ShapeOp solver. For more details see ShapeOp::Solver.
 
SHAPEOP_API void shapeop_setTimeStep (ShapeOpSolver *op, ShapeOpScalar timestep)
 Set the timestep of the ShapeOp solver. For more details see ShapeOp::Solver.
 
SHAPEOP_API void shapeop_setDamping (ShapeOpSolver *op, ShapeOpScalar damping)
 Set the damping of the ShapeOp solver. For more details see ShapeOp::Solver.
 
SHAPEOP_API int shapeop_addConstraint (ShapeOpSolver *op, const char *constraintType, int *ids, int nb_ids, ShapeOpScalar weight)
 Add a constraint to the ShapeOp solver. More...
 
SHAPEOP_API shapeop_err shapeop_editConstraint (ShapeOpSolver *op, const char *constraintType, int constraint_id, const ShapeOpScalar *scalars, int nb_scl)
 Add a constraint to the ShapeOp solver. More...
 
SHAPEOP_API int shapeop_addGravityForce (ShapeOpSolver *op, ShapeOpScalar *force)
 Add a gravity force to the ShapeOp solver. For more details see ShapeOp::GravityForce. More...
 
SHAPEOP_API int shapeop_addVertexForce (ShapeOpSolver *op, ShapeOpScalar *force, int id)
 Add a vertex force to the ShapeOp solver. For more details see ShapeOp::VertexForce.
 
SHAPEOP_API void shapeop_editVertexForce (ShapeOpSolver *op, int force_id, ShapeOpScalar *force, int id)
 Edit a vertex force previously added to the ShapeOp solver. For more details see ShapeOp::VertexForce.
 

Detailed Description

This file implements a C API for the ShapeOp C++ library.

To use the library you need to:

1) Create the solver with shapeop_create

2) Set the vertices with shapeop_setPoints

3) Setup the constraints and forces with shapeop_addConstraint and shapeop_editConstraint

4) Initalize the solver with shapeop_init or shapeop_initDynamic

5) Optimize with shapeop_solve

6) Get back the vertices with shapeop_getPoints

7) Delete the solver with shapeop_delete

Enumeration Type Documentation

ShapeOp Success and Error type. This list might be extended. To simply test for errors, use =! SO_SUCCESS.

Enumerator
SO_INVALID_CONSTRAINT_TYPE 

ShapeOp Success type indicating that no error happened.

SO_INVALID_ARGUMENT_LENGTH 

ShapeOp Error type indicating an invalid constraint type provided.

SO_UNMATCHING_CONSTRAINT_ID 

ShapeOp Error type indicating an invalid length of an array argument.

Function Documentation

SHAPEOP_API int shapeop_addConstraint ( ShapeOpSolver op,
const char *  constraintType,
int *  ids,
int  nb_ids,
ShapeOpScalar  weight 
)

Add a constraint to the ShapeOp solver.

Parameters
opThe ShapeOp Solver object
constraintTypeA c-style string containing one of the following constraint types listed in the documentation of ShapeOp::Constraint::shapeConstraintFactory:
idsThe array of indices of the points subject to the constraint. See documentation of the corresponding constraint in Constraint.h
nb_idsThe length or number of indices in ids.
weightThe weight of the constraint to be added relative to the other constraints in the ShapeOpSolver.
Returns
constraint index in the solver. -1 if adding failed.
SHAPEOP_API int shapeop_addGravityForce ( ShapeOpSolver op,
ShapeOpScalar force 
)

Add a gravity force to the ShapeOp solver. For more details see ShapeOp::GravityForce.

Parameters
opThe ShapeOp Solver object
forceA c-style array of 3 ShapeOpScalar's specifying the force vector in each dimension
SHAPEOP_API shapeop_err shapeop_editConstraint ( ShapeOpSolver op,
const char *  constraintType,
int  constraint_id,
const ShapeOpScalar scalars,
int  nb_scl 
)

Add a constraint to the ShapeOp solver.

Parameters
opThe ShapeOp Solver object
constraintTypeA c-style string containing one of the following constraint types
constraint_idThe id of the constraint, which is returned in shapeop_addConstraint.
scalarsA c-style array of ShapeOpScalar's. See documentation of the corresponding constraint in Constraint.h
nb_sclThe length of the array scalars.
Returns
See shapeop_err
SHAPEOP_API int shapeop_init ( ShapeOpSolver op)

Initialize the ShapeOp solver for static geometry processing. For more details see ShapeOp::Solver.

Returns
0 on success, 1 otherwise
SHAPEOP_API int shapeop_initDynamic ( ShapeOpSolver op,
ShapeOpScalar  masses,
ShapeOpScalar  damping,
ShapeOpScalar  timestep 
)

Initialize the ShapeOp solver for dynamic geometry processing. For more details see ShapeOp::Solver.

Returns
0 on success, 1 otherwise
SHAPEOP_API int shapeop_solve ( ShapeOpSolver op,
unsigned int  iteration 
)

Run the optimization. For more details see ShapeOp::Solver.

Returns
0 on success, 1 otherwise