Расширяя рабочий код @bragbog, я должен был пройти через аналогичную ситуацию, в которой мне пришлось перенести систему координат, аналогичную системе OP, в систему координат Java.
Это то, что я придумал:
float coordChangeOffset = ((arcDegree % 180) - 45) * 2;
filterPanel.setArc(absModAngle(arcDegree - coordChangeOffset), 360 - sectorAngle);
private float absModAngle(float deg) {
return modAngle((deg + 360));
}
public class FilterPanel extends JPanel {
private final int x, y, w, h;
private int startAngle, arcFill;
public FilterPanel(int x, int y, int w, int h) {
this.x = x;
this.y = y;
this.w = w;
this.h = h;
setBackground(UiColorPalette.TRANSPARENT);
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) this.getGraphics();
g2d.setColor(UiColorPalette.FILTER_FILL);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.fillArc(x, y, w, h, startAngle, arcFill);
}
void setArc(float startAngle, float arcFill) {
this.startAngle = (int) startAngle;
this.arcFill = (int) arcFill;
System.err.out("Java Coordinate System - StartAngle: " + startAngle + ", arcFill: " + arcFill);
}
}
Это может сбивать с толку, но система Java и система, с которой я работал, имели 45 и 225, оставаясь неизменными, так что транспонирование, когда системы переворачиваютсяна его склоне (где 45 и 225 имеют одинаковый угол от любой оси)
absModAngle гарантирует, что мой результирующий угол находится в пределах моего диапазона [0 - 360).
Я создал дополнительное изображение,но мне не хватает представителя, чтобы добавить его.По существу
y = x - F(x), where F(x) is coordChangeOffset noted above ((x Mod 180) - 45) * 2