Tak jsem trochu upravil kód.
...
var paths = new ArrayList<Path>(20);
paths.addAll(arc(0.0, height30, height20, height38, new Rotate()));
paths.addAll(arc(0.0, height30, height20, height38, new Rotate(90, height50, height50, height50)));
paths.addAll(arc(0.0, height30, height20, height38, new Rotate(180, height50, height50, height50)));
paths.addAll(arc(0.0, height30, height20, height38, new Rotate(270, height50, height50, height50)));
getChildren().addAll(paths);
...
private static ArrayList<Path> arc(double lineX, double lineY, double moveX, double moveY, Rotate rotate) {
var arc_big = lineY;
var arc_small = moveY - moveX;
LineTo lineTo = new LineTo(lineX, lineY);
MoveTo moveToCenter = new MoveTo(moveX, moveY);
ArrayList<Path> list = new ArrayList<>(5);
for (double deg = 198; deg <= 270; deg += 18) {
Path path = new Path(moveToCenter, lineTo);
lineTo = new LineTo(lineY + arc_big * Math.cos(Math.toRadians(deg)), lineY + arc_big * Math.sin(Math.toRadians(deg)));
path.getElements().add(new ArcTo(arc_big, arc_big, 0, lineTo.getX(), lineTo.getY(), false, true));
MoveTo move = new MoveTo(moveY + arc_small * Math.cos(Math.toRadians(deg)), moveY + arc_small * Math.sin(Math.toRadians(deg)));
path.getElements().add(new LineTo(move.getX(), move.getY()));
path.getElements().add(new ArcTo(arc_small, arc_small, 0, moveToCenter.getX(), moveToCenter.getY(), false, false));
moveToCenter = move;
path.setFill(Color.color(Math.random(), Math.random(), Math.random()));
path.getTransforms().add(rotate);
list.add(path);
}
return list;
}
Jenže, jednak nevím, jak rozumně pojmenovat proměnné a jak bych to zjednodušil.
Máte, prosím Vás, nějaký nápad?
Děkuji
PS. Proměnné, začínající height, určují % výšku obrazovky, znázorněnou číslem na konci - height50 = 50% z height