ֽṹڵGENSECCENTߵĹ

Ŀģָ㣬ͨɱ뾶Բָϵе㣬ֱ--ֱߵΡ
ƣ	
static BOOL GetArcCENTStartAndEndPTAndRadius(
                                const AcGePoint3d& ptFirst,     
				const AcGePoint3d& ptSecond,
				const AcGePoint3d& ptThird,
				const AcGePoint3d& ptCenter,
				double&       dRadius,
				AcGePoint3d&  ptRe1,
				AcGePoint3d&  ptRe2,
				AcGePoint3d&  ptArcOrientation
				);
ptFirst Ϊָĵһ
          ptSecondΪϵһ㣬ܲڻ
          ptThirdΪָĵڶ
          ptCenterΪԲ԰
          dRadiusΪԲİ뾶ΪҲΪ
ptRe1 ΪԲ
          ptRe2 ΪԲյ
          ptArcOrientation λϵĵ

㷨ʵ֣㵽Բĵĳȣҳٽ뾶
	  //߶γ
	  double dLen1 = ptCenter.distanceTo( ptFirst );
	  double dLen2 = ptCenter.distanceTo( ptSecond );
	  double dLen3 = ptCenter.distanceTo( ptThird );

          //ٽ뾶
	  AcGeVector3d vt1To0 = ( ptCenter - ptFirst ).normal();
	  AcGeVector3d vt1To3 = ( ptThird  - ptFirst ).normal();
	  double dAngle013 = vt1To0.angleTo(vt1To3);
	  double dTempRadius = dLen1 * sin( dAngle013 );

	  //ĬϻϵĵΪڶ
	  ptArcOrientation = ptSecond;

ȻҳС뾶ֱм㣬Ϊ漸:

1.dRadiusdLen2СʱСֵdRadiusdLen2Ϊ뾶dRadius
  1.1 dRadiusڻٽ뾶dTempRadiusʱ
      //õе
      GetCutPt( ptCenter,  dRadius,  ptSecond,  ptFirst,  ptRe1 );
      GetCutPt( ptCenter,  dRadius,  ptSecond,  ptThird,  ptRe2 );

  1.2 dRadiusСٽ뾶dTempRadiusʱ
      //µõϵĵ㣨ڶԲĵĶԳƵ㣩
      AcGePoint3d ptSecondTemp = AcGePoint3d( 2*ptCenter.x - ptSecond.x ,2*ptCenter.y - ptSecond.y, 2*ptCenter.z - ptSecond.z );
      //õе
      GetCutPt( ptCenter,  dRadius,  ptSecondTemp,  ptFirst,  ptRe1 );
      GetCutPt( ptCenter,  dRadius,  ptSecondTemp,  ptThird,  ptRe2 );
      //¸ֵ߷ϵĵ
      ptArcOrientation = ptSecondTemp;

2.dLen1СʱСֵΪ뾶dRadiusһеΪptFirst
      //õ뾶е
      dRadius = dLen1;
      ptRe1 = ptFirst;
      //õڶе
      GetCutPt( ptCenter,  dRadius,  ptSecond,  ptThird,  ptRe2 );
3.dLen3СʱСֵΪ뾶dRadiusڶеΪptThird
      //õ뾶е
      dRadius = dLen3;
      ptRe2 = ptThird;
      //õһе
      GetCutPt( ptCenter,  dRadius,  ptSecond,  ptFirst,  ptRe1 );


ɵһptFirst͵һеptRe1ɵһֱ߶
    ɵһеptRe1͵ڶеptRe2м߶
    ɵڶеptRe2͵ptThirdһֱ߶
    Ӷֱߡߡֱ 

			
ע
GetCutPt˵ 
: ָ㵽ָԲָϵе                                                            
static BOOL GetCutPt( const AcGePoint3d& ptCenter, //Բ
	              const double dRadius, //뾶
	              const AcGePoint3d& ptArcOrientation, //ϵĵ
	              const AcGePoint3d& pt, //ָ
	              AcGePoint3d& ptCut  //õе
	            );
