【发布时间】:2018-04-19 05:41:21
【问题描述】:
我正在尝试编写一个用于创建 .pgm 和 .ppm 的程序,并尝试使用二维数字数组绘制一个圆圈。使用给定的中心位置 (x,y) 和半径。这是drawCircle() 函数的代码。
void drawCircle(unsigned char pgmImage[][WIDTH], int height, int centerX, int centerY, int radius, unsigned char grayLevel) {
for (int rowIndex = centerY; rowIndex < 50; rowIndex++) {
for (int colIndex = centerX; colIndex < 50; colIndex++) {
if ((pow(colIndex - centerX, 2)) + (pow(rowIndex - centerY, 2)) <= pow(radius, 2)) {
pgmImage[rowIndex][colIndex] = (grayLevel);
}
}
}
grayLevel 是我想要的圆圈的灰色阴影。我正在尝试使用公式(x-a)^2 + (y-b)^2 =r^2 绘制圆圈,其中 a 和 b 是我的中心 x 和 y。
【问题讨论】:
-
您的帖子中没有“问题”。你问的是什么?
-
@YePhIcK 我需要帮助,我被卡住了,不知道为什么我的代码没有将圆圈写入数组。
-
您的代码做什么?当你运行它时会发生什么。更重要的是:当您调试代码时,您会观察到什么?
-
如果没有您提供stackoverflow.com/help/mcve,我们(SO 用户)很难真正帮助您。但是,查看您的代码,我注意到一些事情: 1)即使您的代码确实有效,它也最多会产生 1/4 的圆(因为您总是从 X 和 Y 迭代的中心开始); 2)代码滥用
pow(),很可能是不必要的 -
请显示您分配
pngImage数组并传递给drawCircle的代码,并显示您如何“检查”结果。您是否写入文件并在图形工具中打开它?