C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[70980] Re:Re:2차원 배열로 X, Y의 지름이 틀린 타원을 그리려면?
sunje [weeky] 2878 읽음    2014-03-03 11:08
주누님과 빌더초보님의 답변 감사합니다.
설명해 주신 답변으로 어느정도 해결은 했는데요
반지름이 홀수 일 경우와 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;
: :               }
: :          }
: :
: : 위와 같은 방법으로 시도해 보았으나 잘 안되네요...
: :
: :

+ -

관련 글 리스트
70974 2차원 배열로 원을 그리려고 합니다. sunje 2777 2014/02/28
70978     Re:2차원 배열로 원을 그리려고 합니다. 빌더초보 3089 2014/02/28
70980         Re:Re:2차원 배열로 X, Y의 지름이 틀린 타원을 그리려면? sunje 2878 2014/03/03
70992             Re:2차원 배열로 X, Y의 지름이 틀린 타원을 그리려면? 빌더초보 3622 2014/03/05
70994                 Re:Re:답변 감사드립니다. Sunje 2743 2014/03/06
70976     Re:2차원 배열로 원을 그리려고 합니다. 주누 2905 2014/02/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.