--- /dev/null
+#include <msp/geometry/box.h>
+#include <msp/geometry/transformedshape.h>
+#include <msp/geometry/union.h>
+#include "beamgatetype.h"
+
+using namespace std;
+using namespace Msp;
+
+namespace R2C2 {
+
+BeamGateType::BeamGateType():
+ ObjectType(ArticleNumber(0))
+{
+ name = "Beam gate";
+ Geometry::TransformedShape<float, 3> box1(
+ Geometry::Box<float>(0.005, 0.03, 0.002),
+ Transform::translation(Vector(0, 0, 0.001)));
+ Geometry::TransformedShape<float, 3> box2(
+ Geometry::Box<float>(0.005, 0.008, 0.023),
+ Transform::translation(Vector(0, -0.025, 0.0125)));
+ Geometry::TransformedShape<float, 3> box3(
+ Geometry::Box<float>(0.005, 0.008, 0.023),
+ Transform::translation(Vector(0, 0.025, 0.0125)));
+ vector<Shape *> shapes;
+ shapes.push_back(&box1);
+ shapes.push_back(&box2);
+ shapes.push_back(&box3);
+ shape = Geometry::Union<float, 3>::from_iterator_range(shapes.begin(), shapes.end()).clone();
+}
+
+const BeamGateType &BeamGateType::instance()
+{
+ static BeamGateType type;
+ return type;
+}
+
+} // namespace R2C2