Когда я разработал подсказку о скорости, я получил этот код. Я запустил тестовый код, и результат улучшился всего в 1,5 раза. Я слышал, что он улучшился в 10 раз, но я не уверен в разработке игр, поэтому не могу его протестировать... Может ли кто-нибудь воссоздать тестовый код?
Вот мой алгоритм
Код: Выделить всё
#ifndef ECCENTRIC_CIRCLE_HPP
#define ECCENTRIC_CIRCLE_HPP
#include
#include
class EccentricCircle {
private:
float radius;
static constexpr int RESOLUTION = 512;
static constexpr int MASK = RESOLUTION - 1;
std::array c_table;
public:
EccentricCircle(float r, float k) : radius(r) {
const float STEP = (2.0f * 3.1415926535f) / RESOLUTION;
for (int i = 0; i < RESOLUTION; ++i) {
float theta = i * STEP;
float cos_t = std::cos(theta);
float sin_t = std::sin(theta);
c_table[i] = (k * cos_t) + std::sqrt(1.0f - (k * k * sin_t * sin_t));
}
}
inline float get_dist_fast(int angle_index) const {
return radius * c_table[angle_index & MASK];
}
};
#endif
Код: Выделить всё
#include "EccentricCircle_Optomization.hpp"
#include
int main() {
float my_radius = 100.0f;
float k_ideal = 0.707106f;
EccentricCircle circle(my_radius, k_ideal);
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79889890/i-made-a-simple-crash-algorithm-can-you-take-a-look-at-it[/url]
Мобильная версия