20# error "simlib3D.h: 19: you must include simlib.h first"
22#if __SIMLIB__ < 0x0212
23# error "simlib3D.h: 22: requires SIMLIB version 2.12 and higher"
35 double x()
const {
return _x; }
36 double y()
const {
return _y; }
37 double z()
const {
return _z; }
190 double Value()
override;
237Input
Xpart(Input3D a);
239Input
Ypart(Input3D a);
241Input
Zpart(Input3D a);
Converts 3 scalar inputs to single 3D vector output.
Adaptor3D(Input _x, Input _y, Input _z)
virtual Value3D Value() override
3D vector value that can't be changed
virtual Value3D Value() override
Constant3D(const Value3D &x)
Constant3D(double x, double y, double z)
virtual Value3D Value() override
simlib3::Integrator3D::special_input in
Integrator3D & operator=(const Value3D &a)
Input3D SetInput(Input3D i)
void Init(const Value3D &v)
block for numerical integration input is derivative, output is state
void Init(double initvalue)
set initial value of integrator
Special variable (can't be changed at simulation time)
Parameter3D & operator=(const Value3D &x)
Parameter3D(const Value3D &x=Value3D(0, 0, 0))
friend Value3D operator*(const Value3D &a, const Value3D &b)
friend double scalar_product(const Value3D &a, const Value3D &b)
friend Value3D operator-(const Value3D &a, const Value3D &b)
friend Value3D operator+(const Value3D &a, const Value3D &b)
friend Value3D operator/(const Value3D &a, const double b)
Value3D(double x, double y, double z)
friend double abs(const Value3D &a)
Variable3D & operator=(const Value3D &x)
virtual Value3D Value() override
Variable3D(const Value3D &x=Value3D(0, 0, 0))
abstract base class for all blocksblocks/SimObject have not copy semantics (TODO: add move semantics)
continuous 3D block with single input
Input3D SetInput(Input3D i)
continuous block vith 2 inputs and alg.
continuous block with 3 inputs and alg.
Abstract 3D block with single 3D output.
virtual Value3D Value()=0
abstract base for continuous blocks with single output suitable for expression-tree building and eval...
Implementation of class CalendarList interface is static - using global functions in SQS namespace.
Input operator-(Input a, Input b)
block operator -
Input operator+(Input a, Input b)
block operator +
Input Ypart(Input2D a)
get y part of (x,y) vector value
Input Xpart(Input2D a)
get x part of (x,y) vector value
Input operator*(Input a, Input b)
block operator *
Input ScalarProduct(Input2D x, Input2D y)
dot product: xvec . yvec
Input Zpart(Input3D a)
get z part of (x,y,z) vector value
int Print(const char *fmt,...)
for Output methods, can be redirected
Input operator/(Input a, Input b)
block operator /
Input2D UnitVector(Input2D x)
make unit vector from input (Abs(output_vec)==1)
3D vector block-expression handle