Я пишу алгоритм построения математических функций.Я новичок в C ++ и программировании в целом и, следовательно, не знаю, как правильно это реализовать.
Чтобы сделать это, я наивно рисую точки, удовлетворяющие математическому условию, в растровое изображение (файл ppm), нокогда я делаю это и строю параболу (y * y = 4 * a * x), на графике отображаются только несколько точек.Оси координат и прямые линии (y = mx + c) отображаются нормально.
Вот мой код: я рисую в файл ppm
int main()
{
int width = 512;
int height = 512;
std::ofstream ofs("plot.ppm", std::ios::out);
ofs << "P3\n" << width << " " << height << "\n255\n";
for (int h = 0;h< height;h++) {
for (int w = 0; w < width; w++) {
vec3f col;
float x = ((float)w - 256);
float y = -((float)h - 256);
if (h == 256||w==256)col = vec3f(0, 0, 0);//axes
else col = vec3f(1,1,1);//background
if (y==x)col = vec3f(0, 0, 0);//straight line
if ((y*y) == (4*16*x))col=vec3f(1, 0, 0);//parabola
int r = int(255.99 * col.x);
int g = int(255.99 * col.y);
int b = int(255.99 * col.z);
ofs << r << " " << g << " " << b << "\n";
}
}
ofs.close();
}
Эта программа отображает только несколько точек, которыепосле проверки отладчика я обнаружил: (0,0), (225,120), (196,112), (169,104), (144,96) и т. д. [это координаты после перевода источника в (256,256)), центр изображения]
Я хочу знать, почему это происходит и как это исправить.
вот выходное изображение plot.ppm
: