|
답변 감사합니다. 그래도 생각보다 어렵네요.
열심히 해 보겠습니다. 화살표가 이쁘게 나왔네요. :)
불사새 님이 쓰신 글 :
: 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);
: :
: : 이렇게 그려서 위의 그림처럼 나온상태 입니다. 경험있으시거나 수학적으로 할수 있다 하시는 분들의 도움을 요청합니다.
|