コード例 #1
0
inline int fdct3d_globalpou(float tht, float phi, float buf, float& pou)
{
  float lt = M_PI/4 - buf;  float rt = M_PI/4 + buf;
  if(abs(tht)<=lt && abs(phi)<=lt)
	 pou = 1;
  else if(abs(tht)>=rt || abs(phi)>=rt)
	 pou = 0;
  else {
	 float tt = tan(abs(tht));
	 float tp = tan(abs(phi));
	 float pa[2];	pa[0] = abs(tht);	pa[1] = abs(phi);
	 float pb[2]; pb[0] = atan2(tp,tt); pb[1] = atan2(1,tt);
	 float pc[2]; pc[0] = atan2(tt,tp); pc[1] = atan2(1,tp);
	 float sa; fdct3d_globalpou_shape(lt, rt, pa[0], pa[1], sa);
	 float sb; fdct3d_globalpou_shape(lt, rt, pb[0], pb[1], sb);
	 float sc; fdct3d_globalpou_shape(lt, rt, pc[0], pc[1], sc);
	 pou = sqrt(sa/(sa+sb+sc));
  }
  return 0;
}
コード例 #2
0
inline int fdct3d_globalpou(double tht, double phi, double buf, double& pou)
{
  double lt = M_PI/4 - buf;  double rt = M_PI/4 + buf;
  if(abs(tht)<=lt && abs(phi)<=lt)
	 pou = 1;
  else if(abs(tht)>=rt || abs(phi)>=rt)
	 pou = 0;
  else {
	 double tt = tan(abs(tht));
	 double tp = tan(abs(phi));
	 double pa[2];	pa[0] = abs(tht);	pa[1] = abs(phi);
	 double pb[2]; pb[0] = atan2(tp,tt); pb[1] = atan2(1,tt);
	 double pc[2]; pc[0] = atan2(tt,tp); pc[1] = atan2(1,tp);
	 double sa; fdct3d_globalpou_shape(lt, rt, pa[0], pa[1], sa);
	 double sb; fdct3d_globalpou_shape(lt, rt, pb[0], pb[1], sb);
	 double sc; fdct3d_globalpou_shape(lt, rt, pc[0], pc[1], sc);
	 pou = sqrt(sa/(sa+sb+sc));
  }
  return 0;
}