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
[49551] Re:토크 그래프..
장성호 [nasilso] 1142 읽음    2007-06-05 01:21
x1 = (x >= max_range[0]) ? 450: (450 / max_range[0] * x);
위 구문이 궁금하신거죠?


현재 x 값을 가지고 Canvas에 대입했을때의  x1 값을 찾는것입니다.

최대 x-range  =  max_range[0]
x-range가 최대일때 Canvas에서의 x좌표값은 450 인것입니다.

수식으로 표현하면 max_range[0]일때 450이면 x일때는 ? 얼마인가의 문제입니다.

     max_range[0] : 450 = x : ?         

그러므로
    450 * x = max_range[0] * ?            ==> 양쪽을 max_range[0]로 나누면?
    ( 450 * x ) /max_range[0] = ?     
    ? = x1 = 450 * x / max_range[0] ;   

근데 위공식으로 x1값을 구하면 x값이 최대값 max_range[0]보다 클때는 450보다 넘어가겠죠
그러므로 x값이 max_range를 넘어가도 x1값이    450 이 넘어가지 않도록 위와같이 코딩한것입니다.

x1 = (x >= max_range[0]) ? 450: (450 / max_range[0] * x);



결론적으로 x값이 토크 최대값보다 클때는 Canvas에 x좌표를 450으로    그리고
최대값보다 작을때는 최대일때 450이니까 그보다 작은값으 그와 같은 비율로 줄여서 Canvas에 그려주는것입니다.

y값도 마찬가지로 canvas 최대값은 320 인것이구요


예를 들어
max_range[0]= 10000 일때
x값이 10000 보다 큰거나 같은경우는 x1= 450 이구요
x값이 100    이면       450/100 = 4.5
x값이 500    이면       450 / 20 = 22.5 가 되는것입니다.
x값이 1000  이면       450 / 10  = 45 가 되는것입니다.


p.s

이정도는 중학교 1,2학년 수학정도 될것 같은데...
저도 그렇지만 요즘 프로그램하면서 수학이 약한것을 많이 느낍니다.
학교다닐때 좀 열심히 해 놓을걸 하는 아쉬움이....





카리스 님이 쓰신 글 :
: 그래프 그리는 건데여.. 토크와 전압관계를 그리는 거에여...
: 그래프의 범위는
: void __fastcall TForm1::PaintBox1Paint(TObject *Sender)
: {
:     PaintBox1->Canvas->Pen->Color = clGray;
:         PaintBox1->Canvas->MoveTo(0, 0);
:         PaintBox1->Canvas->LineTo(0, 320);
:         PaintBox1->Canvas->LineTo(450, 320);
:         PaintBox1->Canvas->LineTo(450, 0);
:         PaintBox1->Canvas->LineTo(0, 0);
: 이런 식이구영...
:
: if(graph_view_flag[0])
:          ShowTVGraph(tor_val[data_count], vol_val[data_count]);
:
: 여기서 ShowTVGraph함수는
:
: void __fastcall TForm1::ShowTVGraph(double x, double y)
: {
:     static double x_old, y_old;
:      double x1, y1;
:
:      x1 = (x >= max_range[0]) ? 450: (450 / max_range[0] * x);
:      y1 = (y >= max_range[7]) ? 0: (320 - (320 / max_range[7] * y));
:
:      if(data_count1 >= 1) {
:          PaintBox1->Canvas->Pen->Color = (TColor)0x00C08080;
:           PaintBox1->Canvas->MoveTo(x_old, y_old);
:           PaintBox1->Canvas->LineTo(x1, y1);
:      }
:
:      x_old = x1;
:      y_old = y1;
: }
:  max_range[0]는 토크의 최대값 같구영... 그런데..
: 여기서  x1 = (x >= max_range[0]) ? 450: (450 / max_range[0] * x);
: 이부분이 이해가 안가여...

+ -

관련 글 리스트
49545 토크 그래프.. 카리스 1215 2007/06/04
49551     Re:토크 그래프.. 장성호 1142 2007/06/05
49553         Re:Re:토크 그래프.. 그런데여.. 흠.. 960 2007/06/05
49555             Re:Re:Re:토크 그래프.. 이정구 911 2007/06/05
49556                 Re:Re:Re:Re:토크 그래프.. 카리스 853 2007/06/05
49557                     Re:Re:Re:Re:Re:토크 그래프.. kylix 890 2007/06/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.