SoCalculator man page on IRIX

Man page or keyword search:  
man Server   31559 pages
apropos Keyword Search (all sections)
Output format
IRIX logo
[printable version]



							     SoCalculator(3IV)

NAME
     SoCalculator (SoCalculator) - a general-purpose calculator

INHERITS FROM
     SoBase > SoFieldContainer > SoEngine > SoCalculator

SYNOPSIS
     #include <Inventor_c/engines/SoCalculator.h>

	  Inputs from class SoCalculator:

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

	  Outputs from class SoCalculator:

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

	  Functions from class SoCalculator:

     SoCalculator *	 SoCalculatorCreate()

	  Functions from class SoEngine:

     SoType		 SoCalculatorGetTypeId()
     int		 SoCalculatorGetOuts(const SoCalculator *this,
			      SoEngineOutputList *list)
     SoEngineOutput *	 SoCalculatorGetOut(const SoCalculator *this, const
			      char *outputName)

Page 1

SoCalculator(3IV)

     SbBool		 SoCalculatorGetOutName(const SoCalculator *this,
			      const SoEngineOutput *output, SbName
			      *outputName)
     SoEngine *		 SoCalculatorCopy(const SoCalculator *this)
     SoEngine *		 SoCalculatorGetByName(const char *name)
     int		 SoCalculatorGetByNameList(const char *name,
			      SoEngineList *list)

	  Functions from class SoFieldContainer:

     SoType		 SoCalculatorGetClassTypeId()
     void		 SoCalculatorSetToDflts(SoCalculator *this)
     SbBool		 SoCalculatorHasDfltVals(const SoCalculator *this)
     SbBool		 SoCalculatorFldsAreEq(const SoCalculator *this, const
			      SoFieldContainer *fc)
     void		 SoCalculatorCopyFieldVals(SoCalculator *this, const
			      SoFieldContainer *fc, SbBool copyConnections =
			      FALSE)
     SbBool		 SoCalculatorSet(SoCalculator *this, const char
			      *fieldDataString)
     void		 SoCalculatorGet(SoCalculator *this, SbString
			      *fieldDataString)
     int		 SoCalculatorGetFields(const SoCalculator *this,
			      SoFieldList *resultList)
     SoField *		 SoCalculatorGetField(const SoCalculator *this, const
			      char *fieldName)
     SbBool		 SoCalculatorGetFieldName(const SoCalculator *this,
			      const SoField *field, SbName *fieldName)
     SbBool		 SoCalculatorIsNotifyEnabled(const SoCalculator *this)
     SbBool		 SoCalculatorEnableNotify(SoCalculator *this, SbBool
			      flag)

	  Functions from class SoBase:

     void		 SoCalculatorRef(SoCalculator *this)
     void		 SoCalculatorUnref(const SoCalculator *this)
     void		 SoCalculatorUnrefNoDelete(const SoCalculator *this)
     void		 SoCalculatorTouch(SoCalculator *this)
     SbBool		 SoCalculatorIsOfType(const SoCalculator *this, SoType
			      type)
     void		 SoCalculatorSetName(SoCalculator *this, const char
			      *name)
     SbName		 SoCalculatorGetName(const SoCalculator *this)

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 (SoMFloat and SoMV3f), and produces up to
     four outputs of each type.

     Each input field (a-h, A-H) can have multiple values, allowing the engine

Page 2

							     SoCalculator(3IV)

     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:

Page 3

SoCalculator(3IV)

	  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		 a
     SoMFFloat		 b
     SoMFFloat		 c
     SoMFFloat		 d
     SoMFFloat		 e
     SoMFFloat		 f
     SoMFFloat		 g
     SoMFFloat		 h
	  Inputs a-h are the floating-point values.

Page 4

							     SoCalculator(3IV)

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

     SoMFString		 expression
	  The expression to be evaluated.

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

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

FUNCTIONS
     SoCalculator *	 SoCalculatorCreate()
	  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  ""

Page 5

SoCalculator(3IV)

     }

SEE ALSO
     SoEngineOutput, SoBoolOperation

Page 6

[top]

List of man pages available for IRIX

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net