Sorry, ale byl jsem zaneprázdněn a pak se to snažil vyřešit. Ale to není podstatné.
Šlo mi o nakreslení tohohle - obrázek
Levý "oblouk je nakreslený pomocí
private static ArrayList<Path> arc(double lineX, double lineY, double moveX, double moveY) {
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()));
list.add(path);
}
return list;
}
V konstruktoru to volám
...
var paths = new ArrayList<Path>(20);
for (int i = 0; i < 4; i++) {
paths.addAll(arc(0.0, g30, g20, g38));
}
getChildren().addAll(paths);
...
Abych to vysvětlil. Pouze levý horní oblouk je nakreslený pomocí metody a zbylé jsou pomocí čar a oblouků pro znázornění. Nakreslení všech oblouků je však složité, protože střed velké a malé "kružnice" je vždy rozdílný a nelze ho nějak odvodit. Proto jsem to chtěl vytvořit čtyřikrát na jednom místě a pak posunout a otočit. To by bylo ale zbytečně složité a ani se mi to nepodařilo.
Mnohem jednoduší by to bylo tzv. překlopit přes čáry, které jsou zde znázorněné. Navíc mně přijde cyklus nesmyslný. Lepší by bylo, kdybych zavolal metodu pouze jednou a pak to třikrát "naklonoval". Jak to, prosím Vás, udělám?
Děkuji