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

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

?? cmatrix.c

?? 攝影測量專業(yè)。實現(xiàn)單像后方交會以及立體像對的前方交會。以文件形式讀取控制點和像點坐標。
?? C
?? 第 1 頁 / 共 5 頁
字號:
    MTX_ERROR_MSG( "NULL Matrix" );
    return FALSE;
  }
  if( !dst )
  {
    MTX_ERROR_MSG( "dst is a NULL pointer." );
    return FALSE;
  }
  if( row >= src->nrows )
  {
    MTX_ERROR_MSG( "if( row >= src->nrows )" );
    return FALSE;
  }

  if( dst->nrows != src->ncols || dst->ncols != 1 )
  {
    if( !MTX_Resize( dst, src->ncols, 1, src->isReal ) )
    {
      MTX_ERROR_MSG( "MTX_Resize returned FALSE." );
      return FALSE;
    }
  }

  for( i = 0; i < dst->nrows; i++ )
  {
    if( src->isReal )
      dst->data[0][i] = src->data[i][row];
    else
      dst->cplx[0][i] = src->cplx[i][row];
  }

  return TRUE;
}

BOOL MTX_InsertSubMatrix( MTX *dst, const MTX *src, const unsigned dst_row, const unsigned dst_col )
{
  unsigned i = 0;
  unsigned j = 0;

  if( !dst )
  {
    MTX_ERROR_MSG( "dst is a NULL pointer." );
    return FALSE;
  }

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

  // check that the submatrix doesn't exceed the bounds of the matrix
  if( dst_row + src->nrows > dst->nrows )
  {
    MTX_ERROR_MSG( "if( dst_row + src->nrows > dst->nrows )" );
    return FALSE;
  }
  if( dst_col + src->ncols > dst->ncols )
  {
    MTX_ERROR_MSG( "if( dst_col + src->ncols > dst->ncols )" );
    return FALSE;
  }

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

  // insert the submatrix
  if( dst->isReal )
  {
    for( j = 0; j < src->ncols; j++ )
    {
      memcpy( &(dst->data[dst_col+j][dst_row]), src->data[j], sizeof(double)*src->nrows );
    }
  }
  else
  {
    if( src->isReal )
    {
      for( j = 0; j < src->ncols; j++ )
      {
        for( i = 0; i < src->nrows; i++ )
        {
          dst->cplx[dst_col+j][dst_row+i].re = src->data[j][i];
          dst->cplx[dst_col+j][dst_row+i].im = 0.0;
        }
      }
    }
    else
    {
      for( j = 0; j < src->ncols; j++ )
      {
        memcpy( &(dst->cplx[dst_col+j][dst_row]), src->cplx[j], sizeof(stComplex)*src->nrows );
      }
    }
  }
  return TRUE;
}

BOOL MTX_ExtractSubMatrix( 
  const MTX* src,          //!< The source matrix.                        
  MTX* dst,                //!< The destination matrix to contain the submatrix.
  const unsigned from_row, //!< The zero-based index for the from row.
  const unsigned from_col, //!< The zero-based index for the from column.
  const unsigned to_row,   //!< The zero-based index for the to row.
  const unsigned to_col    //!< The zero-based index for the to column.
  )
{
  unsigned i;
  unsigned j;
  unsigned k;
  unsigned m;

  if( src == NULL )
  {
    MTX_ERROR_MSG( "NULL source matrix" );
    return FALSE;
  }
  if( dst == NULL )
  {
    MTX_ERROR_MSG( "NULL destination matrix" );
    return FALSE;
  }
  if( MTX_isNull( src ) )
  {
    MTX_ERROR_MSG( "NULL source matrix" );
    return FALSE;
  }

  if( to_row - from_row < 0 )
  {
    MTX_ERROR_MSG( "The destination matrix has invalid dimension. to_row - from_row < 0" );
    return FALSE;
  }
  if( to_col - from_col < 0 )
  {
    MTX_ERROR_MSG( "The destination matrix has invalid dimension. to_col - from_col < 0" );
    return FALSE;
  }

  if( from_row >= src->nrows )
  {
    MTX_ERROR_MSG( "from_row > number of source rows" );
    return FALSE;
  }
  if( from_col >= src->ncols )
  {
    MTX_ERROR_MSG( "from_col > number of source columns" );
    return FALSE;
  }
  if( to_row >= src->nrows )
  {
    MTX_ERROR_MSG( "to_row > number of source rows" );
    return FALSE;
  }
  if( to_col >= src->ncols )
  {
    MTX_ERROR_MSG( "to_col > number of source columns" );
    return FALSE;
  }

  if( !MTX_Malloc( dst, to_row-from_row+1, to_col-from_col+1, src->isReal ) )
  {
    MTX_ERROR_MSG( "MTX_Malloc returned FALSE." );
    return FALSE;
  }

  m = 0;
  for( j = from_col; j <= to_col; j++ )
  {
    k = 0;
    for( i = from_row; i <= to_row; i++ )
    {
      if( src->isReal )
      {
        dst->data[m][k] = src->data[j][i];
      }
      else
      {
        dst->cplx[m][k].re = src->cplx[j][i].re;
        dst->cplx[m][k].im = src->cplx[j][i].im;
      }
      k++;
    }
    m++;
  }

  return TRUE;
}

BOOL MTX_Zero( MTX *dst )
{
  unsigned i = 0;
  unsigned j = 0;

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

  for( j = 0; j < dst->ncols; j++ )
  {
    if( dst->isReal )
    {
      memset( dst->data[j], 0, sizeof(double)*dst->nrows );
    }
    else
    {
      memset( dst->cplx[j], 0, sizeof(stComplex)*dst->nrows );
    }
  }
  return TRUE;
}

BOOL MTX_ZeroColumn( MTX *dst, const unsigned col )
{
  unsigned i = 0;

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

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

  if( dst->isReal )
  {
    memset( dst->data[col], 0, sizeof(double)*dst->nrows );
  }
  else
  {
    memset( dst->cplx[col], 0, sizeof(stComplex)*dst->nrows );
  }

  return TRUE;
}

BOOL MTX_ZeroRow( MTX *dst, const unsigned row )
{
  return MTX_FillRow( dst, row, 0.0 );
}

BOOL MTX_Fill( MTX *dst, const double value )
{
  unsigned i = 0;
  unsigned j = 0;

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

  // use memcpy after the first column is set for efficiency and speed.
  if( dst->isReal )
  {
    j = 0;
    for( i = 0; i < dst->nrows; i++ )
    {
      dst->data[j][i] = value;          
    }
    for( j = 1; j < dst->ncols; j++ )
    {
      memcpy( dst->data[j], dst->data[j-1], sizeof(double)*dst->nrows );
    }
  }
  else
  {
    j = 0;
    for( i = 0; i < dst->nrows; i++ )
    {
      dst->cplx[j][i].re = value;
      dst->cplx[j][i].im = 0.0;
    }
    for( j = 1; j < dst->ncols; j++ )
    {
      memcpy( dst->cplx[j], dst->cplx[j-1], sizeof(stComplex)*dst->nrows );
    }
  }

  return TRUE;
}

BOOL MTX_FillComplex( MTX *dst, const double re, const double im )
{
  unsigned i = 0;
  unsigned j = 0;

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

  if( dst->isReal )
  {
    if( !MTX_ConvertRealToComplex( dst ) )
    {
      MTX_ERROR_MSG( "MTX_ConvertRealToComplex returned FALSE." );
      return FALSE;
    }
  }

  for( j = 0; j < dst->ncols; j++ )
  {
    if( j == 0 )
    {
      for( i = 0; i < dst->nrows; i++ )
      {
        dst->cplx[j][i].re = re;
        dst->cplx[j][i].im = im;
      }
    }
    else
    {
      memcpy( dst->cplx[j], dst->cplx[j-1], sizeof(stComplex)*dst->nrows );
    }
  }
  return TRUE;
}

BOOL MTX_FillColumn( MTX *dst, const unsigned col, const double value )
{
  unsigned i = 0;
  unsigned j = 0;

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

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

  if( dst->isReal )
  {
    for( i = 0; i < dst->nrows; i++ )
    {
      dst->data[col][i] = value;
    }
  }
  else
  {
    for( i = 0; i < dst->nrows; i++ )
    {
      dst->cplx[col][i].re = value;
      dst->cplx[col][i].im = 0;
    }
  }

  return TRUE;
}

BOOL MTX_FillColumnComplex( MTX *dst, const unsigned col, const double re, const double im )
{
  unsigned i = 0;
  unsigned j = 0;

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

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

  if( dst->isReal )
  {
    if( !MTX_ConvertRealToComplex( dst ) )
    {
      MTX_ERROR_MSG( "MTX_ConvertRealToComplex returned FALSE." );
      return FALSE;
    }
  }

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

  return TRUE;
}

BOOL MTX_FillRow( MTX *dst, const unsigned row, const double value )
{
  unsigned j = 0;

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

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

  for( j = 0; j < dst->ncols; j++ )
  {
    if( dst->isReal )
    {
      dst->data[j][row] = value;
    }
    else
    {
      dst->cplx[j][row].re = value;
      dst->cplx[j][row].im = value;
    }
  }

  return TRUE;
}

BOOL MTX_FillRowComplex( MTX *dst, const unsigned row, const double re, const double im )
{
  unsigned j = 0;

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

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

  if( dst->isReal )
  {
    if( !MTX_ConvertRealToComplex( dst ) )
    {
      MTX_ERROR_MSG( "MTX_ConvertRealToComplex returned FALSE." );
      return FALSE;
    }
  }

  for( j = 0; j < dst->ncols; j++ )
  {
    dst->cplx[j][row].re = re;
    dst->cplx[j][row].im = im;
  }

  return TRUE;
}


// set the matrix to an identity
BOOL MTX_Identity( MTX *dst )
{
  unsigned j = 0;

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

  if( !MTX_isSquare( dst ) )
  {
    MTX_ERROR_MSG( "MTX_isSquare returned FALSE." );
    return FALSE;
  }

  if( !dst->isReal )
  {
    if( !MTX_Calloc( dst, dst->nrows, dst->ncols, TRUE ) )
    {
      MTX_ERROR_MSG( "MTX_Calloc returned FALSE." );
      return FALSE;
    }
  }
  else
  {
    if( !MTX_Zero( dst ) )
    {
      MTX_ERROR_MSG( "MTX_Zero returned FALSE." );
      return FALSE;
    }
  }

  for( j = 0; j < dst->ncols; j++ )
  {
    dst->data[j][j] = 1.0;
  }
  return TRUE;
}


// Transpose the matrix src into the matrix dst.
BOOL MTX_Transpose( const MTX *src, MTX *dst )
{
  unsigned i = 0;
  unsigned j = 0;

  if( !dst )
  {
    MTX_ERROR_MSG( "dst is a NULL pointer." );
    return FALSE;
  }

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

  // special case inplace transpose
  if( dst == src )
  {
    return MTX_TransposeInplace( dst );
  }

  // complex/real mixed cases
  if( !src->isReal && dst->isReal )
  {
    MTX_Free( dst );

    if( !MTX_Malloc( dst, src->ncols, src->nrows, src->isReal ) )
    {
      MTX_ERROR_MSG( "MTX_Malloc returned FALSE." );
      return FALSE;
    }
  }
  else if( src->isReal && !dst->isReal )
  {
    MTX_Free( dst );

    if( !MTX_Malloc( dst, src->ncols, src->nrows, src->isReal ) )
    {
      MTX_ERROR_MSG( "MTX_Malloc returned FALSE." );
      return FALSE;
    }
  }


  // resize if needed
  if( dst->nrows != src->ncols || dst->ncols != src->nrows )
  {
    if( !MTX_Resize( dst, src->ncols, src->nrows, src->isReal ) )
    {
      MTX_ERROR_MSG( "MTX_Resize returned FALSE." );
      return FALSE;
    }
  }

  if( dst->isReal )
  {
    for( j = 0; j < src->ncols; j++ )
    {
      for( i = 0; i < src->nrows; i++ )
      {
        dst->data[i][j] = src->data[j][i];        
      }
  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91丝袜在线播放0| 欧美亚洲综合网| 久久精品亚洲国产奇米99| 日韩电影一区二区三区| 欧美日韩国产一级| 亚洲国产精品v| 中文字幕第一区第二区| 日韩女优av电影| 亚洲另类在线一区| 日本精品视频一区二区| 亚洲国产成人av好男人在线观看| 欧美综合欧美视频| 亚洲超丰满肉感bbw| 欧美一级免费大片| 国产精品一级在线| 国产精品免费av| 欧美专区日韩专区| 久久精品国产亚洲高清剧情介绍| 久久夜色精品国产欧美乱极品| 国产精一品亚洲二区在线视频| 国产日韩精品一区二区浪潮av| 91天堂素人约啪| 爽好多水快深点欧美视频| 精品国产伦理网| 99国产精品久久久| 日韩不卡一区二区| 国产精品亲子伦对白| 欧美视频在线不卡| 色噜噜狠狠成人中文综合| 亚洲成av人影院| 97成人超碰视| 日韩和欧美一区二区三区| 亚洲精品一区二区三区蜜桃下载 | 一区二区三区久久| 精品国产乱码久久久久久久久| 成人一区二区三区| 亚洲va天堂va国产va久| 国产日产欧美一区二区视频| 在线观看亚洲一区| 国产精一品亚洲二区在线视频| 一区二区三区日韩欧美| 日韩精品在线一区二区| 日本乱码高清不卡字幕| 国内成人自拍视频| 亚洲小说春色综合另类电影| 国产丝袜在线精品| 欧美一区二区三区在线观看视频| 色综合久久久网| 日韩视频一区二区三区在线播放| 精品国产在天天线2019| 91年精品国产| 国产永久精品大片wwwapp| 亚洲成av人片在线观看| 国产精品久久久久久户外露出| 91精品一区二区三区在线观看| 国产成人av电影在线观看| 视频一区在线播放| 国产精品丝袜在线| 精品久久国产字幕高潮| 欧美日韩激情一区二区三区| 91亚洲精品一区二区乱码| 精品中文字幕一区二区小辣椒| 亚洲最大色网站| 一区在线观看免费| 国产午夜精品久久| 国产午夜亚洲精品理论片色戒| 6080yy午夜一二三区久久| 91极品视觉盛宴| 91浏览器打开| 99久久99久久精品免费观看| 国产精品影视天天线| 久久久久久久综合色一本| 在线精品视频免费播放| 精品一区二区久久| 日本一区二区视频在线| 在线看日本不卡| av网站免费线看精品| 粉嫩久久99精品久久久久久夜| 九九在线精品视频| 黄一区二区三区| 狠狠狠色丁香婷婷综合久久五月| 奇米精品一区二区三区在线观看 | 日韩在线卡一卡二| 亚洲18色成人| 污片在线观看一区二区| 亚洲成人中文在线| 视频一区二区三区中文字幕| 视频一区二区三区中文字幕| 调教+趴+乳夹+国产+精品| 亚洲第一成人在线| 日日夜夜精品免费视频| 久久精品国产亚洲aⅴ| 狠狠久久亚洲欧美| 成人精品国产福利| 国产日韩av一区| 欧美日韩国产综合视频在线观看| 成人性生交大片免费看中文 | 欧美日韩国产电影| 7777女厕盗摄久久久| 日韩精品最新网址| 亚洲精品成人精品456| 一区二区三区国产精华| 亚洲在线中文字幕| 麻豆国产精品777777在线| 国产精品资源站在线| 91亚洲国产成人精品一区二三| 91成人免费电影| 日韩精品一区二区三区老鸭窝 | 精品久久久久久综合日本欧美| 久久久国产精华| 亚洲免费资源在线播放| 五月天欧美精品| 高清成人免费视频| 在线亚洲+欧美+日本专区| 日韩一区二区影院| 国产精品久久三| 舔着乳尖日韩一区| 国产91精品免费| 欧美欧美欧美欧美| 中文字幕欧美国产| 亚洲成av人片在线| 成人黄色一级视频| 制服丝袜国产精品| 亚洲欧美综合色| 日产欧产美韩系列久久99| 国产99久久久国产精品免费看| 欧美日韩一级二级三级| 国产女同互慰高潮91漫画| 亚洲午夜在线观看视频在线| 国产原创一区二区三区| 在线观看免费亚洲| 国产日韩欧美激情| 另类的小说在线视频另类成人小视频在线 | 99re这里只有精品首页| 欧美一区二区视频网站| 中文字幕一区二区5566日韩| 美女久久久精品| 欧美日韩一区国产| 国产精品传媒入口麻豆| 精品一区二区三区在线播放| 91成人看片片| 国产精品美女久久久久久2018| 青青草成人在线观看| 日本道在线观看一区二区| 国产农村妇女毛片精品久久麻豆| 婷婷国产在线综合| 欧美一区永久视频免费观看| 亚洲婷婷在线视频| 国产精品一二三四区| 欧美videos大乳护士334| 亚洲综合色噜噜狠狠| jlzzjlzz亚洲女人18| 久久久久久久性| 麻豆传媒一区二区三区| 8v天堂国产在线一区二区| 亚洲欧美色综合| av电影在线观看完整版一区二区| 精品国产在天天线2019| 美女视频黄 久久| 91精品在线一区二区| 午夜久久久久久电影| 欧美日韩在线免费视频| 一区二区三区四区高清精品免费观看 | 夜夜嗨av一区二区三区中文字幕 | 99久久免费国产| 国产精品欧美极品| 粗大黑人巨茎大战欧美成人| 日韩欧美你懂的| 麻豆精品新av中文字幕| 日韩欧美三级在线| 精品一区二区三区香蕉蜜桃| 欧美v国产在线一区二区三区| 麻豆精品国产91久久久久久| 欧美一区二区高清| 久久精品国产久精国产| 欧美变态tickle挠乳网站| 久久精品国产免费| 久久综合色播五月| 国产精品一区专区| 欧美国产一区视频在线观看| 国产91对白在线观看九色| 国产精品电影院| 欧洲亚洲国产日韩| 视频一区二区三区中文字幕| 欧美一区二区三区的| 黑人巨大精品欧美一区| 国产视频视频一区| av在线一区二区三区| 亚洲精品中文在线观看| 精品视频在线视频| 日韩二区三区在线观看| 337p日本欧洲亚洲大胆精品| 国产成人在线影院 | 一区二区三区在线看| 欧美精品在线视频| 狠狠久久亚洲欧美| 亚洲美女偷拍久久| 91精品国产入口| 成人免费看的视频| 偷偷要91色婷婷|