Rotacja obiektów

Rotacja obiektów
Soderlight
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 8 lat
  • Postów:38
0

Witam, mam problem - próbuję zrobić obrazek który odwraca się w stronę kursora:

Kopiuj
	public Graphics2D rotate(Graphics g)
	{
		Graphics2D g2d = (Graphics2D)g;
		double angleToTurn = Math.atan2(mhandler.y-this.getY()-16, mhandler.x-this.getX()-16);
		g2d.rotate(angleToTurn+(Math.PI/2), this.getX()+16, this.getY()+16);
		return g2d;
	}

mhandler pobiera X i Y z myszki

(dodawanie i odejmowanie 16 ponieważ obrazek ma wymiary 32x32)

I wszystko działa super na jednym obiekcie, ale kiedy dodaje drugi, to wszystko zaczyna się walić.. wygląda to tak jak w załączniku - pierwszy stworzony obiekt obraca się i zachowuje zgodnie z oczekiwaniami, a drugi zaczyna latać w koło trzymając się tej samej odległości od obiektu pierwszego jednocześnie się obracając (wzdłuż białej strzałki) jak dodam trzeci obiekt to dzieje się to samo między nim a drugim, wyznaczają sobie jakby orbitę z poprzedniego obiektu i wokół niej latają (tylko podczas ruchu myszką). Siedze nad tym dobre parę godzin i nie mogę tego rozgryźć..

edytowany 1x, ostatnio: Soderlight
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
2

rotate w klasie Graphics2D nie obraca obiektu, rotate obraca układ współrzędnych. Jak chcesz obracać kilka obiektów, to dla każdego obiektu rób coś takiego:

Kopiuj
g2d.rotate(angle,x,y);
g2d.draw...
g2d.rotate(-angle,x,y);

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.