Odnajdowanie współrzędnych punktów w zależności od powiększenia

0

Witam,

Staram się napisać grę komputerową będącą adaptacją gry planszowej. W głównym oknie programu wyświetla się plansza, którą można przesuwać( o x i y) , a także zoomować( zoom ). Teraz załóżmy że przy danym zoomie oraz przeusnięciu zaznaczam sobie pewne punkty na mojej planszy( będą to na przykład kolejne pola).
Moje pytanie brzmi jak znaleźć współrzędne tych punktów dla innych współczynników x,y oraz zoom? Starałem się znaleźć jakąś zależność jednak nie dałem rady wymyślić niczego sensownego.

Pozdrawiam,
Michał

0

Nie zmieniaj pozycji punktów, a przybliżaj/oddalaj samą kamerę (o ile dobrze zrozumiałem); skoro piszesz grę, to zakładam, że korzystasz z jakiegoś silnika OpenGL/DirectX, więc funkcje do obsługi kamery powinny być wbudowane.

0

Nie korzystam z niczego wyrafinowanego tylko ze standardowej Javy 2d. Zastanawiałem się na użyciem OpenGl'a lub PlayN ale twierdziłem, że na potrzeby tak prostej gry to dostarcza Java wystarczy

0

Załóżmy, że rysując, robisz coś takiego

	g.scale(zoom, zoom);
	g.translate(translateX, translateY);
	// tutaj rysowanie sceny

wyliczyć pozycję możesz robiąc dokładnie odwrotne obliczenie

	mouseX = (int) ((mouseX- translateX) / zoom);
	mouseY = (int) ((mouseY - translateY) / zoom);
0

A co jeśli chce przejść od jednego zooma (z1) do drugiego (z2) wtedy powinienem zrobić coś takiego:
x = (x*z1)/z2 + translateX ?

edit1.
Być może robię to źle ale w niektórych wypadkach dostaje dość skrajne współrzędne. Np. przy zoomie = 1 mam x = 400 a przy zoomie = 0.3 jest ona niewiele większa bo x = 413. Natomiast 413/0.3 jest o wiele większa od 400. Może moglibyście mi polecić jakiś silnik który obsługuję kamery?

1 użytkowników online, w tym zalogowanych: 0, gości: 1