Go to the documentation of this file.
18 #ifndef ExprBuiltins_h
19 #define ExprBuiltins_h
31 inline double cosd(
double x) {
return cos(
rad(
x)); }
33 inline double tand(
double x) {
return tan(
rad(
x)); }
40 inline double clamp(
double x,
double lo,
double hi) {
return x < lo ? lo : x > hi ? hi :
x; }
41 inline double round(
double x) {
return x < 0 ? ceil(
x - 0.5) : floor(
x + 0.5); }
42 inline double max(
double x,
double y) {
return x >
y ?
x :
y; }
43 inline double min(
double x,
double y) {
return x <
y ?
x :
y; }
46 inline double invert(
double x) {
return 1 -
x; }
47 double compress(
double x,
double lo,
double hi);
48 double expand(
double x,
double lo,
double hi);
49 double fit(
double x,
double a1,
double b1,
double a2,
double b2);
50 double gamma(
double x,
double g);
51 double bias(
double x,
double b);
57 double remap(
double x,
double s,
double r,
double f,
double interp);
58 double mix(
double x,
double y,
double alpha);
65 double hash(
int n,
double* args);
73 double fbm(
int n,
const Vec3d* args);
81 double dist(
double ax,
double ay,
double az,
double bx,
double by,
double bz);
83 double hypot(
double x,
double y);
93 double pick(
int n,
double* params);
94 double choose(
int n,
double* params);
95 double wchoose(
int n,
double* params);
96 double spline(
int n,
double* params);
double compress(double x, double lo, double hi)
double pnoise(const Vec3d &p, const Vec3d &period)
Vec3d vfbm(int n, const Vec3d *args)
double dot(const Vec3d &a, const Vec3d &b)
double noise(int n, const Vec3d *args)
The result is computed int int< br >< div style="margin-left: 40px;"> Picks values randomly between loRange and hiRange based on supplied index(which is automatically hashed).  
with numParticles numAttributes A variable block contains variable names and types but doesn t care what the values are< pre > void f(const std::string &s, MyParticleData *p, int outputDim=3)
Vec3d hsi(int n, const Vec3d *args)
Vec3d up(const Vec3d &P, const Vec3d &upvec)
Vec3d cturbulence(int n, const Vec3d *args)
double atan2d(double y, double x)
double remap(double x, double source, double range, double falloff, double interp)
void(* Define3)(const char *name, ExprFunc f, const char *docString)
void defineBuiltins(ExprFunc::Define define, ExprFunc::Define3 define3)
double choose(int n, double *params)
Vec3d ccellnoise(const Vec3d &p)
double contrast(double x, double c)
double length(const Vec3d &v)
double pick(int n, double *params)
This is the same as the prman cellnoise function< br ></div >< br > float< b > float y< br > float< b > float y
double bias(double x, double b)
double smoothstep(double x, double a, double b)
double dist(double ax, double ay, double az, double bx, double by, double bz)
The result is computed int int hiRange
The result is computed int loRange
double expand(double x, double lo, double hi)
Defined as float g float a1
double mix(double x, double y, double alpha)
double min(double x, double y)
Vec3d vturbulence(int n, const Vec3d *args)
double cycle(double index, double loRange, double hiRange)
double linearstep(double x, double a, double b)
Vec3d cnoise(const Vec3d &p)
Vec3d cross(const Vec3d &a, const Vec3d &b)
double clamp(double x, double lo, double hi)
double max(double x, double y)
Vec3d midhsi(int n, const Vec3d *args)
</pre > To parallelize evaluation per a simple parallel_for can be p blocked_range r
double snoise(const Vec3d &p)
double hypot(double x, double y)
Defined as a *alpha b *alpha< br ></div >< br > float< b > float a
double fit(double x, double a1, double b1, double a2, double b2)
Vec3d vnoise(const Vec3d &p)
double wchoose(int n, double *params)
Vec< double, 3, false > Vec3d
double fbm(int n, const Vec3d *args)
double gamma(double x, double g)
Vec3d rgbtohsl(const Vec3d &rgb)
Defined as float g float float float a2
Vec3d hsltorgb(const Vec3d &hsl)
Defined as float g float float b1
Vec3d ortho(const Vec3d &a, const Vec3d &b)
double angle(const Vec3d &a, const Vec3d &b)
double boxstep(double x, double a)
void(* Define)(const char *name, ExprFunc f)
double turbulence(int n, const Vec3d *args)
* sin(val)/val" </pre> we would get <pre> | | | | | </pre> or if we did <pre> ./asciiGraph "x-3" </pre> we'd get <pre> | | ------------------------------|----------------- | | | | | </pre> <h2>Implement the subclass</h2> First we subclass Expression and give it a const ructor
double hash(int n, double *args)
</pre >< h3 > A simple variable reference</h3 > This is not a very interesting subclass of expression until we add some additional variables Variables on some applications may be very dynamic In this we only need x
double cellnoise(const Vec3d &p)
double gaussstep(double x, double a, double b)
Vec3d cfbm(int n, const Vec3d *args)
Vec3d norm(const Vec3d &a)
double spline(int n, double *params)