32 return layers.indexOf(
const_cast<SessionItem*
>(&layerItem)) == 0;
37 return layers.indexOf(
const_cast<SessionItem*
>(&layerItem)) == layers.size() - 1;
46 double thickness(0.0);
47 if (isTopLayer(layerItem))
49 else if (isBottomLayer(layerItem))
59 const QVector3D& origin)
66 double ztop =
static_cast<double>(origin.z());
67 double zbottom =
static_cast<double>(origin.z()) - thickness;
69 std::unique_ptr<RealSpace::Layer> result =
78 result->color = color;
83 std::unique_ptr<RealSpace::Particles::Particle>
88 std::unique_ptr<RealSpace::Particles::Particle> result;
100 std::unique_ptr<RealSpace::Particles::Particle>
103 std::unique_ptr<RealSpace::Particles::Particle> result;
106 double length = ff_AnisoPyramid->getLength();
107 double width = ff_AnisoPyramid->getWidth();
108 double height = ff_AnisoPyramid->getHeight();
109 double alpha = ff_AnisoPyramid->getAlpha();
110 result = std::make_unique<RealSpace::Particles::AnisoPyramid>(length, width, height, alpha);
112 double length = ff_BarGauss->getLength();
113 double width = ff_BarGauss->getWidth();
114 double height = ff_BarGauss->getHeight();
115 result = std::make_unique<RealSpace::Particles::BarGauss>(length, width, height);
117 double length = ff_BarLorentz->getLength();
118 double width = ff_BarLorentz->getWidth();
119 double height = ff_BarLorentz->getHeight();
120 result = std::make_unique<RealSpace::Particles::BarLorentz>(length, width, height);
121 }
else if (
auto ff_Box =
dynamic_cast<const FormFactorBox*
>(ff)) {
122 double length = ff_Box->getLength();
123 double width = ff_Box->getWidth();
124 double height = ff_Box->getHeight();
125 result = std::make_unique<RealSpace::Particles::Box>(length, width, height);
126 }
else if (
auto ff_Cone =
dynamic_cast<const FormFactorCone*
>(ff)) {
127 double radius = ff_Cone->getRadius();
128 double height = ff_Cone->getHeight();
129 double alpha = ff_Cone->getAlpha();
130 result = std::make_unique<RealSpace::Particles::Cone>(radius, height, alpha);
132 double baseedge = ff_Cone6->getBaseEdge();
133 double height = ff_Cone6->getHeight();
134 double alpha = ff_Cone6->getAlpha();
135 result = std::make_unique<RealSpace::Particles::Cone6>(baseedge, height, alpha);
137 double length = ff_Cuboctahedron->getLength();
138 double height = ff_Cuboctahedron->getHeight();
139 double height_ratio = ff_Cuboctahedron->getHeightRatio();
140 double alpha = ff_Cuboctahedron->getAlpha();
141 result = std::make_unique<RealSpace::Particles::Cuboctahedron>(length, height, height_ratio,
144 double radius = ff_Cylinder->getRadius();
145 double height = ff_Cylinder->getHeight();
146 result = std::make_unique<RealSpace::Particles::Cylinder>(radius, height);
148 double edge = ff_Dodecahedron->getEdge();
149 result = std::make_unique<RealSpace::Particles::Dodecahedron>(edge);
150 }
else if (
auto ff_Dot =
dynamic_cast<const FormFactorDot*
>(ff)) {
152 result = std::make_unique<RealSpace::Particles::Dot>();
153 }
else if (
auto ff_EllipsoidalCylinder =
155 double radius_x = ff_EllipsoidalCylinder->getRadiusX();
156 double radius_y = ff_EllipsoidalCylinder->getRadiusY();
157 double height = ff_EllipsoidalCylinder->getHeight();
159 std::make_unique<RealSpace::Particles::EllipsoidalCylinder>(radius_x, radius_y, height);
161 double radius = ff_FullSphere->getRadius();
162 result = std::make_unique<RealSpace::Particles::FullSphere>(radius);
164 double radius = ff_FullSpheroid->getRadius();
165 double height = ff_FullSpheroid->getHeight();
166 result = std::make_unique<RealSpace::Particles::FullSpheroid>(radius, height);
168 double radius_x = ff_HemiEllipsoid->getRadiusX();
169 double radius_y = ff_HemiEllipsoid->getRadiusY();
170 double height = ff_HemiEllipsoid->getHeight();
171 result = std::make_unique<RealSpace::Particles::HemiEllipsoid>(radius_x, radius_y, height);
173 double edge = ff_Icosahedron->getEdge();
174 result = std::make_unique<RealSpace::Particles::Icosahedron>(edge);
176 double baseedge = ff_Prism3->getBaseEdge();
177 double height = ff_Prism3->getHeight();
178 result = std::make_unique<RealSpace::Particles::Prism3>(baseedge, height);
180 double baseedge = ff_Prism6->getBaseEdge();
181 double height = ff_Prism6->getHeight();
182 result = std::make_unique<RealSpace::Particles::Prism6>(baseedge, height);
184 double baseedge = ff_Pyramid->getBaseEdge();
185 double height = ff_Pyramid->getHeight();
186 double alpha = ff_Pyramid->getAlpha();
187 result = std::make_unique<RealSpace::Particles::Pyramid>(baseedge, height, alpha);
189 double length = ff_CosineRippleBox->getLength();
190 double width = ff_CosineRippleBox->getWidth();
191 double height = ff_CosineRippleBox->getHeight();
192 result = std::make_unique<RealSpace::Particles::CosineRippleBox>(length, width, height);
194 double length = ff_CosineRippleGauss->getLength();
195 double width = ff_CosineRippleGauss->getWidth();
196 double height = ff_CosineRippleGauss->getHeight();
197 result = std::make_unique<RealSpace::Particles::CosineRippleGauss>(length, width, height);
198 }
else if (
auto ff_CosineRippleLorentz =
200 double length = ff_CosineRippleLorentz->getLength();
201 double width = ff_CosineRippleLorentz->getWidth();
202 double height = ff_CosineRippleLorentz->getHeight();
203 result = std::make_unique<RealSpace::Particles::CosineRippleLorentz>(length, width, height);
205 double length = ff_SawtoothRippleBox->getLength();
206 double width = ff_SawtoothRippleBox->getWidth();
207 double height = ff_SawtoothRippleBox->getHeight();
208 result = std::make_unique<RealSpace::Particles::SawtoothRippleBox>(length, width, height);
209 }
else if (
auto ff_SawtoothRippleGauss =
211 double length = ff_SawtoothRippleGauss->getLength();
212 double width = ff_SawtoothRippleGauss->getWidth();
213 double height = ff_SawtoothRippleGauss->getHeight();
214 result = std::make_unique<RealSpace::Particles::SawtoothRippleGauss>(length, width, height);
215 }
else if (
auto ff_SawtoothRippleLorentz =
217 double length = ff_SawtoothRippleLorentz->getLength();
218 double width = ff_SawtoothRippleLorentz->getWidth();
219 double height = ff_SawtoothRippleLorentz->getHeight();
221 std::make_unique<RealSpace::Particles::SawtoothRippleLorentz>(length, width, height);
223 double baseedge = ff_Tetrahedron->getBaseEdge();
224 double height = ff_Tetrahedron->getHeight();
225 double alpha = ff_Tetrahedron->getAlpha();
226 result = std::make_unique<RealSpace::Particles::Tetrahedron>(baseedge, height, alpha);
228 double length = ff_TruncatedCube->getLength();
229 double removed_length = ff_TruncatedCube->getRemovedLength();
230 result = std::make_unique<RealSpace::Particles::TruncatedCube>(length, removed_length);
232 double radius = ff_TruncatedSphere->getRadius();
233 double height = ff_TruncatedSphere->getHeight();
234 double deltaH = ff_TruncatedSphere->getRemovedTop();
235 result = std::make_unique<RealSpace::Particles::TruncatedSphere>(radius, height, deltaH);
237 double radius = ff_TruncatedSpheroid->getRadius();
238 double height = ff_TruncatedSpheroid->getHeight();
239 double hfc = ff_TruncatedSpheroid->getHeightFlattening();
240 double deltaH = ff_TruncatedSpheroid->getRemovedTop();
242 std::make_unique<RealSpace::Particles::TruncatedSpheroid>(radius, height, hfc, deltaH);
#define ASSERT(condition)
Defines class ExternalProperty.
Defines class GUIDomainSampleVisitor.
Includes all particle-shape form-factor definitions.
Defines class MultiLayerItem.
Defines class ParticleCompositionItem.
Defines class ParticleItem.
Defines class RealSpaceCanvas.
Defines some unit conversion factors and other constants in namespace Units.
Defines class VectorItem.
The ExternalProperty class defines custom QVariant property to carry the text, color and an identifie...
static const QString P_MATERIAL
static const QString P_THICKNESS
static const QString T_LAYERS
static const QString P_FORM_FACTOR
double layer_top_thickness() const
double layer_min_thickness() const
double layer_bottom_thickness() const
double layer_size() const
SessionItem * getGroupItem(const QString &groupName) const
Access subitem of group item.
QVector< SessionItem * > getItems(const QString &tag="") const
Returns vector of all items of given tag.
QVariant getItemValue(const QString &tag) const
Directly access value of item under given tag.
SessionItem * parent() const
Returns parent of this item.
QString modelType() const
Get model type.