00001 #ifndef _CONSOLE
00002
00003 #endif
00004 #include "Debug.h"
00005 #include <stdio.h>
00006 #include <stdarg.h>
00007
00008
00009 #include "math/VectorN.h"
00010 #include "math/Vector4.h"
00011 #include "math/Matrixmxn.h"
00012 #include "math/Matrix4x4.h"
00013 #include "kinematics/Configuration.h"
00014 #include "paths/PA_Points.h"
00015
00016
00017
00018
00019
00020
00021
00022 void DebugMessage( const char* message )
00023 {
00024 #ifdef _CONSOLE
00025 printf( message );
00026 #else
00027
00028 #endif
00029 }
00030
00031 void Log(char *fileName, char *format, ...)
00032 {
00033 #ifdef _DEBUG
00034 va_list vl;
00035 char logString[1024];
00036
00037 FILE *logFile;
00038 logFile = fopen(fileName, "a+");
00039
00040 va_start(vl, format);
00041 vsprintf(logString, format, vl);
00042
00043 fprintf(logFile, "%s\n", logString);
00044 va_end(vl);
00045 fclose(logFile);
00046
00047 #endif
00048 }
00049
00050 void LogVector(char *fileName, VectorN &vec, char *szMsg)
00051 {
00052 #ifdef _DEBUG
00053 char szLog[1024];
00054 if (szMsg != NULL)
00055 sprintf(szLog, "%s\n", szMsg);
00056 else
00057 szLog[0]='\0';
00058 for (int i=0; i<vec.Size(); i++)
00059 {
00060 char szNum[32];
00061 sprintf( szNum, "%.4f\t", vec[i] );
00062 strcat(szLog, szNum);
00063 }
00064 Log(fileName, "%s\n", szLog);
00065 #endif
00066 }
00067
00068 void LogVector(char *fileName, Vector4 &vec, char *szMsg)
00069 {
00070 #ifdef _DEBUG
00071 char szLog[1024];
00072 if (szMsg != NULL)
00073 sprintf(szLog, "%s\n", szMsg);
00074 else
00075 szLog[0]='\0';
00076 for (int i=0; i<3; i++)
00077 {
00078 char szNum[32];
00079 sprintf( szNum, "%.4f\t", vec[i] );
00080 strcat(szLog, szNum);
00081 }
00082 Log(fileName, "%s\n", szLog);
00083 #endif
00084 }
00085
00086 void LogMatrix(char *fileName, Matrixmxn &matrix, char *szMsg)
00087 {
00088 #ifdef _DEBUG
00089 char szLog[1024];
00090 if (szMsg != NULL)
00091 sprintf(szLog, "%s\n", szMsg);
00092 else
00093 szLog[0]='\0';
00094 for (int i=0; i<matrix.GetRows(); i++)
00095 {
00096 for (int j=0; j<matrix.GetColumns(); j++)
00097 {
00098 char szNum[32];
00099 sprintf(szNum, "%.4f\t", matrix(i, j));
00100 if ( strlen(szLog)<(1022-strlen(szNum)) )
00101 strcat(szLog, szNum);
00102 }
00103
00104 if (strlen(szLog) < 1023)
00105 strcat(szLog, "\n");
00106 }
00107 Log(fileName, "%s", szLog);
00108 #endif
00109 }
00110
00111 void LogMatrix(char *fileName, Matrix4x4 &matrix, char *szMsg)
00112 {
00113 #ifdef _DEBUG
00114 char szLog[1024];
00115 if (szMsg != NULL)
00116 sprintf(szLog, "%s\n", szMsg);
00117 else
00118 szLog[0]='\0';
00119 for (int i=0; i<4; i++)
00120 {
00121 for (int j=0; j<4; j++)
00122 {
00123 char szNum[32];
00124 sprintf(szNum, "%.4f\t", matrix(i, j));
00125 if ( strlen(szLog)<(1022-strlen(szNum)) )
00126 strcat(szLog, szNum);
00127 }
00128
00129 if (strlen(szLog) < 1023)
00130 strcat(szLog, "\n");
00131 }
00132 Log(fileName, "%s", szLog);
00133 #endif
00134 }
00135
00136 void LogMessage(char *fileName, char *szMsg)
00137 {
00138 #ifdef _DEBUG
00139 Log(fileName, "%s\n", szMsg);
00140 #endif
00141 }
00142
00143 void LogConfiguration(char *fileName, Configuration &config)
00144 {
00145 char szConfig[200];
00146 char szValue[100];
00147 int nDof = config.DOF();
00148 strcpy(szConfig, "[");
00149 for(int d=0; d<nDof; d++)
00150 {
00151 sprintf(szValue, "%f,", config[d]);
00152 strcat(szConfig, szValue);
00153 }
00154 szConfig[strlen(szConfig)-1]=']';
00155
00156 Log(fileName, "%s", szConfig);
00157 }
00158
00159 void LogPath(char *fileName, PA_Points &path)
00160 {
00161 int nPathLen = path.Size();
00162 Log(fileName, "%d", nPathLen);
00163 for(int k=0; k<nPathLen; k++)
00164 {
00165 LogConfiguration(fileName, path[k]);
00166 }
00167 }
00168