Как получить направление (угол) прямоугольника после его поворота из точки вращения

Обычно я просто использую setRotate(double value) и getRotate() при повороте прямоугольника из его центра. Предположим, что прямоугольник обращен на север, если getRotate() равен 0, и я пытаюсь получить его направление, я просто получаю отрицательное значение getRotate() и получаю его остаток от 360 (если он отрицательный, я добавляю 360). Это означает, что угол 0 градусов направлен на север, и поворот его по часовой стрелке на градус дает 359 градусов (аналогично, поворот его против часовой стрелки на градус дает 1 градус).

    public double angle(){
        double angle = -rectangle.getRotate();
        if(angle<0){ angle += 360; }
        return angle%360;
    }

Однако моя проблема сейчас в том, что мне нужно повернуть прямоугольник не от его центра, а от точки поворота. Я больше не могу использовать setRotate(двойное значение) и getRotate(), поэтому мне нужно использовать getTransforms().add(new Rotate(двойной угол, двойной поворотX, двойной поворотY)).

Теперь моя проблема в том, что я хочу знать угол направления, в котором обращен прямоугольник, но я больше не могу использовать getRotate(). И даже если я использую getAngle() из Rotate, я все еще не знаю, как получить направление, в котором он обращен, потому что он не был повернут от центра.


person Verne Jules    schedule 10.01.2012    source источник


Ответы (1)


Учитывая, что у вас есть только одно преобразование поворота для вашего прямоугольника, вы можете просто получить информацию от преобразования:

for (Transform transform : rectangle.getTransforms()) {
    if (transform instanceof Rotate) {
        return ((Rotate)transform).getAngle();
    }
}
person Sergey Grinev    schedule 10.01.2012