Ради оптимизации решил сделать табличку в которой будут лежать синусы и косинусы. Рисует почти как надо.
появляется какой-то пик. не могу понять почему и от куда он берется.
sincos::sincos(){
double step = 6.28318530717958647692 / 4096.0f;
sinTable = new float[4099];
cosTable = new float[4099];
int index = 0;
for (double i = 0; i < 6.28318530717958647692; i += step)
{
sinTable[index] = std::sin(i);
cosTable[index] = std::cos(i);
index++;
}
float sincos::getSin(float val)
{
val = fmod(val, 6.28318530717958647692);
return sinTable[(int)(4096.0f * val / 6.28318530717958647692)];
}
float sincos::getCos(float val)
{
val = fmod(val, 6.28318530717958647692);
return cosTable[(int)(4096.0f * val / 6.28318530717958647692)];
}
В вашей таблице нет никаких пиков - http://ideone.com/T4nigg
Так что разбирайтесь с рисованием...
#include <math.h>
#include <stdio.h>
class SinCos
{
public:
SinCos()
{
double step = 6.28318530717958647692 / 4096.0f;
sinTable = new float[4099];
cosTable = new float[4099];
int index = 0;
for (double i = 0; i < 6.28318530717958647692; i += step)
{
sinTable[index] = sin(i);
cosTable[index] = cos(i);
index++;
}
maxIdx = index;
}
float getSin(float val)
{
val = fmod(val, 6.28318530717958647692);
return sinTable[(int)(4096.0f * val / 6.28318530717958647692)];
}
float getCos(float val)
{
val = fmod(val, 6.28318530717958647692);
return cosTable[(int)(4096.0f * val / 6.28318530717958647692)];
}
float maxSinDelta();
float maxCosDelta();
float* sinTable;
float* cosTable;
int maxIdx;
};
float SinCos::maxCosDelta()
{
float maxval = 0;
for(int i = 0; i < maxIdx; ++i)
{
float delta = fabs(cosTable[i] - cosTable[(i+1)%maxIdx]);
if (maxval < delta) maxval = delta;
}
return maxval;
}
float SinCos::maxSinDelta()
{
float maxval = 0;
for(int i = 0; i < maxIdx; ++i)
{
float delta = fabs(sinTable[i] - sinTable[(i+1)%maxIdx]);
if (maxval < delta) maxval = delta;
}
return maxval;
}
int main()
{
SinCos s;
printf("MaxDelte sin = %f, cos = %f\n", s.maxSinDelta(), s.maxCosDelta());
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть QTabWidget tabsВ нем лежат виджеты вкладок, в каждой вкладке есть layout, в этом layout'e QScrollArea со своим layout'om
Является ли дурным тоном описывать и реализовывать несколько классов в одном файле-заголовочнике и одномсрр-файле соответственно? Например,...
При создании шаблона проекта С++ в Visual Studio 2015 Update 3, проект собирается, шаблон создается, устанавливается, но в нем отсутствует файл с исходным...
Вопрос по C++При передаче обычной переменной в функцию создается, как я понимаю, её копия