259 FlT hCrystalBase(.5);
260 FlT hCrystalPyramid(.5);
266 vector<asl::AVec<>> pillar1{
asl::makeAVec(wPillar*.5, dPillar*.5,0.),
271 vector<asl::AVec<>> pillar2{
asl::makeAVec(dPillar*.5, wPillar*.5,0.),
276 vector<asl::AVec<>> pillarC{
asl::makeAVec(center[0]+rDisk-dPillar*.5, center[1], 0.),
280 vector<vector<asl::AVec<>>> pillarsPoints(4);
281 for(
unsigned int i(0); i<4; ++i)
282 pillarsPoints[i].resize(4);
284 for(
unsigned int i(0); i<4; ++i)
286 pillarsPoints[0][i] = pillar2[i] + pillarC[0];
287 pillarsPoints[1][i] = pillar2[i] + pillarC[1];
288 pillarsPoints[2][i] = pillar1[i] + pillarC[2];
289 pillarsPoints[3][i] = pillar1[i] + pillarC[3];
298 auto bath(-generateDFCylinderInf(rBath,
asl::makeAVec(0.,0.,1.),
301 auto diskBottom(generateDFCylinder(rDisk,
304 auto diskTop(generateDFCylinder(rDisk,
306 asl::makeAVec(center[0], center[1], -.5*hDisk - hAxis + dx*size[2])));
307 auto axis(generateDFCylinder(rAxis,
309 asl::makeAVec(center[0], center[1], - .5*hAxis - hDisk*.25 + dx*size[2])));
310 auto dfPillar1(generateDFConvexPolygonPrism(pillarsPoints[0]));
311 auto dfPillar2(generateDFConvexPolygonPrism(pillarsPoints[1]));
312 auto dfPillar3(generateDFConvexPolygonPrism(pillarsPoints[2]));
313 auto dfPillar4(generateDFConvexPolygonPrism(pillarsPoints[3]));
314 auto dfPillars((dfPillar1 | dfPillar2 | dfPillar3 | dfPillar4) &
315 generateDFPlane(makeAVec(0.,0.,-1.), makeAVec(0.,0.,.5*hDisk)) &
316 generateDFPlane(makeAVec(0.,0.,1.), makeAVec(0.,0.,-.5*hDisk - hAxis + dx*size[2])));
320 center+makeAVec(-aCrystal, aCrystal,0.),
321 center+makeAVec(-aCrystal, -aCrystal,0.),
322 center+makeAVec( aCrystal, -aCrystal,0.)}) &
323 generateDFPlane(makeAVec(0.,0.,-1.), makeAVec(0.,0., hDisk)) &
324 generateDFPlane(makeAVec(0.,0., 1.), makeAVec(0.,0., hDisk + hCrystalBase)));
325 auto cCrPyrBase(makeAVec(center[0],center[1],hDisk+hCrystalBase-.01));
327 cCrPyrBase+makeAVec(-aCrystal, aCrystal,0.),
328 cCrPyrBase+makeAVec(-aCrystal, -aCrystal,0.),
329 cCrPyrBase+makeAVec( aCrystal, -aCrystal,0.)},
330 cCrPyrBase+makeAVec(0.,0.,hCrystalPyramid)));
333 asl::initData(mPlatform, normalize(diskBottom | diskTop | axis | dfPillars, dx));