주누님과 빌더초보님의 답변 감사합니다.
설명해 주신 답변으로 어느정도 해결은 했는데요
반지름이 홀수 일 경우와 X(가로), Y(세로)의 지름 값이 서로 틀릴 경우
어떻게 타원을 만드는지 잘 모르겠네요.
반지름이 홀수 일 경우에는 아래와 같이 적용했는데요
if (r*r/4.0 > (nX+0.5-r/2.0)*(nX+0.5-r/2.0) + (nY+0.5-r/2.0)*(nY+0.5-r/2.0))
{
CircleArray[nX][nY] = 1;
}
else
{
CircleArray[nX][nY] = 0;
}
X, Y의 지름이 서로 틀린 타원은 어떻게 해야 될지 잘 모르겠네요...
빌더초보 님이 쓰신 글 :
: 조건문은 반지름이 중심이 (r,r) 이고 반지름이 r인 원을 기준으로 하고 있으나
: 시작범위는 0 부터 r 까지이므로 제대로 구해질수가 없죠.
: 아래와 같이 하시면 되겠습니다.
:
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: int r=20;
: int **CircleArray = new int*[r*2+1];
: for (int i = 0; i < r*2+1; i++) {
: CircleArray[i]= new int[r*2+1];
: }
:
:
: for(int nY = 0; nY<=r*2; nY++)
: {
: for(int nX = 0; nX<=r*2; nX++)
: {
:
: if (r*r > ((nX-r)*(nX-r) + (nY-r)*(nY-r)))
: {
: CircleArray[nX][nY] = 1;
: }
: else
: {
: CircleArray[nX][nY] = 0;
: }
: }
: }
:
:
:
: TMemo *Memo1 = new TMemo(this);
: Memo1->Parent=this;
: Memo1->Align=alClient;
: Memo1->Lines->Clear();
: Memo1->Font->Name="SYSTEM";
:
: for(int nY = 0; nY <= r*2; nY++)
: {
: Memo1->Lines->Add("");
: for(int nX = 0; nX <= r*2; nX++)
: {
: if (CircleArray[nX][nY])
: {
: Memo1->Lines->Strings[nY]=Memo1->Lines->Strings[nY]+"■";
: }
: else
: {
: Memo1->Lines->Strings[nY]=Memo1->Lines->Strings[nY]+"□";
: }
: }
: }
: }
:
:
:
: sunje 님이 쓰신 글 :
: : 안녕하세요...
: : 궁금한 것이 있어서 질문드리고자 합니다.
: :
: : 원을 그려서 2차원 배열에 담으려고 하는데요
: : 일단 반지름을 r = 10로 잡고요 반지름 이내의 범위에 있는 것은 1로 하고 범위 밖의 값은 0으로 해서
: : 2차원 배열에 저장하고 아래와 같이 출력을 받으려고 하는데요
: :
: : □□□□□□□■■■■■■□□□□□□□
: : □□□□□■■■■■■■■■■□□□□□
: : □□□■■■■■■■■■■■■■■□□□
: : □□■■■■■■■■■■■■■■■■□□
: : □□■■■■■■■■■■■■■■■■□□
: : □■■■■■■■■■■■■■■■■■■□
: : □■■■■■■■■■■■■■■■■■■□
: : ■■■■■■■■■■■■■■■■■■■■
: : ■■■■■■■■■■■■■■■■■■■■
: : ■■■■■■■■■■■■■■■■■■■■
: : ■■■■■■■■■■■■■■■■■■■■
: : ■■■■■■■■■■■■■■■■■■■■
: : ■■■■■■■■■■■■■■■■■■■■
: : □■■■■■■■■■■■■■■■■■■□
: : □■■■■■■■■■■■■■■■■■■□
: : □□■■■■■■■■■■■■■■■■□□
: : □□■■■■■■■■■■■■■■■■□□
: : □□□■■■■■■■■■■■■■■□□□
: : □□□□□■■■■■■■■■■□□□□□
: : □□□□□□□■■■■■■□□□□□□□
: :
: : int r = 10;
: : for(int nX = 0; nX<r; nX++)
: : {
: : for(int nY = 0; nY<r; nY++)
: : {
: : (r*r > (nX-r)*(nX-r) + (nY-r)*(nY-r))? 1 : 0;
: : }
: : }
: :
: : 위와 같은 방법으로 시도해 보았으나 잘 안되네요...
: :
: :
|