2012-01-10 2 views
1

Обычно я использую setRotate (двойное значение) и 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 (double value) и getRotate(), поэтому мне нужно использовать getTransforms(). Add (new Rotate (двойной угол, double pivotX, double pivotY)).

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

ответ

0

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

for (Transform transform : rectangle.getTransforms()) { 
    if (transform instanceof Rotate) { 
     return ((Rotate)transform).getAngle(); 
    } 
} 
Смежные вопросы