Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
반원을 그리는 방법 ?
(50,50) - (200,50) 의 좌표를 기준으로 반원을 그리는 방법을
아시는 분 부탁드립니다.
물론 아래부분에 직선이 그어져서는 안되고요 위로 호만 그리려고 합니다.
답변 부탁드립니다.
4
COMMENTS
홍성락
•
2001.08.25 15:27
초보 wrote:
> (50,50) - (200,50) 의 좌표를 기준으로 반원을 그리는 방법을
> 아시는 분 부탁드립니다.
> 물론 아래부분에 직선이 그어져서는 안되고요 위로 호만 그리려고 합니다.
>
> 답변 부탁드립니다.
////////////////////////////////////////////////////////////////////
아래방법을 상용해보세요.
X를 왼쪽부터 오른쪽으로 그리면 위로 호가 나타나고
오른쪽에서 왼쪽으로 그리면 아래로 호가 그려집니다.
procedure TForm1.Button1Click(Sender: TObject);
var
xx, yy, X1, X2, Y1, Y2, i, yyy, buho, CX, CY : Integer;
R_ : Double;
begin
Origin.x := strToint(Edit1.text);
Origin.Y := strToint(Edit2.text);
xx := strToint(Edit3.text);
Yy := strToint(Edit4.text);
with Image1 do begin
//시작점찾기
if Origin.x < xx then begin
X1 := Origin.x;
X2 := xx;
y1 := Origin.y;
y2 := yy;
buho := 1;
end
else begin
X1 := xx;
X2 := Origin.x;
y1 := yy;
y2 := Origin.y;
buho := -1;
end;
//반자름,중심점
R_ := sqrt(sqr(X2 - X1) + sqr(Y2 - Y1))/2;
CX := Round( (X1+X2)/2 );
CY := Round( (Y1+Y2)/2 );
canvas.MoveTo(X1, Y1);
if Origin.y > yy then begin
for i := X1-CX Downto Trunc(-R_) do begin
yyy := Round( sqrt(sqr(R_)-sqr(i)) ) * buho;
canvas.LineTo(i+CX, yyy+CY);
ListBox1.Items.Add(intToStr(i)+ ' : ' +intToStr(yyy));
end;
for i := Trunc(-R_) to X2-CX do begin
yyy := -Round( sqrt(sqr(R_)-sqr(i)) ) * buho;
canvas.LineTo(i+CX, yyy+CY);
ListBox1.Items.Add(intToStr(i)+ ' : ' +intToStr(yyy));
end;
end
else begin
for i := X1-CX to Trunc(R_) do begin
yyy := -Round( sqrt(sqr(R_)-sqr(i)) ) * buho;
canvas.LineTo(i+CX, yyy+CY);
ListBox1.Items.Add(intToStr(i)+ ' : ' +intToStr(yyy));
end;
for i := Trunc(R_) downto X2-CX do begin
yyy := Round( sqrt(sqr(R_)-sqr(i)) ) * buho;
canvas.LineTo(i+CX, yyy+CY);
ListBox1.Items.Add(intToStr(i)+ ' : ' +intToStr(yyy));
end;
end;
end;
//Refresh;
end;
0
0
삭제
수정
댓글
초보
•
2001.08.29 23:09
답변에 진심으로 감사드립니다.
반원이 아닌 일반호를 그릴 경우에 중심점을 어떤 방식으로 계산해야 하는지요 ?
(일반호 원에서 위부분을 잘랐을 경우의 호 (약 5/1))
예제를 알려 주시면 감사하겠습니다.
그럼... 다시한번 진심으로 감사드립니다.
홍성락 wrote:
> 초보 wrote:
> > (50,50) - (200,50) 의 좌표를 기준으로 반원을 그리는 방법을
> > 아시는 분 부탁드립니다.
> > 물론 아래부분에 직선이 그어져서는 안되고요 위로 호만 그리려고 합니다.
> >
> > 답변 부탁드립니다.
> ////////////////////////////////////////////////////////////////////
> 아래방법을 상용해보세요.
> X를 왼쪽부터 오른쪽으로 그리면 위로 호가 나타나고
> 오른쪽에서 왼쪽으로 그리면 아래로 호가 그려집니다.
> procedure TForm1.Button1Click(Sender: TObject);
> var
> xx, yy, X1, X2, Y1, Y2, i, yyy, buho, CX, CY : Integer;
> R_ : Double;
> begin
> Origin.x := strToint(Edit1.text);
> Origin.Y := strToint(Edit2.text);
> xx := strToint(Edit3.text);
> Yy := strToint(Edit4.text);
> with Image1 do begin
> //시작점찾기
> if Origin.x < xx then begin
> X1 := Origin.x;
> X2 := xx;
> y1 := Origin.y;
> y2 := yy;
> buho := 1;
> end
> else begin
> X1 := xx;
> X2 := Origin.x;
> y1 := yy;
> y2 := Origin.y;
> buho := -1;
> end;
> //반자름,중심점
> R_ := sqrt(sqr(X2 - X1) + sqr(Y2 - Y1))/2;
> CX := Round( (X1+X2)/2 );
> CY := Round( (Y1+Y2)/2 );
> canvas.MoveTo(X1, Y1);
>
> if Origin.y > yy then begin
> for i := X1-CX Downto Trunc(-R_) do begin
> yyy := Round( sqrt(sqr(R_)-sqr(i)) ) * buho;
> canvas.LineTo(i+CX, yyy+CY);
> ListBox1.Items.Add(intToStr(i)+ ' : ' +intToStr(yyy));
> end;
> for i := Trunc(-R_) to X2-CX do begin
> yyy := -Round( sqrt(sqr(R_)-sqr(i)) ) * buho;
> canvas.LineTo(i+CX, yyy+CY);
> ListBox1.Items.Add(intToStr(i)+ ' : ' +intToStr(yyy));
> end;
> end
> else begin
> for i := X1-CX to Trunc(R_) do begin
> yyy := -Round( sqrt(sqr(R_)-sqr(i)) ) * buho;
> canvas.LineTo(i+CX, yyy+CY);
> ListBox1.Items.Add(intToStr(i)+ ' : ' +intToStr(yyy));
> end;
> for i := Trunc(R_) downto X2-CX do begin
> yyy := Round( sqrt(sqr(R_)-sqr(i)) ) * buho;
> canvas.LineTo(i+CX, yyy+CY);
> ListBox1.Items.Add(intToStr(i)+ ' : ' +intToStr(yyy));
> end;
> end;
> end;
> //Refresh;
>
> end;
0
0
삭제
수정
댓글
홍성락
•
2001.09.01 02:24
초보 wrote:
> 답변에 진심으로 감사드립니다.
> 반원이 아닌 일반호를 그릴 경우에 중심점을 어떤 방식으로 계산해야 하는지요 ?
> (일반호 원에서 위부분을 잘랐을 경우의 호 (약 5/1))
> 예제를 알려 주시면 감사하겠습니다.
> 그럼... 다시한번 진심으로 감사드립니다.
///////////////////////////////////////////////////////////////////////////
저도 처음엔 호로 생각했는데 두점만 주워지고 반원,호란 말씀을 혼용해서요.
호를 그리는 방법으로 3점이 필요한데요, 아래것은 일반적으로 그릴때처럼
첫번째점(SX,SY)을 시작점, 두번째점(MX,MY)을 그리고자하는
0
0
삭제
수정
댓글
초보
•
2001.09.21 21:19
답변에 진심으로 감사드립니다.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
급해요~~
2001.08.23 20:02
0
COMMENTS
/
0
LIKES
이곳 자료실에 있는 ado업데이트 파일1,2를 이용했는데...
초짜
2001.08.23 20:02
0
COMMENTS
/
0
LIKES
질문]이런게 가능한가요 (동적객체생성에서)
어이없는 넘
2001.08.23 19:49
0
COMMENTS
/
0
LIKES
라디오그룹에 관한 짧은 질문....
aparadin
2001.08.23 18:37
0
COMMENTS
/
0
LIKES
vcl)버튼의 이미지교체에 대하여
kirisame
2001.08.23 18:36
0
COMMENTS
/
0
LIKES
QReport Grouping에 관한질문입니다. 한번봐주십시요.
김수진
2001.08.23 18:23
0
COMMENTS
/
0
LIKES
도움말작성에 관한문의
초보자
2001.08.23 17:29
0
COMMENTS
/
0
LIKES
라벨 프린터(DMX600)에서 한글인쇄를 할려면?
노력중인 초보
2001.08.23 14:34
0
COMMENTS
/
0
LIKES
쿼리의 속성에대해 궁금해서 질문합니다....^^
초보
2001.08.23 11:05
0
COMMENTS
/
0
LIKES
텍스트파일을 읽어들여서 일정한 갯수로 메모박스에 출력
김남주
2001.08.23 10:07
0
COMMENTS
/
0
LIKES
폼을 생성하는 문제
훈
•
2001.08.23 10:30
4
COMMENTS
/
0
LIKES
Tag에 관한 질문입니다.
델맹
•
2001.08.23 18:06
훈 wrote: > Edit가 1~10까지 있을때, > Edit.Tag에 각각의 Edit의 Tag에 1~10까지 넣어주고, for Loop를...
훈
•
2001.08.23 18:50
많은 도움이 되었습니다...^^ Controls라는 배열을 사용할 수 있다고 하셨는데, Controls라는 배열은 델...
델맹
•
2001.08.24 00:37
훈 wrote: > 많은 도움이 되었습니다...^^ > Controls라는 배열을 사용할 수 있다고 하셨는데, > Contro...
훈
•
2001.08.24 08:12
이렇게까지 상세히 설명해 주어, 감사 드립니다. 정말 많은 도움이 되었습니다. 이해는 가지만, 전부 ...
김만규
•
2001.08.23 07:41
2
COMMENTS
/
0
LIKES
TV수신중 화면캡쳐에 관해서....
박상윤
•
2001.08.31 11:22
화면을 켑쳐하면서 색이 변하는 이유는 vfw api를 사용해서 켑쳐를 받기 때문입니다. 여러가지 함수 가있...
이경문
•
2001.08.25 03:28
분홍색이 나타나는 것은 TV수신카드의 문제점으로 여겨 집니다. 그리고 2곳에 같은 화면을 표시하는 데 있...
초보
•
2001.08.23 06:48
4
COMMENTS
/
0
LIKES
반원을 그리는 방법 ?
(50,50) - (200,50) 의 좌표를 기준으로 반원을 그리는 방법을 아시는 분 부탁드립니다. 물론 아래부분에 직선이 그어져서는 안되고요 위로 호만 그리려고 합니다. 답변 부탁드립니다.
홍성락
•
2001.08.25 15:27
초보 wrote: > (50,50) - (200,50) 의 좌표를 기준으로 반원을 그리는 방법을 > 아시는 분 부탁드립니다...
초보
•
2001.08.29 23:09
답변에 진심으로 감사드립니다. 반원이 아닌 일반호를 그릴 경우에 중심점을 어떤 방식으로 계산해야 하는...
홍성락
•
2001.09.01 02:24
초보 wrote: > 답변에 진심으로 감사드립니다. > 반원이 아닌 일반호를 그릴 경우에 중심점을 어떤 방식...
초보
•
2001.09.21 21:19
답변에 진심으로 감사드립니다.
초짜
2001.08.23 06:40
0
COMMENTS
/
0
LIKES
액세스를 BDE로 연결하는 방법 좀 가르쳐주세요...
왕초보
•
2001.08.23 06:35
3
COMMENTS
/
0
LIKES
Tdatabase에 관해서....
박가
•
2001.08.24 00:44
왕초보 wrote: > 데이타 베이스로는 액세스를 사용하였구요... > ODBC를 사용하여 연결하여 사용합니다.....
박가
•
2001.08.24 00:44
왕초보 wrote: > 데이타 베이스로는 액세스를 사용하였구요... > ODBC를 사용하여 연결하여 사용합니다.....
초짜
•
2001.08.27 21:11
박가 wrote: > 왕초보 wrote: > > 데이타 베이스로는 액세스를 사용하였구요... > > ODBC를 사용하여 연...
이지컴
•
2001.08.23 05:27
2
COMMENTS
/
0
LIKES
SQL문에서 날짜비교할때 타입에러가 나네요..?
나그네
•
2001.08.24 03:15
Sdate := DateToStr(DateTimePicket1.Date); ShowMessage('Sdate: ' + Sdate'); // 이줄을 한번...
송병철
•
2001.08.23 07:25
이지컴 wrote: > > 쿼리에 SQL문을 삽입할때 에러가 나네요..! > > DB화일에 DATE타입의 필드가 있...
초보델피언
•
2001.08.23 03:37
1
COMMENTS
/
0
LIKES
DBGrid관해서....
칠라기
•
2001.08.23 09:22
초보델피언 wrote: > 초보델피언입니다. > 다른게 아니라 DBGrid에서 필드를 하나 만들어서 체크를 해...
imp
2001.08.23 04:16
0
COMMENTS
/
0
LIKES
Error creating form : Invalid stream format ???
델초짜
•
2001.08.23 03:24
2
COMMENTS
/
0
LIKES
treeview에서 부모노드를 모두 가져오는 방법좀 부탁드려요.
홍성락
•
2001.08.23 08:21
델초짜 wrote: > * 사용환경 : 델파이5 / Windows 98 > 예를 들어서 트리구조가 아래와 같다고 할
델초짜
•
2001.08.23 18:52
홍성락 wrote: > 델초짜 wrote: > > * 사용환경 : 델파이5 / Windows 98 > > 예를 들어서 트리구조가 아...
델초
2001.08.23 03:13
0
COMMENTS
/
0
LIKES
최상위 윈도우로 띄우기...
초보
2001/08/23 06:48
Views
214
Likes
0
Comments
4
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> (50,50) - (200,50) 의 좌표를 기준으로 반원을 그리는 방법을
> 아시는 분 부탁드립니다.
> 물론 아래부분에 직선이 그어져서는 안되고요 위로 호만 그리려고 합니다.
>
> 답변 부탁드립니다.
////////////////////////////////////////////////////////////////////
아래방법을 상용해보세요.
X를 왼쪽부터 오른쪽으로 그리면 위로 호가 나타나고
오른쪽에서 왼쪽으로 그리면 아래로 호가 그려집니다.
procedure TForm1.Button1Click(Sender: TObject);
var
xx, yy, X1, X2, Y1, Y2, i, yyy, buho, CX, CY : Integer;
R_ : Double;
begin
Origin.x := strToint(Edit1.text);
Origin.Y := strToint(Edit2.text);
xx := strToint(Edit3.text);
Yy := strToint(Edit4.text);
with Image1 do begin
//시작점찾기
if Origin.x < xx then begin
X1 := Origin.x;
X2 := xx;
y1 := Origin.y;
y2 := yy;
buho := 1;
end
else begin
X1 := xx;
X2 := Origin.x;
y1 := yy;
y2 := Origin.y;
buho := -1;
end;
//반자름,중심점
R_ := sqrt(sqr(X2 - X1) + sqr(Y2 - Y1))/2;
CX := Round( (X1+X2)/2 );
CY := Round( (Y1+Y2)/2 );
canvas.MoveTo(X1, Y1);
if Origin.y > yy then begin
for i := X1-CX Downto Trunc(-R_) do begin
yyy := Round( sqrt(sqr(R_)-sqr(i)) ) * buho;
canvas.LineTo(i+CX, yyy+CY);
ListBox1.Items.Add(intToStr(i)+ ' : ' +intToStr(yyy));
end;
for i := Trunc(-R_) to X2-CX do begin
yyy := -Round( sqrt(sqr(R_)-sqr(i)) ) * buho;
canvas.LineTo(i+CX, yyy+CY);
ListBox1.Items.Add(intToStr(i)+ ' : ' +intToStr(yyy));
end;
end
else begin
for i := X1-CX to Trunc(R_) do begin
yyy := -Round( sqrt(sqr(R_)-sqr(i)) ) * buho;
canvas.LineTo(i+CX, yyy+CY);
ListBox1.Items.Add(intToStr(i)+ ' : ' +intToStr(yyy));
end;
for i := Trunc(R_) downto X2-CX do begin
yyy := Round( sqrt(sqr(R_)-sqr(i)) ) * buho;
canvas.LineTo(i+CX, yyy+CY);
ListBox1.Items.Add(intToStr(i)+ ' : ' +intToStr(yyy));
end;
end;
end;
//Refresh;
end;