Я начинающий программист, и мне нужно получить простое изображение для отображения в файле 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