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
[18132] Re:Re: 열심히 해 볼랍니다. 고맙습니다.
Falco [falco] 830 읽음    2002-05-03 13:15
답변 감사합니다.  그래도 생각보다 어렵네요.

열심히 해 보겠습니다.  화살표가 이쁘게 나왔네요.  :)

불사새 님이 쓰신 글 :
: void TMainForm::Narrow(TCanvas *Plate, int deg, TColor color)
: {
:     #define NRW_LENGTH      80
:     #define NRW_CENTER_X    150
:     #define NRW_CENTER_Y    150
:     #define DEG2RAD(x)      M_PI*(float)(x)/180.0
:     TPoint points[4];
:     float rad;
:     rad=DEG2RAD(deg);
:     points[0]=Point( (NRW_LENGTH+5)*sin(rad)     + NRW_CENTER_X , NRW_CENTER_Y-  (NRW_LENGTH+5)*cos(rad)     );
:     points[1]=Point(   (NRW_LENGTH)*sin(rad-0.1) + NRW_CENTER_X , NRW_CENTER_Y-    (NRW_LENGTH)*cos(rad-0.1) );
:     points[2]=Point((NRW_LENGTH+25)*sin(rad)     + NRW_CENTER_X , NRW_CENTER_Y- (NRW_LENGTH+25)*cos(rad)     );
:     points[3]=Point(   (NRW_LENGTH)*sin(rad+0.1) + NRW_CENTER_X , NRW_CENTER_Y-    (NRW_LENGTH)*cos(rad+0.1) );
:     Plate->Brush->Color = color;
:     Plate->Pen->Color   = color;
:     Plate->Polygon(points, 3);
: }
:
: 제가 나침반 만들때 쓴 함수입니다.
:
: Narrow(Form1->Canvas, 100, clRed);
:
: 뭐 이런식으로 쓰심 될껍니다...
:
: 화살표 중심점만(NRW_CENTER)를 바꿔주고 중심에서의 길이(NRW_LENGTH)를 바꿔 주시면...
:
: > 이런 모양의 화살표라 점이 4개입니다...
:
: Falco 님이 쓰신 글 :
: : 위에 보이는 그림처럼 라인을 긋고 끝에 화살표를 붙이고 싶어서 이렇게 한번 테스트 해 봤는데요...  위에 그린 화살표 처럼 가로면에 평행하게 그리면 화살표가 제대로 나오는데, 평행하지 않은 아래 화살표 처럼 그리는 경우에는 화살촉(?)이 라인에 따라 회전을 해 주어야 할것 같습니다.
: :
: : 근데, 아무리 머리를 짜내도 어떻게 그려야 할지 감이 오질 않네요.
: :
: : 애꿎은 "피타고라스" 만 검색을 하고 있는데, 고등 수학 사이트들을 막 찾아 다녀도 답이 안 나오는군요.
: :
: : 그래서 챙피를 무릅쓰고 이렇게 도움을 요청드립니다.  어떻게 그려야 할까요?
: :
: : 지금은 이렇게 그려 봤거든요. FirstPoint가 시작점의 TPoint이고, X, Y가 현재 좌표 입니다.
: :
: :
: :         Canvas->MoveTo(FirstPoint.x, FirstPoint.y);
: :         Canvas->LineTo(X, Y);
: :
: :         Canvas->MoveTo(FirstPoint.x, FirstPoint.y);
: :
: :         TPoint Points[3];
: :         Points[0] = FirstPoint;
: :         Points[1] = Point(FirstPoint.x + 20, FirstPoint.y + 4);
: :         Points[2] = Point(FirstPoint.x + 20, FirstPoint.y - 4);
: :
: :         Canvas->Polygon(Points, 2);
: :
: : 이렇게 그려서 위의 그림처럼 나온상태 입니다. 경험있으시거나 수학적으로 할수 있다 하시는 분들의 도움을 요청합니다.

+ -

관련 글 리스트
18123 화살표를 그리고 싶습니다. Falco 960 2002/05/03
18124     Re:화살표를 그리고 싶습니다. 불사새 1222 2002/05/03
18132         Re:Re: 열심히 해 볼랍니다. 고맙습니다. Falco 830 2002/05/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.