Изображение файла PPM выглядит не так, как ожидалось (нет различимых форм)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Изображение файла PPM выглядит не так, как ожидалось (нет различимых форм)

Сообщение Anonymous »

Я начинающий программист, и мне нужно получить простое изображение для отображения в файле PPM, используя базовые фигуры в RGB.
Мое изображение должно быть зеленого цвета. прямоугольник, закрывающий нижнюю треть, коричневый вертикальный прямоугольник, выступающий вверх, и зеленый круг поверх коричневого прямоугольника, как у очень простого дерева. Мой код работает, но изображение зашифровано. Я попробовал просмотреть и удалить каждую фигуру, чтобы увидеть, не в этом ли проблема, но даже если использовать только фон, получается беспорядочная цветовая путаница. Любая помощь будет принята с благодарностью; спасибо.
Это мой код в том виде, в каком он есть сейчас
#include
#include
#include
using namespace std;

const int HEIGHT = 200;
const int WIDTH = 300;

struct RGB {
unsigned char r, g, b;
};

void drawRect(RGB ppmImage[][WIDTH], int rectTop, int rectLeft, int rectHeight,
int rectWidth, RGB color);

void drawCircle(RGB ppmImage[][WIDTH], int centerX, int centerY, int radius,
RGB color);

bool writeImagePPM(RGB ppmImage[][WIDTH], const string fileName);

int main() {
RGB ppmImage[HEIGHT][WIDTH];

for (int row = 0; row < HEIGHT; row++)
for (int col = 0; col < WIDTH; col++)
ppmImage[row][col] = {0, 0, 255};

drawRect(ppmImage, 106, 0, 67, 300, {0, 0, 255});
drawRect(ppmImage, 130, 145, 60, 10, {139, 69, 19});

int centerX = 145 + 10 / 2;
int centerY = 130;
int radius = 17;

drawCircle(ppmImage, centerX, centerY, radius, {0, 210, 0});

writeImagePPM(ppmImage, "imgGen.ppm");
}

void drawRect(RGB ppmImage[][WIDTH], int rectTop, int rectLeft, int rectHeight,
int rectWidth, RGB color) {
for (int y = rectTop; y < rectTop + rectHeight; y++)
for (int x = rectLeft; x < rectLeft + rectWidth; x++)
ppmImage[y][x] = color;
}

void drawCircle(RGB ppmImage[][WIDTH], int centerX, int centerY, int radius,
RGB color) {
for (int y = max(centerY - radius, 0); y

Подробнее здесь: https://stackoverflow.com/questions/783 ... ble-shapes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»