한국어
Windows Programming
 

Drawing1.jpg

 

 /*
 @brief 두점을 지나는 원의 중심점을 구한다.
 @param * psRelMatchPos 원의 중심점 좌표
 @param fR 반지름
 @param * psCenterPoint 첫번째 점과 두번째 점의 좌표
 @param Direction 좌측 또는 우측방향
 @return Error code
 */
 ATF_ERR_T CiADAS_ReconstructorDlg ::Get_Two_Point_Circle( AT_FPOINT *psRelMatchPos, const float fR, const AT_FPOINT* psCenterPoint, const BOOL Direction)
 {
float fdx = (psCenterPoint[1].x - psCenterPoint[0].x);
float fdy = (psCenterPoint[1].y - psCenterPoint[0].y);
float fxc = (psCenterPoint[1].x + psCenterPoint[0].x) / 2.0;
float fyc = (psCenterPoint[1].y + psCenterPoint[0].y) / 2.0;

float fd = sqrt(fdx * fdx + fdy * fdy); //두점사이의 거리
float fd2 = fd/2; //거리의 중간
float fOffset = sqrt(fR * fR - fd2 * fd2);

float fplusx = fOffset * fdy/fd;
float fplusy = fOffset * fdx/fd;

if(Direction == 1)
{
psRelMatchPos->x = fxc + fplusx;
psRelMatchPos->y = fyc - fplusy;
}
else// if(Direction == 0)
{
psRelMatchPos->x = fxc - fplusx;
psRelMatchPos->y = fyc + fplusy;
}

return ATF_ERR_NONE;
}