Página principal   Lista alfabética   Lista de componentes   Lista de archivos   Miembros de las clases   Archivos de los miembros  

2Dlib.cpp

Ir a la documentación de este archivo.
00001 //********   2DLib del Simulador  ***********
00002 #include "2Dlib.h"
00003 
00011 matriz IniMatrix (int n)
00012 {
00013         matriz matrix;
00014         int i;
00015 
00016         matrix=(double**)malloc(n*sizeof(double*));
00017         for (i=0;i<n;i++){
00018                 matrix[i]=(double*)calloc(n,sizeof(double));
00019         }
00020         return matrix;
00021 }
00022 
00030 void FreeMatrix (matriz matrix,int n)
00031 {
00032         int i;
00033         for (i=0;i<n;i++) free (matrix[i]);
00034         free (matrix);
00035 }
00036         
00044 void mulmat (matriz a, matriz b, matriz c)
00045 {
00046         int i,j,k;
00047 
00048         for (i=0;i<3;i++){
00049                 for (j=0;j<3;j++){
00050                         c[i][j]=0.0;
00051                         for(k=0;k<3;k++){
00052                                 c[i][j]=c[i][j]+(a[i][k]*b[k][j]);
00053                         }
00054                 }
00055         }
00056 }
00057 
00065 void IniGiro (matriz matrix, double Angulo)
00066 {                                                  
00067         Angulo=(Angulo*PI)/180;
00068         matrix[0][0]=matrix[1][1]=cos(Angulo);
00069         matrix[0][1]=sin(Angulo);
00070         matrix[1][0]=-sin(Angulo);
00071         matrix[2][0]=matrix[2][1]=0;
00072         matrix[2][2]=1;
00073 }
00074 
00085 void IniGiroRespectoPunto (matriz matrix, double Angulo, double x,double y)
00086 {
00087         double AnguloRAD;
00088 
00089         AnguloRAD=(Angulo*PI)/180.0;
00090         IniGiro(matrix,Angulo);
00091         matrix[2][0]=-x*(1-cos(AnguloRAD))+y*sin(AnguloRAD);
00092         matrix[2][1]=y*(1-cos(AnguloRAD))+x*sin(AnguloRAD);
00093 }
00094 
00102 void IniTraslacion (matriz matrix, double x, double y)
00103 {
00104         matrix[0][0]=matrix[1][1]=matrix[2][2]=1;
00105         matrix[2][0]=long(x);
00106         matrix[2][1]=long(y);
00107 }
00108 
00115 void IniSimetriaX (matriz matrix)
00116 {
00117         matrix[0][0]=matrix[2][2]=1;
00118         matrix[1][1]=-1;
00119 }
00120 
00127 void IniSimetriaY (matriz matrix)
00128 {
00129         matrix[1][1]=matrix[2][2]=1;
00130         matrix[0][0]=-1;
00131 }
00132 
00140 void IniEscalado (double EscaladoX,double EscaladoY,matriz matrix)
00141 {
00142         matrix[0][0]=EscaladoX;
00143         matrix[1][1]=EscaladoY;
00144         matrix[2][2]=1;
00145 }
00146 
00151 void IniEscaladoRespectoPunto (double EscaladoX,double EscaladoY,
00152                                                            double X,double Y,matriz matrix)
00153 {
00154         IniEscalado (EscaladoX,EscaladoY,matrix);
00155         matrix[2][0]=X*(1-EscaladoX);
00156         matrix[2][1]=-Y*(1+EscaladoY);
00157 }
00158 
00167 Pt2D MultVect (matriz matrix, Pt2D punto)
00168 {
00169         Pt2D p;
00170 
00171         p.x=int((punto.x*matrix[0][0])+(punto.y*matrix[1][0])+(matrix[2][0]));
00172         p.y=int((punto.x*matrix[0][1])+(punto.y*matrix[1][1])+(matrix[2][1]));
00173         return p;
00174 }
00175 
00182 matriz Inversa3X3 (matriz matrix)
00183 {
00184         double tmp;
00185         matriz resultado;
00186 
00187         resultado=IniMatrix(3);
00188 
00189         tmp=+(matrix[0][0]*matrix[1][1]*matrix[2][2])+(matrix[1][0]*matrix[0][2]*matrix[2][1])+(matrix[2][0]*matrix[0][1]*matrix[1][2])
00190                 -(matrix[0][0]*matrix[1][2]*matrix[2][1])-(matrix[1][0]*matrix[0][1]*matrix[2][2])-(matrix[2][0]*matrix[0][2]*matrix[1][1]);
00191 
00192         resultado[0][0]=((matrix[1][1]*matrix[2][2])-(matrix[1][2]*matrix[2][1]))/tmp;
00193         resultado[0][1]=-(((matrix[0][1]*matrix[2][2])-(matrix[0][2]*matrix[2][1]))/tmp);
00194         resultado[0][2]=((matrix[0][1]*matrix[1][2])-(matrix[0][2]*matrix[1][1]))/tmp;
00195         resultado[1][0]=-(((matrix[1][0]*matrix[2][2])-(matrix[1][2]*matrix[2][0]))/tmp);               
00196         resultado[1][1]=((matrix[0][0]*matrix[2][2])-(matrix[0][2]*matrix[2][0]))/tmp;
00197         resultado[1][2]=-(((matrix[0][0]*matrix[1][2])-(matrix[0][2]*matrix[1][0]))/tmp);               
00198         resultado[2][0]=((matrix[1][0]*matrix[2][1])-(matrix[1][1]*matrix[2][0]))/tmp;
00199         resultado[2][1]=-(((matrix[0][0]*matrix[2][1])-(matrix[0][1]*matrix[2][0]))/tmp);
00200         resultado[2][2]=((matrix[0][0]*matrix[1][1])-(matrix[0][1]*matrix[1][0]))/tmp;
00201         return resultado;
00202 }

Generado el Tue Apr 24 06:55:48 2001 para Dllcontrol por doxygen1.2.6 escrito por Dimitri van Heesch, © 1997-2001