⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matrix.html

📁 刚刚看到本站有Visual C++数字图象处理(人民邮电出版社)的电子书
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<html>

<head>
<title>计算机图形学-光栅图形学</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<script type="text/javascript" src="mtmtrack.js">
</script>
</head>

<body background="../snow.GIF">
<div align="center">

<table border="0" cellpadding="0" cellspacing="0" height="48" width="739">
  <tr align="left">
    <td bgcolor="#009eea" height="30" width="457">
    <p style="line-height: 150%"><small><font color="#000000">您现在的位置&gt;&gt;</font><font
    color="#FFFFFF">网上教程</font><font color="#000080">&gt;&gt;</font></small><font face="宋体" color="#000080" size="2">计算机图形学&gt;&gt;附录D 
    矩阵运算类</font></td>        
    <td height="30" width="282">        
    <p style="line-height: 150%"></td>        
  </tr>        
  <tr align="center">        
    <td colspan="2" height="1" width="739">        
    <p style="line-height: 150%"><br>        
    </p>        
        <table border="1" bordercolor="#009eea" cellpadding="0" cellspacing="0" width="652">        
          <tbody>         
          <tr>        
            <td width="648">         
              <table border="0" cellpadding="0" cellspacing="0" height="962"        
        width="101%" style="border-top-width: 0; border-bottom-width: 0">        
<tbody>        
          <tr>        
            <td bgcolor="#009eea" colspan="3" height="25" width="100%">        
                    <p align="center" style="line-height: 150%">        
                    <font color="#FFFFFF">矩阵运算及其在C++中的实现</font>       
                  </td>       
          </tr>       
          <tr>       
            <td height="937" width="4%" style="border-right-style: none; border-right-width: medium">       
            <p style="line-height: 150%"></td>       
            <td height="937" width="91%" valign="top" style="border-style: none; border-width: medium">       
            <p style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; LINE-HEIGHT: 150%">       
            <font face="宋体" size="3">&nbsp;&nbsp;&nbsp;</font></p>      
            <p style="LINE-HEIGHT: 150%">      
            <b><font face="宋体" size="5"><a name="001"></a>D.1 矩阵类定义</font></b></p>     
            <p style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; LINE-HEIGHT: 150%">      
            <font face="宋体" size="3">&nbsp;&nbsp;&nbsp; 
            在计算机图形学中,很多运算都可以用矩阵运算(特别是矩阵乘)来描述,在程序设计过程中也不可避免的要使用到矩阵。一个比较自然的思路是用二维数组表示矩阵,但这样一来,矩阵的加,乘,拷贝等一系列运算都不方便实现。考虑面向对象程序设计技术,在C++语言中可以设计一个矩阵类,以完成矩阵的加,乘,拷贝等一系列运算是一个比较好的办法。</font></p>     
            <p style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; LINE-HEIGHT: 150%">      
            <font face="宋体" size="3">&nbsp;&nbsp;&nbsp; 可以如下来定义一个矩阵类:</font></p>     
            <blockquote>
            <p style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; ">      
            <font face="宋体"><font color="#008000">// CMatrix.h: interface for 
            the CMatrix class.<br>
            //<br>
            //////////////////////////////////////////////////////////////////////</font><br>
            <br>
            <font color="#0000FF">#if</font></font></p>     
            <p style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; ">      
            <font face="宋体">!<font color="#0000FF">defined</font>(AFX_CMATRIX_H__CC2F3E15_9F82_11D4_A203_0000E81BB9DD__INCLUDED_)<br>
            <font color="#0000FF">#define</font> 
            AFX_CMATRIX_H__CC2F3E15_9F82_11D4_A203_0000E81BB9DD__INCLUDED_<br>
            <br>
            <font color="#0000FF">#if</font> _MSC_VER &gt; 1000<br>
            <font color="#0000FF">#pragma once</font><br>
            <font color="#0000FF">#endif</font> // _MSC_VER &gt; 1000<br>
            <br>
            <font color="#008000">//用TYPE来定义double数据类型</font><br>
            <font color="#0000FF">#define</font> TYPE <font color="#0000FF">
            double</font><br>
            <br>
            <font color="#0000FF">class</font> CMatrix <br>
            {</font></p>     
            <p style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; ">      
            <font face="宋体"><font color="#0000FF">public</font>:</font></p>     
              <blockquote>
            <p style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; ">      
            <font face="宋体"><font color="#008000">//构造函数<br>
            //无参构造函数</font><br>
            CMatrix();<br>
            <font color="#008000">//利用参数RowNumber和ColumnNumber构造矩阵</font><br>
            CMatrix(<font color="#0000FF">int</font> RowNumber,
            <font color="#0000FF">int</font> ColumnNumber);<br>
            <font color="#008000">//拷贝构造函数,利用传入的矩阵Matrix拷贝构造另一个矩阵</font><br>
            CMatrix(CMatrix&amp; Matrix);<br>
            <br>
            <font color="#008000">//析构函数</font><br>
            <font color="#0000FF">virtual</font> ~CMatrix();<br>
            <br>
            <font color="#008000">//用指定的RowNumber和ColumnNumber创建矩阵</font><br>
            Create(<font color="#0000FF">int</font> RowNumber,
            <font color="#0000FF">int</font> ColumnNumber);<br>
            <br>
            <font color="#008000">//获得矩阵的行数</font><br>
            <font color="#0000FF">int</font> GetRowNumber();<br>
            <font color="#008000">//获得矩阵的列数</font><br>
            <font color="#0000FF">int</font> GetColumnNumber();<br>
            <br>
            <font color="#008000">//操作符重载<br>
            // * 操作符</font><br>
            CMatrix <font color="#0000FF">operator</font> *(CMatrix &amp;Num2);<br>
            <font color="#008000">// [] 操作符</font><br>
            TYPE* CMatrix::<font color="#0000FF">operator</font>[](int Row);<br>
            <font color="#008000">// *= 操作符</font><br>
            <font color="#0000FF">void</font> CMatrix::<font color="#0000FF">operator</font> 
            *=(TYPE Number);<br>
            <font color="#008000">// += 操作符</font><br>
            <font color="#0000FF">void</font> CMatrix::<font color="#0000FF">operator</font> 
            +=(CMatrix&amp; Other);<br>
            <font color="#008000">// = 操作符</font><br>
            <font color="#0000FF">void</font> CMatrix::<font color="#0000FF">operator</font> 
            =(CMatrix&amp; Other);<br>
            <font color="#008000">// + 操作符</font><br>
            CMatrix CMatrix::<font color="#0000FF">operator</font> +(CMatrix 
            &amp;Other);<br>
            <br>
            <font color="#008000">//用于调试的转储函数</font><br>
            <font color="#0000FF">void</font> Dump();<br>
            <font color="#0000FF">void</font> Fill(TYPE FillNumber);<br>
            <font color="#008000">//生成单位阵</font><br>
            <font color="#0000FF">void</font> MakeUnit();</font></p>     
              </blockquote>
            <p style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; ">      
            <font face="宋体"><br>
            <font color="#0000FF">private</font>:</font></p>     
              <blockquote>
            <p style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; ">      
            <font face="宋体"><font color="#008000">//矩阵列数</font><br>
            <font color="#0000FF">int</font> ColumnNumber;<br>
            <font color="#008000">//矩阵行数</font><br>
            <font color="#0000FF">int</font> RowNumber;<br>
            <font color="#008000">//矩阵元素</font><br>
            TYPE *data;</font></p>     
              </blockquote>
            <p style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; ">      
            <font face="宋体">};<br>
            <br>
            <font color="#0000FF">#endif</font> // !<font color="#0000FF">defined</font>(AFX_CMATRIX_H__CC2F3E15_9F82_11D4_A203_0000E81BB9DD__INCLUDED_)</font></p>     
            </blockquote>
            <p style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; LINE-HEIGHT: 150%">      
            <font face="宋体" size="3">
            由上述类结构可见,这个类实际上主要是重载了很多的运算符,这样一来,在程序中可以类似于这样去写:</font></p>     
            <p style="line-height: 150%; margin-top: 0px; margin-bottom: 0px">
            <font face="宋体" size="3">&nbsp;&nbsp;&nbsp; Matrix3 = Matrix1 * Matrix2;</font></p>
            <p style="line-height: 150%; margin-top: 0px; margin-bottom: 0px">
            <font face="宋体" size="3">以实现两个矩阵的相乘。这样的写法无疑是非常清晰明了的,而且利于代码重用。</font></p>
            <p style="line-height: 150%; margin-top: 0px; margin-bottom: 0px">
            <font face="宋体" size="3">&nbsp;&nbsp;&nbsp; 在矩阵设计的过程中规定了每个元素必须是double(</font><font face="宋体"><font color="#0000FF">#define</font> 
            TYPE <font color="#0000FF">double</font></font><font face="宋体" size="3">)型,其实这里更好的写法是使用类模板。这个类是很多图形学算法的基础,希望大家能够将其进一步扩展以实现矩阵运算的更多功能。</font></p>
            <p style="MARGIN-TOP: 10px; MARGIN-BOTTOM: 10px; LINE-HEIGHT: 150%">      
            <b><font face="宋体" size="5"><a name="002"></a>D.2 矩阵类关键技术的实现</font></b></p>     
            <p style="line-height: 150%; margin-top: 0px; margin-bottom: 0px">&nbsp;&nbsp;&nbsp; 
            在CMatrix类中主要是类的创建和操作符的重载。</p>
            <p style="line-height: 150%; margin-top: 0px; margin-bottom: 0px">
            <b><font face="宋体" size="3">D.2.1 构造函数</font></b></p>
            <blockquote>
              <p style="margin-top: 0px; margin-bottom: 0px">
              <font color="#008000">
              ////////////////////////////////////////////////////////////////////////<br>
              //构造函数CMatrix()<br>
              //----------------------------------------------------------------------<br>
              //基本功能:用传入的参数构造矩阵类对象。这里动态生成一个二维数组,用于存<br>
              //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              储矩阵数据,数组类形已定义为double型。<br>
              //----------------------------------------------------------------------<br>
              //参数说明:int RowNumber&nbsp;&nbsp;&nbsp; 矩阵的行数<br>
              //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int 
              ColumnNumber 矩阵的列数<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -