コード例 #1
0
ファイル: regPolygon.c プロジェクト: DougBurke/sherpa
// copy
regShape* regCopyPolygon( regShape* shape ) {
    if (shape->type != regPOLYGON) {
	    fprintf( stderr, "ERROR: Attempting to copy %s as a Polygon\n", shape->name);
	    return(NULL);
    }

    return regCreatePolygon(shape->include,
                            shape->xpos,
                            shape->ypos,
                            shape->nPoints,
                            shape->flag_coord,
                            shape->flag_radius);
}
コード例 #2
0
ファイル: region_shape.c プロジェクト: OrbitalMechanic/sherpa
/* -----------------------------------------------------------------------

  
   ----------------------------------------------------------------------- */
regShape *regCreateShape(
			 regRegion *region,
			 regMath glue,
			 regGeometry type,
			 regFlavor include,
			 double *xpos,
			 double *ypos,
			 long   npoints,
			 double *radius,
			 double *angle,
             int wcoord,
             int wsize
			 )
{
  regShape *newShape = NULL;
  double fx[2] ={ -DBL_MAX, DBL_MAX };
  double fy[2] ={ -DBL_MAX, DBL_MAX };

  /* Region library can not create Pixel Mask shapes */
  if ( type == regMASK ) { return newShape; };


  switch ( type )
    {
    case regPOINT:
      newShape = regCreatePoint(include, xpos, ypos, wcoord, wsize); 
      break;
    
    case regCIRCLE:
      newShape = regCreateCircle(include, xpos, ypos, radius, wcoord, wsize); 
      break;
 
    case regANNULUS:
      newShape = regCreateAnnulus(include, xpos, ypos, radius, wcoord, wsize);
      break;
 
    case regELLIPSE:
      newShape = regCreateEllipse(include, xpos, ypos, radius, angle, wcoord, wsize); 
      break;
         
    case regBOX:
      newShape = regCreateBox(include, xpos, ypos, radius, angle, wcoord, wsize); 
      break;

    case regRECTANGLE:
      newShape = regCreateRectangle(include, xpos, ypos, angle, wcoord, wsize); 
      break;

    case regPOLYGON:
      newShape = regCreatePolygon(include, xpos, ypos, npoints, wcoord, wsize);
      break;

    case regPIE:
      newShape = regCreatePie(include, xpos, ypos, radius, angle, wcoord, wsize);
      break;

    case regSECTOR:
      newShape = regCreateSector(include, xpos, ypos, angle, wcoord, wsize);
      break;

    case regFIELD:
      newShape = regCreateField(include, wcoord, wsize);
      break;

   default:
      return(NULL);
    }

  /* attributes get assigned/init when glued to a region */

  if ( newShape == NULL ) return NULL; 

  if ( region != NULL ) {
      regAddShape( region, glue, newShape );
      regExtent(region, fx, fy, region->xregbounds, region->yregbounds);
  }
 
  return( newShape );
}