整理日: 2015年2月16日ui
代碼例code
// 點結構體定義 typedef struct CEcPoint{ double x; double y; }; // 圓結體定義 typedef struct CEcCircle{ double raduls; // 半徑 CEcPoint centre; // 圓心 } // 3個點的結構體定義 typedef struct CEcPoint3{ CEcPoint p1; CEcPoint p2; CEcPoint p3; }; void GetCircle(CEcCircle* pCircle, double Ax, double Ay, double Bx, double By, double Cx, double Cy) { double mat1,mat2,mat3; mat1 = ( (Bx*Bx + By*By) - (Ax*Ax + Ay*Ay) ) * (2 * (Cy-Ay) ) - ( (Cx*Cx + Cy*Cy) - (Ax*Ax + Ay*Ay) ) * (2 * (By-Ay) ); mat2 = ( 2 * (Bx-Ax) ) * ( ( Cx*Cx + Cy*Cy ) - ( Ax*Ax + Ay*Ay ) ) - ( 2 * (Cx-Ax) ) * ( ( Bx*Bx + By*By ) - ( Ax*Ax + Ay*Ay ) ); mat3 = 4 * ( (Bx-Ax) * (Cy-Ay) - (Cx-Ax) * (By-Ay) ); pCircle->centre.x = mat1/mat3; pCircle->centre.y = mat2/mat3; pCircle->raduis = sqrt ( (Ax-pCircle->centre.x) * (Ax-pCircle->centre.x) + (Ay-pCircle->centre.y) * (Ay-pCircle->centre.y) ); } // pCircle: 圓, p3: 3個點 void GetCircle(CEcCircle* pCircle, CEcPoint3* p3) { return GetCircle(pCircle, p3->Ax, p3->Ay, p3->Bx, p3->By, p3->Cx, p3->Cy); }