рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдФрд░ рдорд┐рдХреНрд╕рд┐рдВрдЧ рдЯрд╛рдЗрдк рдбрд┐рдбрдХреНрд╢рди рдФрд░ рдЗрд╕рдХреЗ рд╕реНрдкрд╖реНрдЯ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЯрд┐рдкреНрдкрдгреА

рджреВрд╕рд░реЗ рджрд┐рди рдореИрдВрдиреЗ FITS рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЦреБрдж рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╣рд╛рдВ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ CCFITS рд╣реИрдВ , рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдиреА рдмрд╛рдЗрдХ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ ... рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВред

рдкреНрд░рд╛рд░реВрдк рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЖрдпрд╛рдореЛрдВ рдХреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХрд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реИ:

void setBytePix(int value); void setAxisSize(const std::vector<int> &axis ); 

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдбрд┐рдЬрд╝рд╛рдЗрди рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓рд╛:

 std::vector srcVector; srcVector.push_back(1024); srcVector.push_back(1024); setAxisSize(srcVector); 

рдЕрдЧрд░ std :: рд╡реЗрдХреНрдЯрд░ рдХреЗ рдмрдЬрд╛рдп Qt рд╕реЗ рдПрдХ QVector рд╣реЛрдЧрд╛, рддреЛ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред

 setAxisSize(QVector<int>()<<1024<<1024); 

рд▓реЗрдХрд┐рди рдПрд╕рдЯреАрдПрд▓ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рд╛рд░реЗ рдкреНрдпрд╛рд░ рдХреЗ рд╕рд╛рде рдХреНрдпреВрдЯреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ред рд╕рдорд╛рдзрд╛рди рдЗрд╕ рд╢реИрд▓реА рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛:

 void setAxeSize(int number, int size); void setNumberDimension(int value); void setAxisDimensionP(int dimensionNumber, int axisSize){ setAxeSize(dimensionNumber, axisSize); } template<typename ...Arguments> void setAxisDimensionP(int dimensionNumber, int axisSize, Arguments... args){ setAxeSize(dimensionNumber, axisSize); ++dimensionNumber; setAxisDimensionP(dimensionNumber, args...); } template<typename ...Arguments> void setAxisSize(Arguments... args) { <s> setNumberDimension(sizeof...(args)/sizeof(int));</s> ( @AxisPod   ) setNumberDimension(sizeof...(args)); setAxisDimensionP(0, args...); } 

рдЕрдм рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ:

 setAxisSize(1024, 1024); 

рдЗрд╕рдХреЗ рдмрд╛рдж рдЯреЗрдореНрдкрд▓реЗрдЯ рдФрд░ рд╕реЗрдЯрдмрд╛рдЗрдЯрдкрд┐рдХреНрд╕ рдХреА рдЗрдЪреНрдЫрд╛ рдЖрдИред рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдирд╣реАрдВ рдХрд╣рд╛:

 template <typename T> void setBytePix(){ setBytePix(sizeof(T)*8);} 

рднреВрдЦ рдмрдврд╝ рд░рд╣реА рд╣реИ рдФрд░ рдЕрдм рдореИрдВ рджреЛ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛, рд▓реЗрдХрд┐рди рдПрдХред рд╣рдо рдордЧрд░рдордЪреНрдЫреЛрдВ рдФрд░ рдЙрдиреНрдирдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреБрдЦреА рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВред

 template<typename T, typename ...Arguments> void setAxisSize(Arguments... args) { setBytePix<T>(); setNumberDimension(sizeof...(args)); setAxisDimensionP(0, args...); } 

рдЕрдм рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

 setAxisSize<short>(1392,1032); 

рдЪрдорддреНрдХрд╛рд░! рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!
PS рдиреЗ 4.9G рдХреЗ рд╕рд╛рде MinGW рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛

Source: https://habr.com/ru/post/In216901/


All Articles