Пример #1
0
//----------------------------------------
int32_t CMission::Convert(CDate& date,  uint32_t& cycle, uint32_t& pass)
{
  double dateJulian = 0.0;
  double dateJulianRef = 0.0;
 
  int32_t result = BRATHL_SUCCESS;

  if (m_nbPass == 0)
  {
    return BRATHL_ERROR_INVALID_NB_PASS;
  }
  
  if (m_repeat == 0)
  {
    return BRATHL_ERROR_INVALID_REPETITION;
  }
/*  
  if ((cycle == NULL) || (size <= 0))
  {
    return BRATHL_ERROR_INVALID_CTODATE_PARAMETER;    
  }

*/
  date.Convert2DecimalJulian(dateJulian);
  m_dateRef.Convert2DecimalJulian(dateJulianRef);
  
  double absRef = m_passRef + (m_cycleRef - 1) * m_nbPass + 0.5;
  double passLength = m_repeat / m_nbPass;
  
  double deltaPass = (dateJulian - dateJulianRef) / passLength;
 
  double abs = absRef + deltaPass - 1;
  
  cycle = 1 + static_cast<int32_t>((abs) / m_nbPass);
  pass = 1 + static_cast<int32_t>((abs)) % m_nbPass;
  
      
  return result;
  
}