Пиксели на дисплее дискретны и ограничены в количестве; следовательно, координаты отображения должны быть целыми числами - числа с плавающей точкой не имеют смысла, так как физически у вас нет пикселя, например (341.4, 234,7)
.
Тем не менее, целые числа должны использоваться только на заключительном этапе рисования. При расчете движения объекта, скорости и т. Д. Вам нужно использовать числа с плавающей запятой. Целые числа вызовут удивительное количество проблем точности. Рассмотрим следующий фрагмент:
a = 1;
x = (a / 2) * 2;
Если a
и x
являются числами с плавающей запятой, x
в конечном итоге будет иметь ожидаемое число 1
. Если они целые, вы получите 0
.
Базовая линия: использовать типы с плавающей запятой для физических расчетов и преобразовать в int
во время рисования. Это позволит вам выполнять физические расчеты с необходимой точностью.
EDIT:
Что касается преобразования чисел FP в целые числа, в то время как числа FP имеют больший диапазон, значения, полученные при физических вычислениях после нормализации по размеру области рисования, обычно не должны превышать тип int
.
Тем не менее, Java усекает числа с плавающей запятой при преобразовании в целочисленный тип, который может создавать артефакты (например, анимацию без пикселей в крайнем правом столбце пикселей, например, из-за преобразования 639.9
в 639
вместо 640
). Возможно, вы захотите взглянуть на Math.round()
или на некоторые другие методы округления, предоставляемые Java, для более разумных результатов.