@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; }
@Override public Point[] generatePoints(Point center, int number) { float angle = 0; float distance = 1; Point[] points = new Point[number]; points[0] = center; for (int i = 1; i < number; i++) { distance = (float) Math.sqrt(i); Vector3 offset = Point.FORWARD.transform(MathHelper.rotateY(angle)); offset = offset.multiply(distance).multiply(scaleRadius); points[i] = center.add(offset); angle += scaleCircumference * 360.0 / (Math.PI * distance); } return points; }