5 #include <osg\Referenced>
33 std::string
const AttractorName() {
return "Null"; }
35 virtual osg::Vec3 getNextPoint(
double x,
double y,
double z,
const Parameters& params )
40 virtual double getDefaultSize()
48 std::string
const AttractorName() {
return "Lorenz"; }
50 virtual osg::Vec3 getNextPoint(
double x,
double y,
double z,
const Parameters& params )
52 return osg::Vec3(x + params[0].value * params[3].value * (y - x),
53 y + params[3].value * (params[1].value * x - y - z*x),
54 z + params[3].value * (x*y - params[2].value * z));
57 virtual double getDefaultSize()
65 std::string
const AttractorName() {
return "Lorenz84"; }
67 virtual osg::Vec3 getNextPoint(
double x,
double y,
double z,
const Parameters& params )
69 return osg::Vec3(x + params[4].value * (-params[0].value*x -y*y - z*z + params[0].value * params[2].value),
70 y + params[4].value * (-y + x*y -params[1].value*x*z + params[3].value),
71 z + params[4].value * (-z + params[1].value*x*y +x*z));
74 virtual double getDefaultSize()
83 std::string
const AttractorName() {
return "Pickover"; }
85 virtual osg::Vec3 getNextPoint(
double x,
double y,
double z,
const Parameters& params )
87 return osg::Vec3(sin(params[0].value * y) - z * cos(params[1].value * x),
88 z * sin(params[2].value * x) - cos(params[3].value * y),
92 virtual double getDefaultSize()
101 std::string
const AttractorName() {
return "Rossler"; }
103 virtual osg::Vec3 getNextPoint(
double x,
double y,
double z,
const Parameters& params )
105 return osg::Vec3(x - params[3].value * (y + z),
106 y + params[3].value * (params[1].value + (x*y) - (params[2].value*y)),
107 z + params[3].value * (x + (params[0].value*z)));
110 virtual double getDefaultSize()
119 std::string
const AttractorName() {
return "Polynomial"; }
121 virtual osg::Vec3 getNextPoint(
double x,
double y,
double z,
const Parameters& params )
123 return osg::Vec3(params[0].value + y - y*z,
124 params[1].value + z - x*z,
125 params[2].value + x - x*y);
128 virtual double getDefaultSize()
137 std::string
const AttractorName() {
return "Ikeda"; }
139 virtual osg::Vec3 getNextPoint(
double x,
double y,
double z,
const Parameters& params )
141 return osg::Vec3(params[0].value + params[1].value * (x * cos(z) - y * sin(z)),
142 params[1].value * (x * sin(z) + y * cos(z)),
143 params[2].value - params[3].value / (1 + x * x + y * y));
146 virtual double getDefaultSize()