GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  SOCALCULATOR (3)

NAME

SoCalculator — a general-purpose calculator

CONTENTS

Inherits From
Synopsis
Description
Inputs
Outputs
Methods
File Format/defaults
See Also

INHERITS FROM

SoBase > SoFieldContainer > SoEngine > SoCalculator

SYNOPSIS

#include <Inventor/engines/SoCalculator.h>

Inputs from class SoCalculator:

    SoMFFloat    
                    
SoMFFloat            a    
SoMFFloat    
                    
SoMFFloat            b    
SoMFFloat    
                    
SoMFFloat            c    
SoMFFloat    
                    
SoMFFloat            d    
SoMFFloat    
                    
SoMFFloat            e    
SoMFFloat    
                    
SoMFFloat            f    
SoMFFloat    
                    
SoMFFloat            g    
SoMFFloat    
                    
SoMFFloat            h    
SoMFVec3f    
                    
SoMFVec3f            A    
SoMFVec3f    
                    
SoMFVec3f            B    
SoMFVec3f    
                    
SoMFVec3f            C    
SoMFVec3f    
                    
SoMFVec3f            D    
SoMFVec3f    
                    
SoMFVec3f            E    
SoMFVec3f    
                    
SoMFVec3f            F    
SoMFVec3f    
                    
SoMFVec3f            G    
SoMFVec3f    
                    
SoMFVec3f            H    
SoMFString    
                    
SoMFString           expression

Outputs from class SoCalculator:

    (SoMFFloat)    
                    
(SoMFFloat)          oa    
(SoMFFloat)    
                    
(SoMFFloat)          ob    
(SoMFFloat)    
                    
(SoMFFloat)          oc    
(SoMFFloat)    
                    
(SoMFFloat)          od    
(SoMFVec3f)    
                    
(SoMFVec3f)          oA    
(SoMFVec3f)    
                    
(SoMFVec3f)          oB    
(SoMFVec3f)    
                    
(SoMFVec3f)          oC    
(SoMFVec3f)    
                    
(SoMFVec3f)          oD

Methods from class SoCalculator:

       
                    
                     SoCalculator()

Methods from class SoEngine:

    static SoType    
                    
static SoType        getClassTypeId()    
virtual int    
                    
virtual int          getOutputs(SoEngineOutputList &list) const    
SoEngineOutput *    
                    
SoEngineOutput *     getOutput(const SbName &outputName) const    
SbBool    
                    
SbBool               getOutputName(const SoEngineOutput *output, SbName &outputName) const    
SoEngine *    
                    
SoEngine *           copy() const    
static SoEngine *    
                    
static SoEngine *    getByName(const SbName &name)    
static int    
                    
static int           getByName(const SbName &name, SoEngineList &list)

Methods from class SoFieldContainer:

    void    
                    
void                 setToDefaults()    
SbBool    
                    
SbBool               hasDefaultValues() const    
SbBool    
                    
SbBool               fieldsAreEqual(const SoFieldContainer *fc) const    
void    
                    
void                 copyFieldValues(const SoFieldContainer *fc, SbBool copyConnections = FALSE)    
SbBool    
                    
SbBool               set(const char *fieldDataString)    
void    
                    
void                 get(SbString &fieldDataString)    
virtual int    
                    
virtual int          getFields(SoFieldList &resultList) const    
virtual SoField *    
                    
virtual SoField *    getField(const SbName &fieldName) const    
SbBool    
                    
SbBool               getFieldName(const SoField *field, SbName &fieldName) const    
SbBool    
                    
SbBool               isNotifyEnabled() const    
SbBool    
                    
SbBool               enableNotify(SbBool flag)

Methods from class SoBase:

    void    
                    
void                 ref()    
void    
                    
void                 unref() const    
void    
                    
void                 unrefNoDelete() const    
void    
                    
void                 touch()    
virtual SoType    
                    
virtual SoType       getTypeId() const    
SbBool    
                    
SbBool               isOfType(SoType type) const    
virtual void    
                    
virtual void         setName(const SbName &name)    
virtual SbName    
                    
virtual SbName       getName() const

DESCRIPTION

This engine is a general-purpose calculator. The calculator operates on floating-point values and 3D floating-point vectors. The engine takes up to eight inputs of each type (SoMFFloat and SoMFVec3f), and produces up to four outputs of each type.

Each input field (a-h, A-H) can have multiple values, allowing the engine to evaluate the expression with different values in parallel. Some inputs may have more values than others. In such cases, the last value of the shorter inputs will be repeated as necessary.

The expression input string specifies the expression to be evaluated. An expression can consist of multiple subexpressions. Several subexpressions can be specified in one string, separated by semicolons (;). Alternatively, the subexpressions can be stored in separate strings in the multiple-valued input field.

Each subexpression is of the form:



<lhs> = <rhs>

The <lhs> can be any one of the outputs or a temporary variable. The engine provides 8 temporary floating-point variables (ta, tb, tc, td, te, tf, tg, and th), and 8 temporary vector variables (tA, tB, tC, tD, tE, tF, tG, and tH). You can assign a value to one component of a vector output (A-H) or a vector variable (tA-tH) by using the [] operator. For example, oA[0] = <rhs>, will evaluate the right hand side and assign the value to the first component of the output vector oA.

The <rhs> supports arithmetic, logical and conditional operators. They are:



(unary) !, - (binary) +, -, *, /, %, <, > <=, >=, ==, !=, &&, || (ternary) ? :

The ternary operator is a conditional operator. For example, a ? b : c evaluates to b if a != 0, and to c if a==0.

Valid operands for the <rhs> include the inputs, outputs, temporary variables, and their components (e.g. oA[0]). Operands can also be numeric constants (e.g. 1.0), pre-defined named constants, or pre-defined functions.

The named constants are:



MAXFLOAT MINFLOAT M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_SQRT2 = sqrt(2) M_SQRT1_2 = sqrt(1/2)

Most of the pre-defined functions come from the math library:


cos, sin, tan, acos, asin, atan, atan2, cosh, sinh, tanh, sqrt, pow, exp, log, log10, ceil, floor, fabs, fmod.

Other functions are defined by SoCalculator. They are:


rand(f) - Random number generator cross(v1, v2) - Vector cross product dot(v1, v2) - Vector dot product length(v) - Vector length normalize(v) - Normalize vector vec3f(f1, f2, f3) - Generate a vector from 3 floats

The subexpressions are evaluated in order, so a variable set in the <lhs> of an earlier expression may be used in the <rhs> of a later expression.

Note, when the input has multiple values, all the subexpressions specified in the expression are applied to all the multiple input values. This is unlike the SoBoolOperation engine, where each operation is applied only to the corresponding entries of the input data. Note also, that even though the inputs and outputs can have multiple values the [] operator is only for indexing into the values of a single vector. It does not index into the multiple values of a field. For example, if the floating-point input field a has two values: 1.0, and 2.0, then the expression



"oA[0]=a; oA[1]=a; oA[2]=0.0"

will produce two output vectors in oA: (1.0, 1.0, 0.0) and (2.0, 2.0, 0.0).

Examples of expressions:



"ta = oA[0]*floor(a)" "tb = (a+b)*sin(M_PI)" "oA = vec3f(ta, tb, ta+tb)" "oB = normalize(oA)" "ta = a; tb = sin(ta); oA = vec3f(ta, tb, 0)"

INPUTS

    SoMFFloat    
                    
SoMFFloat            a    
SoMFFloat    
                    
SoMFFloat            b    
SoMFFloat    
                    
SoMFFloat            c    
SoMFFloat    
                    
SoMFFloat            d    
SoMFFloat    
                    
SoMFFloat            e    
SoMFFloat    
                    
SoMFFloat            f    
SoMFFloat    
                    
SoMFFloat            g    
SoMFFloat    
                    
SoMFFloat            h
Inputs a-h are the floating-point values.

    SoMFVec3f    
                    
SoMFVec3f            A    
SoMFVec3f    
                    
SoMFVec3f            B    
SoMFVec3f    
                    
SoMFVec3f            C    
SoMFVec3f    
                    
SoMFVec3f            D    
SoMFVec3f    
                    
SoMFVec3f            E    
SoMFVec3f    
                    
SoMFVec3f            F    
SoMFVec3f    
                    
SoMFVec3f            G    
SoMFVec3f    
                    
SoMFVec3f            H
Inputs A-H are the vectors.

    SoMFString    
                    
SoMFString           expression
The expression to be evaluated.

OUTPUTS

    (SoMFFloat)    
                    
(SoMFFloat)          oa    
(SoMFFloat)    
                    
(SoMFFloat)          ob    
(SoMFFloat)    
                    
(SoMFFloat)          oc    
(SoMFFloat)    
                    
(SoMFFloat)          od
Outputs oa-od are the floating-point values.

    (SoMFVec3f)    
                    
(SoMFVec3f)          oA    
(SoMFVec3f)    
                    
(SoMFVec3f)          oB    
(SoMFVec3f)    
                    
(SoMFVec3f)          oC    
(SoMFVec3f)    
                    
(SoMFVec3f)          oD
Outputs oA-oD are the vectors.

METHODS

       
                    
                     SoCalculator()
Constructor

FILE FORMAT/DEFAULTS

Calculator {



a           0
b           0
c           0
d           0
e           0
f           0
g           0
h           0
A           0 0 0
B           0 0 0
C           0 0 0
D           0 0 0
E           0 0 0
F           0 0 0
G           0 0 0
H           0 0 0
expression  ""


}

SEE ALSO

SoEngineOutput, SoBoolOperation

Search for    or go to Top of page |  Section 3 |  Main Index


SOCALCULATOR(3IV) (-->)

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.