Почему я не получаю непрерывный сюжет? - PullRequest
0 голосов
/ 06 июня 2019

Я пишу алгоритм построения математических функций.Я новичок в 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:

the output

...