@Override protected Point[] generatePoints(Point center, int number) { Vector3f offset = Point.FORWARD.mul(radius); int angle = number == 0 ? 0 : (360 / number); Matrix3f rotate = Matrix3f.createRotation(Quaternionf.fromAngleDegAxis(angle, 0, 1, 0)); if (halfRotate) { offset = Matrix3f.createRotation(Quaternionf.fromAngleDegAxis(angle * 0.5f, 0, 1, 0)) .transform(offset); } Point[] points = new Point[number]; for (int i = 0; i < number; i++) { points[i] = center.add(offset); offset = rotate.transform(offset); } return points; }