원의 중심과 반지름을 이용한 원 그리기 C++

Software/C++ Builder|2023. 3. 21. 11:15
반응형

Canvas 에 원을 그리기 위해서 Ellipse 멤버함수를 사용하는데 이 함수가 사각형에 내접하는 원을 그리는 방식이라 
타원이 그려지게 되죠.. 정원을 그리기 위해서는 정사각형을 구현해야 합니다. 

그래서 원의 중심점과 반지름 위치의 점을 이용하여 정원을 그리는 방식으로 코드를 만들어 보았습니다. 

void Calcu_Circle_Position(POINT Center, POINT Radius, POINT* StartPos, POINT* EndPos) 

    int dx, dy, radius ; 

    dx = (Radius.x - Center.x) * (Radius.x - Center.x) ; 
    dy = (Radius.y - Center.y) * (Radius.y - Center.y) ; 
    radius = sqrt((double)(dx+dy)) ; 

    StartPos->x = Center.x - radius ; 
    StartPos->y = Center.y - radius ; 
    EndPos->x   = Center.x + radius ; 
    EndPos->y   = Center.y + radius ; 


함수 사용방법은 

POINT Center, Radius, StartPos, EndPos ; 

/**************** 
Center : 원의 중심점의 좌표값 
Radius : 반지름에 해당하는 좌표값 
*****************/ 

Calcu_Circle_Position(Center, Radius, &StartPos, &EndPos) ; 
Canvas->Ellipse(StartPos.x, StartPos.y, EndPos.x, EndPos.y) ; 

이렇게 사용하시면 됩니다.

반응형

댓글()