У меня проблемы с размещением изображений вокруг центра с правильным углом поворота. Это код, который я сейчас использую, и результат можно увидеть на скриншоте. Количество срезов может быть динамически изменено пользователем, поэтому мне нужно вычислить новое значение поворота на основе количества срезов, но я не могу найти правильный способ сделать это. Я могу произвольно добавить значение в pictureAngle, чтобы настроить вращение, но оно будет работать только для этого определенного количества фрагментов.
ПРИМЕЧАНИЕ. Первое нарисованное изображение - это изображение на красном срезе справа, которое на верхнем снимке экрана выглядит прямым.
double angle = (double) 360 / this.slices.length;
for (int i = 0; i < this.slices.length; i++) {
double pictureAngle = Math.toRadians(i * (360 / this.slices.length));
px[i] = this.centerX + (wheelSize/2.1) * Math.cos(Math.toRadians((i * angle) + angle / 2));
py[i] = this.centerY + (wheelSize/2.1) * Math.sin(Math.toRadians((i * angle) + angle / 2));
p.addPoint((int)px[i], (int)py[i]);
AffineTransform backup1 = g2d.getTransform();
AffineTransform trans = new AffineTransform();
trans.rotate(pictureAngle, (int)px[i], (int)py[i]);
g2d.transform( trans );
g2d.drawImage(pictures[i], (int)px[i] - (pictures[i].getWidth() / 2), (int)py[i], null);
g2d.setTransform( backup1 );
g2d.drawLine((int)this.centerX, (int)this.centerY, (int)px[i], (int)py[i]);
}
Если я произвольно добавлю 103 градуса к повороту, он почти сработает, поэтому я полагаю, что мне нужен правильный способ получить правильное число в зависимости от количества срезов:
double pictureAngle = Math.toRadians(103 + i * (360 / this.slices.length));