亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cmatrix.c

?? 攝影測量專業。實現單像后方交會以及立體像對的前方交會。以文件形式讀取控制點和像點坐標。
?? C
?? 第 1 頁 / 共 5 頁
字號:
    MTX_ERROR_MSG( "MTX_Malloc returned FALSE." );
    return FALSE;
  }

  for( i = 0; i < M->nrows; i++ )
  {
    Re->data[0][i] = M->cplx[col][i].re;
  }

  return TRUE;
}

BOOL MTX_Imag( const MTX *M, MTX *Im )
{
  unsigned i = 0;
  unsigned j = 0;

  if( MTX_isNull( M ) )
  {
    MTX_ERROR_MSG( "NULL Matrix" );
    return FALSE;
  }

  if( M->isReal )
    return MTX_Calloc( Im, M->nrows, M->ncols, TRUE ); // return a zero matrix

  if( !MTX_Malloc( Im, M->nrows, M->ncols, TRUE ) )
  {
    MTX_ERROR_MSG( "MTX_Malloc returned FALSE." );
    return FALSE;
  }

  for( j = 0; j < M->ncols; j++ )
  {
    for( i = 0; i < M->nrows; i++ )
    {
      Im->data[j][i] = M->cplx[j][i].im;
    }
  }
  return TRUE;
}

BOOL MTX_ImagColumn( const MTX *M, const unsigned col, MTX *Im )
{
  unsigned i = 0;

  if( MTX_isNull( M ) )
  {
    MTX_ERROR_MSG( "NULL Matrix" );
    return FALSE;
  }

  if( col >= M->ncols )
  {
    MTX_ERROR_MSG( "if( col >= M->ncols )" );
    return FALSE;
  }

  if( M->isReal )
    return MTX_Calloc( Im, M->nrows, 1, TRUE ); // return a zero column

  if( !MTX_Malloc( Im, M->nrows, 1, TRUE ) )
  {
    MTX_ERROR_MSG( "MTX_Malloc returned FALSE." );
    return FALSE;
  }

  for( i = 0; i < M->nrows; i++ )
  {
    Im->data[0][i] = M->cplx[col][i].im;
  }
  return TRUE;
}

BOOL MTX_Magnitude( const MTX *M, MTX *Magnitude )
{
  unsigned i = 0;
  unsigned j = 0;
  double re;
  double im;

  if( MTX_isNull( M ) )
  {
    MTX_ERROR_MSG( "NULL Matrix" );
    return FALSE;
  }

  if( M->isReal )
  {
    if( !MTX_Copy( M, Magnitude ) )
    {
      MTX_ERROR_MSG( "MTX_Copy returned FALSE." );
      return FALSE;
    }
    if( !MTX_Abs( Magnitude ) )
    {
      MTX_ERROR_MSG( "MTX_Abs returned FALSE." );
      return FALSE;
    }
    return TRUE;
  }

  if( !MTX_Malloc( Magnitude, M->nrows, M->ncols, TRUE ) )
  {
    MTX_ERROR_MSG( "MTX_Malloc returned FALSE." );
    return FALSE;
  }

  for( j = 0; j < M->ncols; j++ )
  {
    for( i = 0; i < M->nrows; i++ )
    {
      re = M->cplx[j][i].re;
      im = M->cplx[j][i].im;
      Magnitude->data[j][i] = sqrt( re*re + im*im );
    }
  }
  return TRUE;
}

BOOL MTX_Phase( const MTX *M, MTX *Phase )
{
  unsigned i = 0;
  unsigned j = 0;

  if( MTX_isNull( M ) )
  {
    MTX_ERROR_MSG( "NULL Matrix" );
    return FALSE;
  }

  if( !MTX_Calloc( Phase, M->nrows, M->ncols, TRUE ) )
  {
    MTX_ERROR_MSG( "MTX_Calloc returned FALSE." );
    return FALSE;
  }

  if( M->isReal )
  {
    for( j = 0; j < M->ncols; j++ )
    {
      for( i = 0; i < M->nrows; i++ )
      {
        if( M->data[j][i] < 0.0 )
        {
          Phase->data[j][i] = PI;
        }
        else
        {
          Phase->data[j][i] = 0.0;
        }
      }
    }
    return TRUE;
  }

  for( j = 0; j < M->ncols; j++ )
  {
    for( i = 0; i < M->nrows; i++ )
    {
      Phase->data[j][i] = atan2( M->cplx[j][i].im, M->cplx[j][i].re );
    }
  }
  return TRUE;
}


BOOL MTX_Conjugate( MTX *M )
{
  unsigned i=0;
  unsigned j=0;

  if( MTX_isNull( M ) )
  {
    MTX_ERROR_MSG( "NULL Matrix" );
    return FALSE;
  }

  if( M->isReal )
    return TRUE;

  for( j = 0; j < M->ncols; j++ )
  {
    for( i = 0; i < M->nrows; i++ )
    {
      M->cplx[j][i].im = -M->cplx[j][i].im;
    }
  }
  return TRUE;
}

BOOL MTX_RemoveColumn( MTX *M, const unsigned col )
{
  unsigned j = 0;
  unsigned k = 0;
  double **dptr = NULL;
  stComplex **cptr = NULL;

  if( MTX_isNull( M ) )
  {
    MTX_ERROR_MSG( "NULL Matrix" );
    return FALSE;
  }

  if( col >= M->ncols )
  {
    MTX_ERROR_MSG( "if( col >= M->ncols )" );
    return FALSE;
  }

  // special case
  if( M->ncols == 1 )
  {
    return MTX_Free( M );
  }

  // allocate a new array of column vectors
  if( M->isReal )
  {
    dptr = (double**)malloc( (M->ncols-1)*sizeof(double*) );
    if( !dptr )
    {
      MTX_ERROR_MSG( "malloc returned NULL." );
      return FALSE;
    }
  }
  else
  {
    cptr = (stComplex**)malloc( (M->ncols-1)*sizeof(stComplex*) );
    if( !cptr )
    {
      MTX_ERROR_MSG( "malloc returned NULL." );
      return FALSE;
    }
  }

  // copy the previous array of pointers
  // except the one to remove
  k = 0;
  for( j = 0; j < M->ncols; j++ )
  {
    if( j != col )
    {
      if( M->isReal )
        dptr[k] = M->data[j];
      else
        cptr[k] = M->cplx[j];
      k++;
    }
    else
    {
      if( M->isReal )
        free( M->data[j] );
      else
        free( M->cplx[j] );
    }
  }

  // free the old column array, and copy the new
  if( M->isReal )
  {
    free( M->data );
    M->data = dptr;
  }
  else
  {
    free( M->cplx );
    M->cplx = cptr;
  }
  M->ncols--;

  return TRUE;
}

BOOL MTX_RemoveColumnsAfterIndex( MTX *dst, const unsigned col )
{
  unsigned ncols;
  unsigned j = 0;
  double **dptr = NULL;
  stComplex **cptr = NULL;

  if( MTX_isNull( dst ) )
  {
    MTX_ERROR_MSG( "NULL Matrix" );
    return FALSE;
  }

  if( col >= dst->ncols )
  {
    MTX_ERROR_MSG( "if( col >= dst->ncols )" );
    return FALSE;
  }

  // special case
  if( dst->ncols == 1 )
  {
    return MTX_Free( dst );
  }

  ncols = col+1;

  // allocate a new array of column vectors
  if( dst->isReal )
  {
    dptr = (double**)malloc( ncols*sizeof(double*) );
    if( !dptr )
    {
      MTX_ERROR_MSG( "malloc returned NULL." );
      return FALSE;
    }
  }
  else
  {
    cptr = (stComplex**)malloc( ncols*sizeof(stComplex*) );
    if( !cptr )
    {
      MTX_ERROR_MSG( "malloc returned NULL." );
      return FALSE;
    }
  }

  for( j = 0; j < dst->ncols; j++ )
  {
    if( j < ncols )
    {
      if( dst->isReal )
        dptr[j] = dst->data[j];
      else
        cptr[j] = dst->cplx[j];
    }
    else
    {
      if( dst->isReal )
        free( dst->data[j] );
      else
        free( dst->cplx[j] );
    }
  }

  // free the old column array, and copy the new
  if( dst->isReal )
  {
    free( dst->data );
    dst->data = dptr;
  }
  else
  {
    free( dst->cplx );
    dst->cplx = cptr;
  }
  dst->ncols = ncols;

  return TRUE;
}


BOOL MTX_InsertColumn( MTX *dst, const MTX *src, const unsigned dst_col, const unsigned src_col )
{
  unsigned i = 0;
  unsigned j = 0;
  unsigned k = 0;
  unsigned m = 0;
  double **dptr = NULL;
  stComplex **cptr = NULL;

  if( MTX_isNull( dst ) )
  {
    MTX_ERROR_MSG( "NULL Matrix" );
    return FALSE;
  }

  if( MTX_isNull( src ) )
  {
    MTX_ERROR_MSG( "NULL Matrix" );
    return FALSE;
  }

  if( dst->nrows != src->nrows )
  {
    MTX_ERROR_MSG( "if( dst->nrows != src->nrows )" );
    return FALSE;
  }

  // note the missing '=' here, a column can be inserted at the end (i.e. AddColumn )
  if( dst_col > dst->ncols )
  {
    MTX_ERROR_MSG( "if( dst_col > dst->ncols )" );
    return FALSE;
  }

  if( src_col >= src->ncols )
  {
    MTX_ERROR_MSG( "if( src_col >= src->ncols )" );
    return FALSE;
  }

  if( !src->isReal && dst->isReal )
  {
    // convert the destination matrix to complex
    if( !MTX_ConvertRealToComplex( dst ) )
    {
      MTX_ERROR_MSG( "MTX_ConvertRealToComplex returned FALSE." );
      return FALSE;
    }
  }

  // allocate a new array of column vectors
  if( dst->isReal )
  {
    dptr = (double**)malloc( (dst->ncols+1)*sizeof(double*) );
    if( !dptr )
    {
      MTX_ERROR_MSG( "malloc returned NULL." );
      return FALSE;
    }
  }
  else
  {
    cptr = (stComplex**)malloc( (dst->ncols+1)*sizeof(stComplex*) );
    if( !cptr )
    {
      MTX_ERROR_MSG( "malloc returned NULL." );
      return FALSE;
    }
  }

  // copy the previous array of pointers
  // and add the new column
  k = 0;
  for( j = 0; j <= dst->ncols; j++ )
  {
    if( j == dst_col )
    {
      // allocate a new column vector
      if( dst->isReal )
        dptr[k] = (double*)malloc( dst->nrows*sizeof(double) );
      else
        cptr[k] = (stComplex*)malloc( dst->nrows*sizeof(stComplex) );
      if( dst->isReal )
      {
        if( !dptr[k] )
        {
          // this is most likely to occur if allocating more memory than available
          for( m = 0; m < k; m++ )
          {
            free( dptr[m] );
          }

          MTX_ERROR_MSG( "malloc returned NULL." );
          free( dptr );
          return FALSE;
        }
      }
      else
      {
        if( !cptr[k] )
        {
          // this is most likely to occur if allocating more memory than available
          for( m = 0; m < k; m++ )
          {
            free( cptr[m] );
          }
          MTX_ERROR_MSG( "malloc returned NULL." );
          free( cptr );
          return FALSE;
        }
      }

      // copy the src column vector
      for( i = 0; i < dst->nrows; i++ )
      {
        if( dst->isReal )
        {
          dptr[k][i] = src->data[src_col][i];
        }
        else
        {
          if( src->isReal )
          {
            cptr[k][i].re = src->data[src_col][i];
            cptr[k][i].im = 0;
          }
          else
          {
            cptr[k][i] = src->cplx[src_col][i];
          }
        }
      }
      // copy the data that was at the insertion index
      // unless this is the after the last column
      if( j != dst->ncols )
      {
        k++;
        if( dst->isReal )
          dptr[k] = dst->data[j];
        else
          cptr[k] = dst->cplx[j];
      }
    }
    else
    {
      if( j != dst->ncols )
      {
        if( dst->isReal )
          dptr[k] = dst->data[j];
        else
          cptr[k] = dst->cplx[j];
      }
    }
    k++;
  }

  // free the old column array, and copy the new
  if( dst->isReal )
  {
    free( dst->data );
    dst->data = dptr;
  }
  else
  {
    free( dst->cplx );
    dst->cplx = cptr;
  }
  dst->ncols++;

  return TRUE;
}

BOOL MTX_AddColumn( MTX *dst, const MTX *src, const unsigned src_col )
{
  return MTX_InsertColumn( dst, src, dst->ncols, src_col );
}

BOOL MTX_Concatonate( MTX *dst, const MTX *src )
{
  unsigned i = 0;
  unsigned j = 0;
  unsigned ncols;
  unsigned m = 0;
  double **dptr = NULL;
  stComplex **cptr = NULL;

  if( dst == NULL )
  {
    MTX_ERROR_MSG( "dst is a NULL Matrix" );
    return FALSE;
  }

  if( MTX_isNull( src ) )
  {
    MTX_ERROR_MSG( "NULL Matrix" );
    return FALSE;
  }

  if( dst->nrows == 0 && dst->ncols == 0 )
  {
    return MTX_Copy( src, dst );
  }
  else if( dst->nrows != src->nrows )
  {
    MTX_ERROR_MSG( "if( dst->nrows != src->nrows )" );
    return FALSE;
  }

  ncols = dst->ncols+src->ncols;

  if( dst->isReal && !src->isReal )
  {
    // Convert dst to complex
    if( !MTX_ConvertRealToComplex( dst ) )
    {
      MTX_ERROR_MSG( "MTX_ConvertRealToComplex returned FALSE." );
      return FALSE;
    }
  }

  // allocate a new array of column vectors
  if( dst->isReal )
  {
    dptr = (double**)malloc( ncols*sizeof(double*) );
    if( !dptr )
    {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
92精品国产成人观看免费| 中文成人av在线| 久久精品人人做人人爽人人| 亚洲欧美电影一区二区| 日本免费新一区视频| 成人免费毛片app| 91精品在线观看入口| 亚洲黄色小说网站| 国模冰冰炮一区二区| 69堂国产成人免费视频| 亚洲日韩欧美一区二区在线| 国产毛片精品视频| 日韩视频123| 日韩电影免费在线| 欧美日韩一区二区三区免费看| 欧美韩日一区二区三区四区| 国产在线视频一区二区三区| 7777精品伊人久久久大香线蕉| 亚洲一区在线观看免费观看电影高清 | 欧美激情一区二区三区蜜桃视频| 日韩高清不卡一区二区| 欧美视频一区在线| 一区二区国产盗摄色噜噜| 国产精品一二三| 精品日产卡一卡二卡麻豆| 麻豆视频观看网址久久| 色狠狠桃花综合| 成人欧美一区二区三区白人| 国产成人av电影在线| 久久久久久97三级| 国产精品一级片在线观看| 日韩免费在线观看| 精品在线免费视频| 精品国产乱码久久久久久久久| 免费xxxx性欧美18vr| 日韩视频一区二区三区在线播放| 青青国产91久久久久久| 欧美成人aa大片| 国产制服丝袜一区| 国产婷婷色一区二区三区在线| 黄色精品一二区| 久久久99精品免费观看| 成人免费高清视频| 国产精品国产三级国产| 色妹子一区二区| 亚洲综合色丁香婷婷六月图片| 欧美日韩免费不卡视频一区二区三区| 午夜精品久久久久久久久久| 3atv一区二区三区| 精品一区二区免费在线观看| 久久久影视传媒| 99re视频精品| 天天色天天操综合| 久久一区二区视频| 91麻豆免费看片| 婷婷综合在线观看| 2020国产成人综合网| 成人做爰69片免费看网站| 一区二区三区四区精品在线视频| 欧美男同性恋视频网站| 国产一区二区三区免费看| 国产精品网站在线| 欧美日韩国产成人在线91| 成人美女视频在线观看| 亚洲国产一区二区在线播放| 欧美一级电影网站| 成人高清免费观看| 午夜视频一区在线观看| 久久亚洲一级片| 日本高清成人免费播放| 狠狠色丁香久久婷婷综合丁香| 欧美激情一区二区在线| 9191久久久久久久久久久| 国产成人在线网站| 亚洲自拍偷拍网站| 国产日韩欧美精品一区| 91精品国产丝袜白色高跟鞋| 成人的网站免费观看| 午夜欧美视频在线观看| 中文字幕av资源一区| 这里只有精品视频在线观看| eeuss鲁一区二区三区| 美女视频免费一区| 亚洲一区二区三区四区五区黄| 久久一日本道色综合| 欧美高清www午色夜在线视频| 不卡一二三区首页| 国内成人免费视频| 奇米色一区二区| 亚洲精品欧美在线| 国产精品久线观看视频| 欧美电影免费观看高清完整版在线观看 | 91亚洲国产成人精品一区二区三 | 亚洲午夜精品网| 久久亚洲影视婷婷| 欧美一区二区三区四区高清| 欧美午夜精品一区| 91丝袜美女网| 成人免费不卡视频| 国产精品系列在线观看| 精品在线视频一区| 麻豆成人久久精品二区三区小说| 亚洲在线成人精品| 亚洲综合在线免费观看| 国产精品白丝在线| 国产精品你懂的| 国产精品三级在线观看| 国产午夜三级一区二区三| 久久精品视频在线看| 欧美r级电影在线观看| 日韩视频在线你懂得| 欧美精品久久99| 欧美日韩精品免费观看视频| 欧美影院一区二区三区| 日本道色综合久久| 欧美亚洲图片小说| 久久精品欧美一区二区三区不卡 | 欧美三区免费完整视频在线观看| 99久久久无码国产精品| 91麻豆6部合集magnet| 欧美视频在线不卡| 91精品国产福利在线观看| 欧美一级日韩免费不卡| 精品免费一区二区三区| 久久久精品一品道一区| 国产精品三级av在线播放| |精品福利一区二区三区| 一区二区三区日韩欧美精品| 一区二区三区四区高清精品免费观看| 亚洲一卡二卡三卡四卡| 亚洲第一在线综合网站| 美女视频免费一区| 成人综合在线观看| 99久久99久久久精品齐齐| 在线观看欧美精品| 日韩欧美久久久| 中文无字幕一区二区三区| 一区二区三区免费在线观看| 亚洲成av人**亚洲成av**| 裸体健美xxxx欧美裸体表演| 国产一区二区三区免费观看| 99久久99久久精品免费观看 | 蜜桃在线一区二区三区| 国产精品18久久久久久久网站| www.亚洲人| 欧美三级蜜桃2在线观看| 欧美一卡2卡三卡4卡5免费| 中文字幕不卡的av| 日韩综合一区二区| 丁香啪啪综合成人亚洲小说| 在线观看成人免费视频| 精品噜噜噜噜久久久久久久久试看 | 欧美一区二区三区在线观看| 久久久久免费观看| 一个色妞综合视频在线观看| 久久精品国产精品青草| 色妞www精品视频| 日韩欧美成人午夜| 亚洲精品国产无天堂网2021 | 亚洲精品一区二区三区福利 | 欧美在线观看视频一区二区三区| 欧美不卡一区二区三区| 亚洲日本丝袜连裤袜办公室| 久久成人免费网| 色综合久久综合中文综合网| 久久综合狠狠综合久久综合88| 亚洲视频每日更新| 国模少妇一区二区三区| 91麻豆精品国产自产在线观看一区| 久久久久综合网| 日韩高清一级片| 91福利在线观看| 国产精品免费aⅴ片在线观看| 日韩精品电影在线| 色噜噜狠狠色综合中国| 国产欧美精品日韩区二区麻豆天美| 天使萌一区二区三区免费观看| 97国产精品videossex| 久久综合久久鬼色中文字| 亚洲一区精品在线| 色哟哟国产精品免费观看| 国产精品丝袜在线| 国产精品一区二区你懂的| 精品日韩99亚洲| 老汉av免费一区二区三区| 欧美日韩高清一区| 尤物av一区二区| 91浏览器在线视频| 日韩美女视频一区| 99国产精品国产精品久久| 国产精品你懂的在线| 福利一区福利二区| 日本一区二区综合亚洲| 国内精品久久久久影院一蜜桃| 日韩精品资源二区在线| 久久99精品久久久| 久久亚区不卡日本| 国产精品69毛片高清亚洲| 欧美国产综合色视频| 成人在线视频一区二区|