void addDuplexDecorations(MobilizedBodyIndex bodyNum, Real r, Real halfHeight, Real slop, int nAtoms, Real atomRadius, Visualizer& display) const { display.addDecoration(bodyNum, Transform(), DecorativeCylinder(r+atomRadius+slop, halfHeight).setColor(Cyan).setOpacity(0.4)); const Real pitch = 2*Pi/halfHeight; const Real trans = (2*halfHeight)/(nAtoms-1); const Real rot = pitch*trans; for (int i=0; i<nAtoms; ++i) { const Real h = halfHeight - i*trans; const Real th = i*rot; const Vec3 p1(-r*cos(th),h,r*sin(th)), p2(r*cos(th),h,-r*sin(th)); display.addDecoration(bodyNum, Transform(Vec3(p1)), DecorativeSphere(atomRadius).setColor(Red).setResolution(0.5)); display.addDecoration(bodyNum, Transform(Vec3(p2)), DecorativeSphere(atomRadius).setColor(Green).setResolution(0.5)); } }
void addConnectorDecorations(MobilizedBodyIndex bodyNum, Real r, Real halfHeight, Real endSlop, Visualizer& display) const { display.addDecoration(bodyNum, Transform(), DecorativeCylinder(r, halfHeight-endSlop).setColor(Blue)); }