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
[70992] Re:2차원 배열로 X, Y의 지름이 틀린 타원을 그리려면?
빌더초보 [] 3621 읽음    2014-03-05 14:54
먼저 타원의 정의와 방정식부터 아셔야 합니다. 아래 링크를 참고하시고...

http://blog.daum.net/whitebrow09/96

중심이 a,b 이고, 장축이 2a, 단축이 2b인 타원을 그리는(?) 방법입니다.
f1, f2는 두 초점을 나타냅니다.
d는 중심에서 초점까지의 거리구요.

아래와 같이 하시면 되겠습니다.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
	int a=20;
	int b=15;

	int d=Sqrt(a*a-b*b);

	int f1x=a-d;
	int f1y=b;

	int f2x=a+d;
	int f2y=b;

	int **EllipseArray = new int*[a*2+1];
	for (int i = 0; i < a*2+1; i++) {
		EllipseArray[i]= new int[b*2+1];
	}


	for(int nY = 0; nY<=b*2; nY++)
	{
		for(int nX = 0; nX<=a*2; nX++)
		{
			if (a*2 >= ( Sqrt((nX-f1x)*(nX-f1x) + (nY-f1y)*(nY-f1y)) + Sqrt((nX-f2x)*(nX-f2x) + (nY-f2y)*(nY-f2y))))
			{
				EllipseArray[nX][nY] = 1;
			}
			else
			{
				EllipseArray[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 <= b*2; nY++)
	{
		AnsiString str="";
		for(int nX = 0; nX <= a*2; nX++)
		{
			if (EllipseArray[nX][nY])
			{
				str=str+"■";
			}
			else
			{
				str=str+"□";
			}
		}
		Memo1->Lines->Add(str);
	}
}

+ -

관련 글 리스트
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의 지름이 틀린 타원을 그리려면? 빌더초보 3621 2014/03/05
70994                 Re:Re:답변 감사드립니다. Sunje 2743 2014/03/06
70976     Re:2차원 배열로 원을 그리려고 합니다. 주누 2904 2014/02/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.