<head> <LINK rel="stylesheet" type="text/css" name="style1" href="../styles.css"> </head> <script language=javascript> <!-- Hide from non-javascript browsers browserName=navigator.appName; if (browserName.indexOf('Netscape')>=0) { parent.filenameFrame.document.layers[0].document.clear(); parent.filenameFrame.document.layers[0].document.open(); parent.filenameFrame.document.layers[0].document.write( '<A HREF="~default~/classList.html" TARGET="packageFrame">~default~</A>: Matrix');parent.filenameFrame.document.layers[0].document.close(); } if (browserName.indexOf('Microsoft')>=0) { parent.frames.filenameFrame.textDiv.innerHTML='<A HREF="~default~/classList.html" TARGET="packageFrame">~default~</A>: Matrix';} //--> </script><pre> <a name=1 class="linenum">1    </a><span class="comment">/* <a name=2 class="linenum">2    </a>Copyright 2000 by Ralph Hartley <a name=3 class="linenum">3    </a>This software is licenced under the terms of the <a name=4 class="linenum">4    </a>Gnu Public Licence <a name=5 class="linenum">5    </a>*/</span> <a name=6 class="linenum">6    </a>public class <a class="classDef" name=Matrix href=Matrix_java_ref.html#Matrix>Matrix</a> { <a name=7 class="linenum">7    </a>        public double[][] <a class="varDef" name=element href=Matrix_java_ref.html#element>element</a>; <a name=8 class="linenum">8    </a> <a name=9 class="linenum">9    </a>        public <a class="methodDef" name=Matrix() href=Matrix_java_ref.html#Matrix()>Matrix</a>() { <a name=10 class="linenum">10   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a> = new double[3][4]; <a name=11 class="linenum">11   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[0][0] = 1.0; <a name=12 class="linenum">12   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[1][1] = 1.0; <a name=13 class="linenum">13   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[2][2] = 1.0; <a name=14 class="linenum">14   </a>        } <a name=15 class="linenum">15   </a>        public <a class="methodDef" name=Matrix(double) href=Matrix_java_ref.html#Matrix(double)>Matrix</a>(double scale) { <a name=16 class="linenum">16   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a> = new double[3][4]; <a name=17 class="linenum">17   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[0][0] = scale; <a name=18 class="linenum">18   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[1][1] = scale; <a name=19 class="linenum">19   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[2][2] = scale; <a name=20 class="linenum">20   </a>        } <a name=21 class="linenum">21   </a>public <a class="methodDef" name=Matrix(Matrix) href=Matrix_java_ref.html#Matrix(Matrix)>Matrix</a>(<a class="classRef" href=Matrix_java.html#Matrix>Matrix</a> A) { <a name=22 class="linenum">22   </a>        	int i; <a name=23 class="linenum">23   </a>        	int j; <a name=24 class="linenum">24   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a> = new double[3][4]; <a name=25 class="linenum">25   </a> <a name=26 class="linenum">26   </a>        	for (i=0;i&lt;3;i++) <a name=27 class="linenum">27   </a>        		for (j=0;j&lt;4;j++) <a name=28 class="linenum">28   </a>        				<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[i][j] += A.<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[i][j]; <a name=29 class="linenum">29   </a>        } <a name=30 class="linenum">30   </a>        public <a class="methodDef" name=Matrix(Matrix,Matrix) href=Matrix_java_ref.html#Matrix(Matrix,Matrix)>Matrix</a>(<a class="classRef" href=Matrix_java.html#Matrix>Matrix</a> A,<a class="classRef" href=Matrix_java.html#Matrix>Matrix</a> B) { <a name=31 class="linenum">31   </a>        	int i; <a name=32 class="linenum">32   </a>        	int j; <a name=33 class="linenum">33   </a>        	int k; <a name=34 class="linenum">34   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a> = new double[3][4]; <a name=35 class="linenum">35   </a> <a name=36 class="linenum">36   </a>        	for (i=0;i&lt;3;i++) { <a name=37 class="linenum">37   </a>        		<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[i][3] = A.<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[i][3]; <a name=38 class="linenum">38   </a>        		for (j=0;j&lt;4;j++) <a name=39 class="linenum">39   </a>        			for (k=0;k&lt;3;k++) <a name=40 class="linenum">40   </a>        				<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[i][j] += A.<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[i][k] * B.<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[k][j]; <a name=41 class="linenum">41   </a>        		} <a name=42 class="linenum">42   </a>        } <a name=43 class="linenum">43   </a>        public <a class="methodDef" name=Matrix(Vect) href=Matrix_java_ref.html#Matrix(Vect)>Matrix</a>(<a class="classRef" href=Vect_java.html#Vect>Vect</a> shift) { <a name=44 class="linenum">44   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a> = new double[3][4]; <a name=45 class="linenum">45   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[0][0] = 1.0; <a name=46 class="linenum">46   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[1][1] = 1.0; <a name=47 class="linenum">47   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[2][2] = 1.0; <a name=48 class="linenum">48   </a>        	for (int i=0;i&lt;3;i++) <a name=49 class="linenum">49   </a>        	  <a class="varRef" title="double" href=Matrix_java.html#element>element</a>[i][3] = shift.<a class="varRef" title="double" href=Vect_java.html#X>X</a>[i]; <a name=50 class="linenum">50   </a>        } <a name=51 class="linenum">51   </a>        public <a class="methodDef" name=Matrix(Vect,double) href=Matrix_java_ref.html#Matrix(Vect,double)>Matrix</a>(<a class="classRef" href=Vect_java.html#Vect>Vect</a> ax, double angle){ <a name=52 class="linenum">52   </a>        	double[] axis = ax.<a class="varRef" title="double" href=Vect_java.html#X>X</a>; <a name=53 class="linenum">53   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a> = new double[3][4]; <a name=54 class="linenum">54   </a>        	double s = Math.sin(angle); <a name=55 class="linenum">55   </a>        	double c = Math.cos(angle); <a name=56 class="linenum">56   </a>        	double t = 1.0-c; <a name=57 class="linenum">57   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[0][0] = t*axis[0]*axis[0]+c; <a name=58 class="linenum">58   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[0][1] = t*axis[0]*axis[1]+s*axis[2]; <a name=59 class="linenum">59   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[0][2] = t*axis[0]*axis[2]-s*axis[1]; <a name=60 class="linenum">60   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[1][0] = t*axis[1]*axis[0]-s*axis[2]; <a name=61 class="linenum">61   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[1][1] = t*axis[1]*axis[1]+c; <a name=62 class="linenum">62   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[1][2] = t*axis[1]*axis[2]+s*axis[0]; <a name=63 class="linenum">63   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[2][0] = t*axis[2]*axis[0]+s*axis[1]; <a name=64 class="linenum">64   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[2][1] = t*axis[2]*axis[1]-s*axis[0]; <a name=65 class="linenum">65   </a>        	<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[2][2] = t*axis[2]*axis[2]+c; <a name=66 class="linenum">66   </a>        } <a name=67 class="linenum">67   </a>        public void <a class="methodDef" name=print() href=Matrix_java_ref.html#print()>print</a>() { <a name=68 class="linenum">68   </a>        	int i; <a name=69 class="linenum">69   </a>        	for (i=0;i&lt;3;i++) <a name=70 class="linenum">70   </a>        			System.out.println(<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[i][0]+" "+<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[i][1]+" "+<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[i][2]); <a name=71 class="linenum">71   </a>          System.out.println(" "); <a name=72 class="linenum">72   </a>  }     <a name=73 class="linenum">73   </a>        public void <a class="methodDef" name=scale(double) href=Matrix_java_ref.html#scale(double)>scale</a>(double fact) { <a name=74 class="linenum">74   </a>        	int i; <a name=75 class="linenum">75   </a>        	int j; <a name=76 class="linenum">76   </a>        	for (i=0;i&lt;3;i++) <a name=77 class="linenum">77   </a>        		for (j=0;j&lt;4;j++) <a name=78 class="linenum">78   </a>        			<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[i][j] *= fact; <a name=79 class="linenum">79   </a>        } <a name=80 class="linenum">80   </a>        public double[] <a class="methodDef" name=XY(Vect) href=Matrix_java_ref.html#XY(Vect)>XY</a>(<a class="classRef" href=Vect_java.html#Vect>Vect</a> V) { <a name=81 class="linenum">81   </a>        int j; <a name=82 class="linenum">82   </a>        	double[] res = new double[2]; <a name=83 class="linenum">83   </a>        	for (int i=0;i&lt;2;i++) { <a name=84 class="linenum">84   </a>        		res[i] = element[i][3]; <a name=85 class="linenum">85   </a>        		for (j=0;j&lt;3;j++) <a name=86 class="linenum">86   </a>        			res[i] += V.<a class="varRef" title="double" href=Vect_java.html#X>X</a>[j]*element[i][j]; <a name=87 class="linenum">87   </a>        } <a name=88 class="linenum">88   </a>        	return(res); <a name=89 class="linenum">89   </a>        } <a name=90 class="linenum">90   </a>        public double <a class="methodDef" name=Z(Vect) href=Matrix_java_ref.html#Z(Vect)>Z</a>(<a class="classRef" href=Vect_java.html#Vect>Vect</a> V) { <a name=91 class="linenum">91   </a>        	double res = <a class="varRef" title="double" href=Matrix_java.html#element>element</a>[2][3]; <a name=92 class="linenum">92   </a>        	for (int j=0;j&lt;3;j++) <a name=93 class="linenum">93   </a>        		res += V.<a class="varRef" title="double" href=Vect_java.html#X>X</a>[j]*<a class="varRef" title="double" href=Matrix_java.html#element>element</a>[2][j]; <a name=94 class="linenum">94   </a>        	return(res); <a name=95 class="linenum">95   </a>        } <a name=96 class="linenum">96   </a>} <a name=97 class="linenum">97   </a></pre> 
