Математические утилиты

Пакет math содержит различные полезные классы для решения проблем в геометрии, линейной алгебры, обнаружении столкновений, интерполяции и в преобразованиях общих единиц.

Класс MathUtils (код) охватывает целый ряд полезных мелочей. Существует удобное статическое поле класса Random, чтобы в вашем коде избегать создания его экземпляра. Использование в коде того же random экземпляра может обеспечить последовательное детерминированное поведение, поскольку храниться использованное seed значение. Предоставляются константы для преобразования между радианами и градусами также как таблица поиска функций синуса и косинуса. Чтобы избегать приведения типа к double существуют float версии общих java.lang.Math функций.

Catmull-Rom сплайн

Класс CatmullRomSpline (код) позволяет сгенерировать непрерывную кривую из дискретного списка контрольных точек. Сплайны могут быть полезны для описания плавного пути движения тела или камеры чрез пространство. Catmull-Rom сплайны особенно полезны в том отношении, что они просты для расчетов и могут гарантировать, что получившийся путь пройдет через каждую контрольную точку (за исключением первой и последней точек, которые контролируют форму сплайна, но не становятся частью пути). В отличие от кривой Безье, контроль касательных неявный и контроль над формой сплайна опущен для удобства определения пути. Все это требует списка точек, через которые должен пройти путь.

Ear-Clipping триангулятор

Один из способов триангуляции простого полигона базируется на том факте, что любой простой полигон с не менее четырьмя вершинами и без отверстий имеет, по крайней мере, два так называемых уха, которые являются треугольниками, две стороны которых есть ребра полигона и третьей стороной внутри его. Класс EarClippingTriangulator (код) реализует данную идею, создавая список треугольников из списка точек, представляющих двумерный полигон. Входной полигон может быть вогнутый и полученные треугольники будут иметь порядок по часовой стрелке.

Среднее арифметическое

Класс WindowedMean (код) используется для отслеживания среднего арифметического для работающего потока со значениями с плавающей запятой в пределах определенного окна. Это может быть полезно для простого статистического анализа, такого как измерение средней скорости сети, оценка времени реакции пользователя для регулировки динамической сложности в игре или определение энергии ритма в музыкальных визуализаторах.