배열로 원 그리기/원 그리기 프로그램
0. 개요
문득 프로그램으로 원의 그리기를 하고 싶었지만, 어떻게 하는 거야?
원의 방정식을 풀고, 브레젠햄 알고리즘으로 타일을 메우는 것인가··? 라고 고민하고 있던 곳, 이하의 사이트를 발견.
htp://푸시. 웨 b. FC2. 소 m/아l5/아l후2-1. htm
움직여 보니 쉽게 원을 그릴 수 있게 되었다. 놀라운
비망록으로 남겨둔다.
1. 구현
#include <stdio.h>
#define CANVAS_SIZE_X 20
#define CANVAS_SIZE_Y 20
int canvas[CANVAS_SIZE_X][CANVAS_SIZE_Y];
void set_dot(int _x, int _y) {
canvas[_x][_y] = 1;
return;
}
void circle(int x0, int y0, int r)
{
int x = r;
int y = 0;
int F = -2 * r + 3;
while (x >= y) {
set_dot(x0 + x, y0 + y);
set_dot(x0 - x, y0 + y);
set_dot(x0 + x, y0 - y);
set_dot(x0 - x, y0 - y);
set_dot(x0 + y, y0 + x);
set_dot(x0 - y, y0 + x);
set_dot(x0 + y, y0 - x);
set_dot(x0 - y, y0 - x);
if (F >= 0) {
x--;
F -= 4 * x;
}
y++;
F += 4 * y + 2;
}
}
void disp() {
printf("---------------------------------------------\n");
for (int i = 0; i < CANVAS_SIZE_Y; i++) {
for (int j = 0; j < CANVAS_SIZE_X; j++) {
printf("%d ", canvas[j][i]);
}
printf("\n");
}
printf("---------------------------------------------\n");
return;
}
int main() {
// Init
for (int i = 0; i < CANVAS_SIZE_Y; i++) {
for (int j = 0; j < CANVAS_SIZE_X; j++) {
canvas[j][i] = 0;
}
}
disp();
circle(10, 10, 6);
disp();
getchar();
return 0;
}
Reference
이 문제에 관하여(배열로 원 그리기/원 그리기 프로그램), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/harmegiddo/items/711c478058aa7a770960
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#include <stdio.h>
#define CANVAS_SIZE_X 20
#define CANVAS_SIZE_Y 20
int canvas[CANVAS_SIZE_X][CANVAS_SIZE_Y];
void set_dot(int _x, int _y) {
canvas[_x][_y] = 1;
return;
}
void circle(int x0, int y0, int r)
{
int x = r;
int y = 0;
int F = -2 * r + 3;
while (x >= y) {
set_dot(x0 + x, y0 + y);
set_dot(x0 - x, y0 + y);
set_dot(x0 + x, y0 - y);
set_dot(x0 - x, y0 - y);
set_dot(x0 + y, y0 + x);
set_dot(x0 - y, y0 + x);
set_dot(x0 + y, y0 - x);
set_dot(x0 - y, y0 - x);
if (F >= 0) {
x--;
F -= 4 * x;
}
y++;
F += 4 * y + 2;
}
}
void disp() {
printf("---------------------------------------------\n");
for (int i = 0; i < CANVAS_SIZE_Y; i++) {
for (int j = 0; j < CANVAS_SIZE_X; j++) {
printf("%d ", canvas[j][i]);
}
printf("\n");
}
printf("---------------------------------------------\n");
return;
}
int main() {
// Init
for (int i = 0; i < CANVAS_SIZE_Y; i++) {
for (int j = 0; j < CANVAS_SIZE_X; j++) {
canvas[j][i] = 0;
}
}
disp();
circle(10, 10, 6);
disp();
getchar();
return 0;
}
Reference
이 문제에 관하여(배열로 원 그리기/원 그리기 프로그램), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/harmegiddo/items/711c478058aa7a770960텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)