[C++]Mapa kafelkowa, szukanie współrzędniej Y dla kafelka w pliku z obrazkiem.

0

Siemka.
Zrobiłem sobie klasę w której otwieram plik, pobieram z niego liczby, przypisuje do każdej liczby fragment obrazka i wyświetlam go. Działa prawie dobrze tylko dla liczb dwucyfrowych źle odczytuje Y.

(float)((int)(((float)mapa[j][i]/(float)(imageHeight/tileHeight))+0.5)*tileHeight)

mapa[j][i] => 10
imageHeight => 288
tileHeight => 32

czyli ((10/9)+0.5)*32 i powinno dać 64 a daje 32 : O
Co skopałem ?

0
(float)
(
	(int)
	(
		(
			(float)mapa[j][i]/
			(float)(imageHeight/tileHeight)
		)
		+0.5
	)
	*tileHeight
)


(float)
(
	(int)
	(
		(
			(float)10/
			(float)(288/32)
		)
		+0.5
	)
	*32
)


(float)
(
	(int)
	(
		(
			10.0/
			9.0
		)
		+0.5
	)
	*32
)


(float)
(
	(int)
	(
		(1.11111111111)
		+0.5
	)
	*32
)

(float)
(
	(int)
	(1.611111111)
	*32
)


(float)
(
	1
	*32
)

(float)
(
	32
)

32

Trochę się rozpisałem, ale chyba wychodzi jednak 32:)
Rzutowanie do int odrzuca tylko ułamek, nie zaokrągla.

0

No fakt teraz sprawdziłem że dla 4 też y nie taki wychodzi : /
No to jak to zaokrąglić ?
I czemu z math.h znikła funkcja round() ? : (

0

Hmmmm... bo jej nigdy tam nie było?

0

Wydaje mi się że powinieneś nie zaokrąglać, tylko "sufitować" tą wartość, czyli ceil(). Wtedy nawet 1.111111 będzie 2.

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