마우스 움직임을 통해 이미지를 회전시키는 논리는 무엇입니까? graphics2d.rotate를 사용하여 회전하는 방법을 알고 있지만 마우스를 회전 원으로 사용하는 데 어려움이 있습니다.Java 2D - 마우스를 드래그하여 이미지를 부드럽게 회전
- GET 마우스 X (DX) 및 ( 우리가 회전 할 이미지의 중심이 될 것입니다이 경우) 지점을 고정에서 마우스 Y (DY) 거리 : 여기에 기본 단계이다.
- Math.arcTan2 (dy, dx)에서이 점을 사용하여 각도 또는 회전을 얻습니다.
- Graphics2D.rotate 메소드의 step to 값을 사용하십시오.
이러한 전략을 사용하면 이미지를 회전 할 때마다 이미지가 -pi에서 회전하기 시작하고 90도 회전 한 후 다시 -pi로 이동합니다. 나는 내가 여기서 잘못하고있는 것을 이해하지 못한다. 그것은 꽤 기초적이어야한다. 여기
는 코드의 일부이다 :// mouse dragged events get sent here.
public void mouseDragged(MouseEvent e) {
int mx = e.getX(), my = e.getY();
// just checking if it falls within bounds of the image we
// want to rotate.
if(mx > speedKX || mx < speedKX + speedK.getWidth() || my > speedKY || my < speedKY + speedK.getHeight()/2)
{
theta += getTheta(e.getX(), e.getY());
}
}
일부 코드를 볼 수 있습니까? 삼각법 문제처럼 보입니다 ... –
예, 여기서 확실하게, 여기 : // 마우스 끌기 이벤트가 여기에 전송됩니다. public void mouseDragged (MouseEvent e) { int mx = e.getX(), my = e.getY(); // 이미지의 경계 내에 있는지 확인합니다. // 회전시키고 자합니다. if (mx> speedKX || mx speedKY || my
dave
왜 그런지 잘 모르겠지만 이전 의견은 제대로 표시되지 않았습니다. 읽어 보시겠습니까? 감사하지 않으면 감사드립니다. – dave