#include <core_OPERATOR.h>
Protected Member Functions | |
mobiusCore_EXPORT | core_OPERATOR (core_ProgressEntry progress, core_PlotterEntry plotter) |
Protected Member Functions inherited from mobius::core_IAlgorithm | |
mobiusCore_EXPORT | core_IAlgorithm (core_ProgressEntry progress, core_PlotterEntry plotter) |
Additional Inherited Members | |
Public Member Functions inherited from mobius::core_IAlgorithm | |
core_ProgressEntry & | GetProgress () const |
core_PlotterEntry & | GetPlotter () const |
void | SetStatusCode (const int status) |
int | GetStatusCode () const |
void | AddStatusCode (const int statBit) |
bool | HasStatusCode (const int statBit) const |
Public Member Functions inherited from mobius::core_OBJECT | |
mobiusCore_EXPORT void | IncRef () |
mobiusCore_EXPORT void | DecRef () |
mobiusCore_EXPORT int | NbRefs () const |
virtual mobiusCore_EXPORT void | Dump (std::ostream *out) const |
const mobiusCore_EXPORT std::string & | GetName () const |
mobiusCore_EXPORT void | SetName (const std::string &name) |
mobiusCore_EXPORT bool | HasName () const |
Protected Attributes inherited from mobius::core_IAlgorithm | |
core_ProgressEntry | m_progress |
Progress Notifier. | |
core_PlotterEntry | m_plotter |
Imperative Plotter. | |
int | m_iStatusCode |
Interface for modeling operators. By operator we understand something intuitively close to a symbol that can be used to denote a particular operation. The difference between operators, operations, algorithms, functions, and procedures is something not very clear. Here is the reasoning which we found very close to our own intuition [math.stackexchange.com]:
Function: a set of pairs constructed from two sets called the domain and codomain (target set). A function can be seen as an abstract (meaning "imagined" here) machine that consumes values from the domain and produces values from the codomain.
Operator: usually in higher math and physics contexts is a function whose domain includes other functions. Computer scientists call these "higher order functions."
Algorithm: a function with a well defined abstract implementation. Rather than just being a set theoretic invention (i.e., a set of pairs as functions are generally defined), algorithms are functions whose internal operations/calculation has a story. In the earlier analogy from functions, the abstract machines of algorithms can actually be picked apart and described. It is possible to talk about how long the machine runs, what subcomponents it has, how much space it uses etc... An algorithm is a "how" of a function.
Procedure: a super set of algorithms. Procedures do not have a connotation of mapping inputs to outputs, although they can if you want. A close notion to procedure is a "computational scheme," i.e., the algorithms combined to a super-algorithm.
Operation: a substitute for the word "function: usually used when you want to treat the function as a single atomic object. Ex: order of operations (here functions are the little things, and we are looking at a larger idea of how to evaluate them, what order, etc.). Another example: quicksort takes O(n log n) floating point operations on randomized inputs. Here operation is short hand for: addition, subtraction, division, multiplication, comparison. But those functions and their inputs (integers) really are not the main point. The main point is thatwe want to count how many times we do them, so we call them operations to make this context clear.
The operator for us a like a symbol, e.g., P1 P2 P3 s
is a modeling chain composed of operators P3
, then P2
, then P1
applied to the abstract shape s
. An operator can be seen as a function which maps one abstract shape with some representation scheme to another abstract shape possibly having a different representation scheme (e.g., voxels to b-rep mesh). An operator is also an algorithm, i.e., it is a sequence of operations to produce the result.
In Mobius, we have OBJECTs and OPERATORs working on them. Another way of seeing it is to say the OPERATOR is a modeling algorithm in Mobius.