Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-09 07:49:42

0001 #pragma once
0002 /**
0003 spa.h
0004 ======
0005 
0006 last two param are zmin/zmax for multiple types::
0007 
0008    CSG_ZSPHERE
0009    CSG_CYLINDER
0010    CSG_CONE
0011 
0012 **/
0013 #include <string>
0014 #include <sstream>
0015 #include <iomanip>
0016 #include <cassert>
0017 
0018 #include "SYSRAP_API_EXPORT.hh"
0019 
0020 struct SYSRAP_API spa
0021 {
0022     static constexpr const char* NAME = "spa" ; 
0023     static constexpr const int N = 6 ; 
0024     double x0, y0, z0, w0, x1, y1 ;  
0025 
0026     const double* data() const { return &x0 ; }  
0027     double zmin() const { return x1 ; }
0028     double zmax() const { return y1 ; }
0029     void decrease_zmin(double dz){ assert( dz >= 0.) ; x1 -= dz ; }
0030     void increase_zmax(double dz){ assert( dz >= 0.) ; y1 += dz ; }
0031 
0032     std::string desc() const ; 
0033 }; 
0034 
0035 inline std::string spa::desc() const
0036 {
0037     const double* v = data() ; 
0038     int wid = 8 ; 
0039     int pre = 3 ; 
0040     std::stringstream ss ;
0041     ss << "(" ;  
0042     for(int i=0 ; i < N ; i++) ss << std::setw(wid) << std::fixed << std::setprecision(pre) << v[i] << " " ; 
0043     ss << ")" ;  
0044     std::string str = ss.str(); 
0045     return str ; 
0046 }
0047 
0048