模仿CAD求构造线的方法!

BOOL ThreePointParallel(CPoint ptBegin,CPoint ptEnd,CPoint& ptOutBegin,CPoint&ptOutEnd) { CRect rect; HWND PWND = ::GetDesktopWindow(); ::GetClientRect(PWND,&rect); int nMax = rect.Height() == rect.Width()?rect.Height():rect.Height()<rect.Width()?rect.Width():rect.Height(); if (ptBegin.x == ptEnd.x && ptBegin.y == ptEnd.y) return FALSE; CPoint ptBeginFar = CPoint(-nMax,-nMax); CPoint ptEndFar = CPoint(nMax,nMax); //改变three的值求ptOut的左右 GetNotLinePlumb(ptBegin,ptEnd,ptBeginFar,ptOutBegin); GetNotLinePlumb(ptBegin,ptEnd,ptEndFar,ptOutEnd); return TRUE; } int GetNotLinePlumb(CPoint pt1,CPoint pt2,CPoint pt3,CPoint &ptOut) { double dba,dbb; dba = sqrt((long double)((pt2.x - pt1.x) * (pt2.x - pt1.x) + (pt2.y - pt1.y) * (pt2.y - pt1.y) )); dbb = ((pt2.x - pt1.x) * (pt3.x -pt1.x) + (pt2.y - pt1.y) * (pt3.y - pt1.y) ); dba = dbb / (dba * dba); ptOut.x = pt1.x + (pt2.x - pt1.x) * dba; ptOut.y = pt1.y + (pt2.y - pt1.y) * dba; return TRUE; }

你可能感兴趣的:(模仿CAD求构造线的方法!)