OpenCMISS-Zinc C++ API Documentation
Friends | List of all members
OpenCMISS::Zinc::FieldProjection Class Reference

A projection field returning the result of a matrix multiplication with perspective division on the source field vector. More...

#include <fieldmatrixoperators.hpp>

Inheritance diagram for OpenCMISS::Zinc::FieldProjection:
OpenCMISS::Zinc::Field

Friends

FieldProjection Fieldmodule::createFieldProjection (const Field &sourceField, const Field &projectionMatrixField)
 

Additional Inherited Members

- Public Types inherited from OpenCMISS::Zinc::Field
enum  ChangeFlag {
  CHANGE_FLAG_NONE = CMZN_FIELD_CHANGE_FLAG_NONE, CHANGE_FLAG_ADD = CMZN_FIELD_CHANGE_FLAG_ADD, CHANGE_FLAG_REMOVE = CMZN_FIELD_CHANGE_FLAG_REMOVE, CHANGE_FLAG_IDENTIFIER = CMZN_FIELD_CHANGE_FLAG_IDENTIFIER,
  CHANGE_FLAG_DEFINITION = CMZN_FIELD_CHANGE_FLAG_DEFINITION, CHANGE_FLAG_FULL_RESULT = CMZN_FIELD_CHANGE_FLAG_FULL_RESULT, CHANGE_FLAG_PARTIAL_RESULT = CMZN_FIELD_CHANGE_FLAG_PARTIAL_RESULT, CHANGE_FLAG_RESULT = CMZN_FIELD_CHANGE_FLAG_RESULT,
  CHANGE_FLAG_FINAL = CMZN_FIELD_CHANGE_FLAG_FINAL
}
 
enum  CoordinateSystemType {
  COORDINATE_SYSTEM_TYPE_INVALID = CMZN_FIELD_COORDINATE_SYSTEM_TYPE_INVALID, COORDINATE_SYSTEM_TYPE_RECTANGULAR_CARTESIAN = CMZN_FIELD_COORDINATE_SYSTEM_TYPE_RECTANGULAR_CARTESIAN, COORDINATE_SYSTEM_TYPE_CYLINDRICAL_POLAR = CMZN_FIELD_COORDINATE_SYSTEM_TYPE_CYLINDRICAL_POLAR, COORDINATE_SYSTEM_TYPE_SPHERICAL_POLAR = CMZN_FIELD_COORDINATE_SYSTEM_TYPE_SPHERICAL_POLAR,
  COORDINATE_SYSTEM_TYPE_PROLATE_SPHEROIDAL = CMZN_FIELD_COORDINATE_SYSTEM_TYPE_PROLATE_SPHEROIDAL, COORDINATE_SYSTEM_TYPE_OBLATE_SPHEROIDAL = CMZN_FIELD_COORDINATE_SYSTEM_TYPE_OBLATE_SPHEROIDAL, COORDINATE_SYSTEM_TYPE_FIBRE = CMZN_FIELD_COORDINATE_SYSTEM_TYPE_FIBRE
}
 
enum  DomainType {
  DOMAIN_TYPE_INVALID = CMZN_FIELD_DOMAIN_TYPE_INVALID, DOMAIN_TYPE_POINT = CMZN_FIELD_DOMAIN_TYPE_POINT, DOMAIN_TYPE_NODES = CMZN_FIELD_DOMAIN_TYPE_NODES, DOMAIN_TYPE_DATAPOINTS = CMZN_FIELD_DOMAIN_TYPE_DATAPOINTS,
  DOMAIN_TYPE_MESH1D = CMZN_FIELD_DOMAIN_TYPE_MESH1D, DOMAIN_TYPE_MESH2D = CMZN_FIELD_DOMAIN_TYPE_MESH2D, DOMAIN_TYPE_MESH3D = CMZN_FIELD_DOMAIN_TYPE_MESH3D, DOMAIN_TYPE_MESH_HIGHEST_DIMENSION = CMZN_FIELD_DOMAIN_TYPE_MESH_HIGHEST_DIMENSION
}
 
enum  ValueType { VALUE_TYPE_INVALID = CMZN_FIELD_VALUE_TYPE_INVALID, VALUE_TYPE_REAL = CMZN_FIELD_VALUE_TYPE_REAL, VALUE_TYPE_STRING = CMZN_FIELD_VALUE_TYPE_STRING, VALUE_TYPE_MESH_LOCATION = CMZN_FIELD_VALUE_TYPE_MESH_LOCATION }
 
typedef int ChangeFlags
 
typedef int DomainTypes
 
- Public Member Functions inherited from OpenCMISS::Zinc::Field
 Field (cmzn_field_id field_id)
 
 Field (const Field &field)
 
Fieldoperator= (const Field &field)
 
bool isValid () const
 
cmzn_field_id getId () const
 
Fieldassignment createFieldassignment (const Field &sourceField)
 
bool isManaged ()
 
int setManaged (bool value)
 
char * getComponentName (int componentNumber)
 
int setComponentName (int componentNumber, const char *name)
 
double getCoordinateSystemFocus ()
 
int setCoordinateSystemFocus (double focus)
 
CoordinateSystemType getCoordinateSystemType ()
 
int setCoordinateSystemType (CoordinateSystemType coordinateSystemType)
 
int getNumberOfComponents ()
 
char * getName ()
 
int setName (const char *name)
 
int getNumberOfSourceFields ()
 
Field getSourceField (int index)
 
bool isTypeCoordinate ()
 
int setTypeCoordinate (bool value)
 
ValueType getValueType ()
 
Fieldmodule getFieldmodule () const
 
int assignMeshLocation (const Fieldcache &cache, const Element &element, int coordinatesCount, const double *coordinatesIn)
 
int assignReal (const Fieldcache &cache, int valuesCount, const double *valuesIn)
 
int assignString (const Fieldcache &cache, const char *stringValue)
 
Element evaluateMeshLocation (const Fieldcache &cache, int coordinatesCount, double *coordinatesOut)
 
int evaluateReal (const Fieldcache &cache, int valuesCount, double *valuesOut)
 
char * evaluateString (const Fieldcache &cache)
 
int evaluateDerivative (const Differentialoperator&differentialOperator, const Fieldcache &cache, int valuesCount, double *valuesOut)
 
bool isDefinedAtLocation (const Fieldcache &cache)
 
int smooth (const Fieldsmoothing &fieldsmoothing)
 
FieldComponent castComponent ()
 
FieldEdgeDiscontinuity castEdgeDiscontinuity ()
 
FieldEigenvalues castEigenvalues ()
 
FieldElementGroup castElementGroup ()
 
FieldFindMeshLocation castFindMeshLocation ()
 
FieldFiniteElement castFiniteElement ()
 
FieldGroup castGroup ()
 
FieldImage castImage ()
 
FieldImagefilterBinaryThreshold castImagefilterBinaryThreshold ()
 
FieldImagefilterDiscreteGaussian castImagefilterDiscreteGaussian ()
 
FieldImagefilterHistogram castImagefilterHistogram ()
 
FieldImagefilterThreshold castImagefilterThreshold ()
 
FieldMeshIntegral castMeshIntegral ()
 
FieldNodeGroup castNodeGroup ()
 
FieldStoredMeshLocation castStoredMeshLocation ()
 
FieldStoredString castStoredString ()
 
- Protected Attributes inherited from OpenCMISS::Zinc::Field
cmzn_field_id id
 

Detailed Description

A projection field returning the result of a matrix multiplication with perspective division on the source field vector.

A projection field returning the result of a matrix multiplication with perspective division on the source field vector. The source_field vector is expanded to a homogeneous coordinate by appending a component of value 1, which is multiplied by the projection_matrix_field, and the extra calculated value resulting from the unit component is used to divide through each of the other components to give a perspective projection in the resulting field. The projection_matrix_field must have have a multiple of (source_field->number_of_components + 1) components forming a matrix with that many columns and the resulting (number_of_components + 1) rows. The first values in the projection_matrix are across the first row, followed by the next row and so on. Hence a 4x4 matrix transforms a 3-component vector to a 3-component vector: [x'] = [m1 m2 m3 m4 ][x] [y'] = [m5 m6 m7 m8 ][y] [z'] = [m9 m10 m11 m12][z] [h'] = [m13 m14 m15 m16][1] The resulting field returns 3 components [x'/h', y'/h', z'/h']


The documentation for this class was generated from the following file: