BLT의 barchart에 원 그리기

admin의 아바타

BLT 패키지는 다양한 graph, plot 등을 그릴수 있는 위젯들을 제공합니다.

그중 barchart라는 위젯이 있는데, barchart는 line, polygon, bitmap, text등을 지원하죠.

하지만.. 차트에 circle을 그려야하는 상황이 오고 말았는데요.

어차피 circle은 연속된 라인들로 이루어진 것에 불과하니.. line 으로 구현해보았습니다.

아래는 주어진 위치와 반지름의 길이를 기본으로 연속된 라인을 만들어 circle을 구현해줍니다.

proc GetCircleCoords { x y radius } {
        # 100정다각형
        set coords [list]
        for {set i 0} {$i < 100} {incr i} {
                set angle [expr (3.141592*2)/100*$i]
                set px [expr $x+(cos($angle)*$radius)]
                set py [expr $y+(sin($angle)*$radius)]
                lappend coords $px $py
        }
        lappend coords [lindex $coords 0] [lindex $coords 1]

        return $coords
}

....

$graph marker create line \
        -coords [GetCircleCoords 10.0 10.0 1.0] \
        -linewidth 1 -outline red]
....

어떤가요?.. ㅎㅎ

첨부 파일파일 크기
circle_on_barchart.png6.47 KB