double ly = uy + h + reflectionSpace;
double cos = Math.cos(angleOnCarousel);
double sin = -Math.sin(angleOnCarousel);
ul = new Point3D((carouselRadius + halfCellWidth) * cos, uy, (carouselRadius + halfCellWidth) * sin);
ur = new Point3D((carouselRadius - halfCellWidth) * cos, uy, (carouselRadius - halfCellWidth) * sin);
ll = new Point3D((carouselRadius + halfCellWidth) * cos, ly, (carouselRadius + halfCellWidth) * sin);
lr = new Point3D((carouselRadius - halfCellWidth) * cos, ly, (carouselRadius - halfCellWidth) * sin);
if(reflection != null) {
ulReflection = new Point3D((carouselRadius + halfCellWidth) * cos, uy + h + reflectionTop, (carouselRadius + halfCellWidth) * sin);
urReflection = new Point3D((carouselRadius - halfCellWidth) * cos, uy + h + reflectionTop, (carouselRadius - halfCellWidth) * sin);
}
//Equivalent code:
// Point3D ul = new Point3D(carouselRadius / scaleFactor + w / 2, -h / 2, 0);
// Point3D ur = new Point3D(carouselRadius / scaleFactor - w / 2, -h / 2, 0);