41 Pos3D(
double storage[]) : x(storage[0]), y(storage[1]), z(storage[2])
42 { std::cout <<
"Pos3D addresses: " << &x <<
' ' << &y <<
' ' << &z <<std::endl; }
48 static size_t const size = 3;
51 std::ostream &
operator<<(std::ostream & os, Pos3D
const & pos)
52 { os <<
"Pos3D(" << pos.x <<
", " << pos.y <<
", " << pos.z <<
')';
return os; }
56 Vel3D(
double storage[]) : vx(storage[0]), vy(storage[1]), vz(storage[2])
57 { std::cout <<
"Vel3D addresses: " << &vx <<
' ' << &vy <<
' ' << &vz <<std::endl; }
63 static size_t const size = 3;
66 std::ostream &
operator<<(std::ostream & os, Vel3D
const & vel)
67 { os <<
"Vel3D(" << vel.vx <<
", " << vel.vy <<
", " << vel.vz <<
')';
return os; }
69 int main(
int argc,
char const * argv[])
74 myState::datatype data;
77 state.get<Pos3D>().x = 1.0;
78 state.get<Pos3D>().y = 2.0;
79 state.get<Pos3D>().z = 3.0;
81 state.get<Vel3D>().vx = 4.0;
82 state.get<Vel3D>().vy = 5.0;
83 state.get<Vel3D>().vz = 6.0;
86 std::cout <<
"Pos3D only: " << state.get<Pos3D>() << std::endl;
88 std::cout <<
"Full state: " << state << std::endl;
95 FactoryState::datatype factorydata;
96 FactoryState s(factorydata);
98 std::cout <<
"FactoryState size = " << FactoryState::size << std::endl;
100 ComplicatedState::datatype csdata;
101 ComplicatedState cs(csdata);
103 std::cout <<
"ComplicatedState size = " << ComplicatedState::size << std::endl;
105 cs.get<Vel3D>().vy = 123.0;
106 cs.get<FactoryState>().get<Pos3D>().x = 456.0;
107 cs.get<FactoryState>().get<MachineState>().get<Pos3D>().z = 789.0;
109 std::cout <<
"ComplicatedState: " << cs << std::endl;
111 size_t idx = cs.indexof(cs.get<FactoryState>().get<MachineState>().get<Vel3D>().vy);
117 std::cout <<
"index test: index = " << idx <<
", value = " << cs[idx] << std::endl;
118 std::cout <<
"index test: value = " << cs.get<FactoryState>().get<MachineState>().get<Vel3D>().vy << std::endl;
121 FactoryState & baseref = cs.get<FactoryState>();
122 size_t baseidx = cs.index<FactoryState>();
123 size_t offset = baseref.indexof(baseref.get<Vel3D>().vx);
124 std::cout <<
"baseidx = " << baseidx <<
", offset = " << offset <<std::endl;
126 cs[baseidx + offset] = 27.0;
128 std::cout <<
"ComplicatedState: " << cs << std::endl;
133 gauss.
mean(gauss.elem->get<Pos3D>().x) = 10;
134 gauss.
mean(gauss.elem->get<Pos3D>().y) = 20;
135 gauss.
mean(gauss.elem->get<Pos3D>().z) = 30;
137 gauss.
covariance(gauss.elem->get<Pos3D>().x) = 4*4;
138 gauss.
covariance(gauss.elem->get<Pos3D>().y) = 4*4;
139 gauss.
covariance(gauss.elem->get<Pos3D>().z) = 4*4;
142 printf(
"Set Particle\n");
143 particles.at(1, particles.elem->get<Pos3D>().x) = 10;
144 particles.at(1) = 4.5;
145 printf(
"Show Particle\n");
147 printf(
"Pos 3d %f %f %f %f\n",
148 particles.at(1, particles.elem->get<Pos3D>().x),
149 particles.at(1, particles.elem->get<Pos3D>().y),
150 particles.at(1, particles.elem->get<Pos3D>().z),
157 for(uint i=0; i<samples.size(); i++)
160 printf(
"Pos 3d (%f %f %f) %f\n",
161 samples.at(i, samples.elem->get<Pos3D>().x),
162 samples.at(i, samples.elem->get<Pos3D>().y),
163 samples.at(i, samples.elem->get<Pos3D>().z),