• Lunes 7 de Julio de 2025, 00:12

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - diego.martinez

Páginas: 1 ... 5 6 [7] 8 9 ... 12
151
C/C++ / Re: maticesssssssss?
« en: Jueves 5 de Febrero de 2009, 16:40 »
es la forma de definir el Orden de un algoritmo, una O mayuscula y luego su valor.
El orden de un algoritmo es digamos el numero de iteraciones que debe de hacer para resolverlo.
Por ejemplo, pintar una matriz de N columnas y M files tendra Orden MxN o sea, habra que pintar m por n veces.
Al ser una matriz cuadrada se pone O:n^2 por que lo vas a hacer n veces columnas y n veces filas.
Es solo una forma de expresar la "lentitud" en comparación de un algoritmo.

Ejemplos de orden:
Acceder a un elemento de un vector por su indice : vector[5]   -> O:1   //en una vuelta hecho
Buscar un elemento en un array -> O: N por que como mucho habra que iterar N veces donde n es el tamaño del array
Buscar en una matriz O: NxM o O:N^2 si es cuadrada
Buscar un elemento en un arbol binario de busqueda O: log2N
etc etc  etc  

Esto son cosas de ingenieria de software, no son necesarias para saber hacer las cosas :D pero te sirven para hacerlas mejor en proyectos grandes.

152
C/C++ / Re: maticesssssssss?
« en: Jueves 5 de Febrero de 2009, 16:07 »
al ser matrizes cuadradas, la suma de las diagonales de O:n en vez de O:n^2
asi que yo lo haria mas eficiente

for (int i=0;i<n;i++)
{
diagonal1+=m;
diagonal2+=m[n-i-1];
}

153
C/C++ / Re: maticesssssssss?
« en: Martes 3 de Febrero de 2009, 10:18 »
para hacerlo por columnas, intercambia en el for los elementos x e y

154
C/C++ / Re: maticesssssssss?
« en: Martes 3 de Febrero de 2009, 10:17 »
depende de como ingreses los datos, quieres pedirle al user los numeros uno a uno o quieres que te de las matrices separadas por espacios:
para ello , lo mejor seria que recibas un string entero y luego por cada token lo vayas metiendo en la matriz.

Para recibir un string puedes hacer scanf("%s",s);

Cojes el array, cuentas el numero de espacios que hay en el para ver el numero de elementos que tienes escritos.
una vez sabes cuantos elementos hay, localizas usando malloc una matriz cuadrada de N^2. Luego vas metiendo los elementos usando strtok y strtoi
(miralo en google, pero el primero descompone un string en cachos simples y el otro convierte de string a integer) con eso tendras los datos y podras hacer

por cada token, el elemento x de la matrix = strtoi(token).

no se si me he explicao igual he quedao confuso

para sumarlos, simplemente haz un doble for de n elementos y los vas sumando en una variable auxiliar

for (int y=0;y<n;y++)
{
aux=0;
for (int x=0;x<n;x++)
{
aux+=matrix[y]
  • ;

}
printf("%d",aux);
}

155
PHP / $_SESSION["login"]='Object'
« en: Lunes 2 de Febrero de 2009, 01:54 »
Buenas:

Tengo una pagina web que funciona correctamente en localhost y en un php 4.3.9

ahora, lo subo a un php 4.4 y me da un problema raro:

Cuando logueo, guardo el Login introducido (y verificado) en una session $_SESSION["login"];
cuando vuelvo del formulario, las session es valida y tiene el login por ejemplo $_SESSION["login"]="Diego";
pero, en cuanto salto otra pagina, la session se convierte en $_SESSION["login"]="Object";

os pongo el codigo del login:
Código: Text
  1.  
  2.     $s="";
  3.     $user_login="";
  4.     $user_pass="";
  5.  
  6. //----- aqui recibo el resultado del formulario
  7.  
  8.         if (isset($_REQUEST["user_login"]) && isset($_REQUEST["user_pass"])) //acaba de llegar el post
  9.         {          
  10.                 $_SESSION["login"]=$_REQUEST["user_login"];
  11.                 $_SESSION["pass"]=$_REQUEST["user_pass"];      
  12.         }
  13.  
  14. ///------------------- si se marca el ?link=logoff deslogueo
  15.  
  16.         if (isset($_GET["link"]))
  17.         if ($_GET["link"]=="logoff")
  18.         {
  19.             unset($_SESSION["login"]);
  20.             unset($_SESSION["pass"]);
  21.             unset($_SESSION["id_user"]);
  22.         }
  23.  
  24. //----------------- compruebo que la session es un usuario valido
  25. //esta parte funciona la primera vez, la siguiente no por que $_SESSION["login"]="object"
  26.  
  27.         if (isset($_SESSION["login"]) && isset($_SESSION["pass"]))
  28.         {  
  29.         $q="select * from user_fd where Login="".$_SESSION["login"]."" and Password="".$_SESSION["pass"].""";
  30.                
  31.                 $this->Conn->Query($q,"log");
  32.                    
  33.                 if ($this->Conn->GetNumRows("log")==0)
  34.                     {      
  35.                     unset($_SESSION["login"]);
  36.                     unset($_SESSION["pass"]);
  37.                     unset($_SESSION["id_user"]);            
  38.                     Jump("index.php?link=logerror");
  39.                     }
  40.                 else
  41.                     {
  42.                     $row=$this->Conn->GetRow("log",0);
  43.                     $_SESSION["id_user"]=$row["id"];                    
  44.                     }
  45.  
  46.         }
  47.  
  48.  
  49.         //------------------ Dibujado del Form
  50.         //
  51.         if (!isset($_SESSION["login"]))
  52.         {                  
  53.         $s=$s."<form name="".$this->name."" action=".SelfUrl()." method=post>";
  54.             $s=$s."<table>";
  55.             $s=$s."<tr><td>Login:</td><td><input type="text" id="user_login" name="user_login"></td></tr>";
  56.             $s=$s."<tr><td>Contraseña:</td><td><input type="password"  id="user_pass" name="user_pass"></td></tr>";
  57.             $s=$s."<tr><td align="right"><a href="".SelfUrl()."?link=register" >Registrarse</a></td><td><input align=right type="submit" value="Entrar"></td></tr>";
  58.             $s=$s."</table>";
  59.         $s=$s."</form>";
  60.         return $s;
  61.         }
  62.         else
  63.         {
  64.             $s=$s."<table>";
  65.             $s=$s."<tr><td colspan=2 align="right"> Bienvenido ".$_SESSION["login"]."</td></tr>";
  66.             $s=$s."<tr><td colspan=2 align="right"> <a href="".SelfUrl()."?link=logoff">logoff</a></td></tr>";
  67.             $s=$s."</table>";
  68.         return $s;      
  69.         }
  70.  
  71.  

es algun problema de versiones? estoy haciendo algo mal que realmente sobrevive por los pelos en la otra version?

gracias
att. Diego Martinez

156
MySQL / Re: Sentencia Join rara
« en: Lunes 2 de Febrero de 2009, 01:47 »
perfecto, muchas gracias

157
C/C++ / sscanf
« en: Viernes 30 de Enero de 2009, 11:40 »
Buenas:

Una consulta sencillita:

Tengo un string con este formato :

Nombre=valor

por ejemplo:

TYPE=8F

y quiero leerlo con sscanf descomponiendolo en 2 strings , para ello hago
Código: Text
  1. sscanf(ptr,"%[^=]s=%s",Var,Value);
  2.  


pero me resulta que solo me lee el primero de los strings :S que hago mal? he estado mirando la sintaxis del sscanf y parece correcto.

att diego martinez

158
MySQL / Sentencia Join rara
« en: Miércoles 28 de Enero de 2009, 02:00 »
buenas:

Estoy haciendo una sentencia que quiero que me de una lista de los eventos que hay en una tabla.

Esta tabla de eventos tiene un id por evento.

evento:
id int auto_increment,
nombre varchar(50)

Los usuarios pueden darse de alta a eventos , para ello uso la tabla inscripcion.

la tabla inscripcion solo tiene :
id int auto_increment
id_user int,
id_evento int

para cruzarlo

ahora bien , quiero hacer una sentencia que me de todos los eventos, y ademas EL NUMERO DE USUARIOS que estan inscritos

si hago:

select evento.nombre,count(inscripcion.id) from evento join inscripcion where inscripcion.id_evento=evento.id

me da mal, (mas que nada por que no tengo ni idea de si es siquiera de este estilo lo que quiero hacer).

alguien me puede decir como hacerlo?


muchas gracias, no se si me he explicado muy bien :P

159
C/C++ / Re: Problemas con puntero
« en: Jueves 22 de Enero de 2009, 09:55 »
en void calculden(int den1, int den2, int *resulmcm)
estas pasando resulmcm como PUNTERO a INT.

luego se lo das a una funcion mcm(den1,den2,dividendo1,resulmcm); <- resultmcm es un puntero

asi que el compilador cree que mcm deberia recibir un puntero a int. Como puedes sobrecargar las funciones, el linkador esta esperando a que hagas una funcion de mcm que acepte punteros a int como parametro.
 
La solucion: refiere el contenido del puntero

mcm(den1,den2,dividendo1,*resulmcm); <- el operador * sirve para referirse al contenido del puntero.

160
C/C++ / Re: Error compilacion
« en: Lunes 19 de Enero de 2009, 10:26 »
la condicion del while se ejecuta ANTES del contenido del nido. Asi pues, al entrar en el while (resto<=0) no se ejecuta el nido por que resto puede estar inicializado con otro valor.  Usa mejor do { } while(...) ademas, deberias inicializar el resto por si acaso.

161
C/C++ / Re: select en sockets non-blocking
« en: Lunes 12 de Enero de 2009, 12:28 »
gracias por la respuesta.

Pues si, lo probé y seguia igual de mal. Al final buscando he encontrado el fallo:

Código: Text
  1.  
  2. u_long iMode = 1;   // <------ el fallo es que no habia entendido bien que parametro se pasaba como iMode.
  3.         ioctlsocket (Socket, FIONBIO, &iMode);
  4.  
  5.  

En la espec pone que iMode debe ser distinto de 0 para que sean non-blocking. Bien la cosa es que se refieren al valor interno, no a la direccion (pensaba que era que si le pasabas null seria blocking) pero hay que poner iMode a 1 para que sean non-blocking de verdad, asi que con eso se solucionó.

Gracias igualmente. Nos vemos.  :hola:

162
C/C++ / select en sockets non-blocking
« en: Lunes 12 de Enero de 2009, 10:49 »
Buenas:

estoy haciendo una comunicación UDP entre 2 equipos. Cuando se produce un evento, el equipo A manda una trama UDP al equipo B que esta en escucha con Bind.

Uso select para ver si tengo que hacer recv en el recepctor. Y aqui viene el problema, el receptor a pesar de tener un sleep , me consume el 98% de la CPU. Alguien sabe que hago mal?

Os pongo el codigo.
Código: Text
  1.    
  2. //este es el bucle de mensajeria de windows
  3.  
  4. while (!this->IsFinished() && !this->IsRestarting())
  5.     {
  6.         this->Messager(); //translate message, dispatch etc...
  7.  
  8.         this->UDPServer->Poll();
  9.  
  10.         Sleep(this->Main_Sleep); //vale 1 MainSleep
  11.     }
  12.  
  13.  

y este es el UDPServer
Código: Text
  1.  
  2.  
  3. int appIP::InitHost()
  4. {
  5.         //creamos un socket para UDP
  6.     this->Socket=socket(AF_INET, SOCK_DGRAM, 0);
  7.     if (this->Socket==SOCKET_ERROR) return 1;
  8.  
  9.     //limpiamos nuestra address para hacer de host
  10.     memset((void *)&Host, '', sizeof(struct sockaddr_in));
  11.  
  12.    
  13.     /* Set family and port */
  14.     Host.sin_family = AF_INET;
  15.     Host.sin_port = htons(Port);
  16.  
  17.     /* Get host name of this computer */
  18.         gethostname(host_name, sizeof(host_name));
  19.         HostProperties = gethostbyname(host_name); //cojemos el nombre de la maquina local
  20.  
  21.         /* Check for NULL pointer */
  22.         if (HostProperties == NULL)
  23.             return 1;
  24.  
  25.         /* Assign the address */
  26.         Host.sin_addr.S_un.S_un_b.s_b1 = HostProperties->h_addr_list[0][0];
  27.         Host.sin_addr.S_un.S_un_b.s_b2 = HostProperties->h_addr_list[0][1];
  28.         Host.sin_addr.S_un.S_un_b.s_b3 = HostProperties->h_addr_list[0][2];
  29.         Host.sin_addr.S_un.S_un_b.s_b4 = HostProperties->h_addr_list[0][3];
  30.  
  31.         /*tenemos la ip , hagamosla string*/
  32.         sprintf(StringIP,"%d.%d.%d.%d",Host.sin_addr.S_un.S_un_b.s_b1,Host.sin_addr.S_un.S_un_b.s_b2,Host.sin_addr.S_un.S_un_b.s_b3,Host.sin_addr.S_un.S_un_b.s_b4);
  33.        
  34.         TimeOut.tv_usec = msTimeout%1000;
  35.         TimeOut.tv_sec = msTimeout/1000;  // Time in seconds
  36.  
  37.         FD_ZERO (&fdSocket);
  38.         FD_SET  (Socket, &fdSocket); //ponemos el socket en vigilancia
  39.  
  40.  if (bind(Socket, (struct sockaddr *)&Host, sizeof(struct sockaddr_in)) == -1)
  41.         {
  42.             return 1;
  43.         }
  44.         return 0;
  45. }
  46.  
  47.  
  48.  

Y este es el polling del select.

Código: Text
  1.  
  2. void appIP::Poll()
  3. {
  4.     unsigned int bytes_received=0;
  5.     int AddrSize=(int)sizeof(struct sockaddr_in);
  6.  
  7.     this->fdSocket.fd_count = 1;
  8.  
  9.         if (
  10.             select(0,&this->fdSocket,0,0,&this->TimeOut)  > 0  //hay notificacion
  11.             &&
  12.             FD_ISSET (this->Socket, &this->fdSocket)  //y es nuestro socket
  13.             )
  14.         {
  15.             bytes_received = recvfrom(this->Socket,(char*) this->Buffer, 100, 0, (struct sockaddr *)&this->Ext, &AddrSize);
  16.  
  17.             if (bytes_received>0)
  18.             {
  19.                 if (this->Events["receive"]!=NULL) this->Events["receive"](this);
  20.             }
  21.         }
  22. }
  23.  
  24.  

no se, al select le he puesto un time out de 1 ms para que la mitad del tiempo este durmiendo la cpu, asi que deberia ir relajado. Quizas estoy manejando mal el select?


gracias por anticipado.

163
C/C++ / Re: problema de eficiencia
« en: Lunes 12 de Enero de 2009, 10:41 »
la verdad es que tal como dicen, la recursividad es lo que tiene, que consume pila como ella sola.

Publica el codigo, quizas se pueda hacer algun invento para optimizar. :D

164
C/C++ / Re: Piramide
« en: Miércoles 7 de Enero de 2009, 11:29 »
no defines el valor de files, si empieza con un numero mayor que alcada no se ejecuta el for

165
C/C++ / Re: algoritmo para identificar que dos vectores son iguales
« en: Lunes 5 de Enero de 2009, 14:24 »
es el tipico ejercicio de maquina de turing.  :devil:

si son de tamaño distinto no son iguales.

por cada elemento del array 1 , buscalo en el aray 2 , y si coincide, borra el elemento del array 2 y continua.
al final, encontraras, o bien un elemento que no esta en el array 2 (distintos) o bien acabaras el array1 (iguales).
Código: Text
  1.  
  2. Para i <- 0 hasta NumElementos hacer
  3.    Para e <- 0 hasta NumElementos hacer
  4.        Si V1[i] == aux[e] entonces
  5.          eliminar aux[e];   //borrarlo de la lista, marcarlo cion un caracter diferente , etc...
  6.          continuar
  7.       fin SI
  8.  
  9.     si (e==numElementos) //se salio del array aux sin encontrarlo
  10.           error "no son iguales"
  11.  
  12.     fin para
  13. fin para
  14.  
  15. O:n*n
  16.  
  17.  
  18.  

166
C/C++ / Re: [C++] 3 preguntas sobre arboles.
« en: Lunes 5 de Enero de 2009, 11:20 »
veamos:

para la primera pregunta, usa una funcion recursiva y como parametro añadele dos punteros a entero. Dentro de la funcion cambias el contenido de los punteros. En uno guardas el nivel en el que estas, y en el otro el nivel maximo al que has llegado.
Ex:
Código: Text
  1.  
  2. void SizeBranch ( Node * Nod, int * CurrentBranchSize, int * maxSizeBranch)
  3. {
  4.  
  5. //recursividad normal no añadida
  6.  
  7. //...
  8. //...
  9.  
  10.  
  11.  //al avanzar un nivel
  12.    *CurrentBranchSize=*CurrentBranch+1;
  13.    
  14.  
  15.   if( *CurrentBranchSize>*maxSizeBranch) *maxSizeBranch=*CurrentBranchSize;
  16.  
  17. //al hacer return por que no tiene descendencia
  18.   *CurrentBranchSize=*CurrentBranch-1; //por que volvemos un nivel.
  19.  
  20. }
  21.  
  22.  

segunda pregunta: si, la unica diferencia del avl es en la insercion, pero esto deberia valer para cualquier arbol.

tercera pregunta:
es mas facil que la primera, simplemente pasa 1 integer e incrementalo en cada iteracion.
Código: Text
  1.  
  2. void TreeSize(Node * n, int * size)
  3. {
  4. // recursividad normal ...
  5.  
  6. *size=*size+1; //esto incrementa size 1 vez por nodo
  7. }
  8.  
  9.  

167
C/C++ / Re: Problemas con los templates
« en: Lunes 5 de Enero de 2009, 11:09 »
veamos, corregidme si me equivoco, pero creo que el problema radica en que en el caso de los templates, el linkador desconoce como debe linkar la operacion en caso de ser int.

Mientras el .h usa T como typo, en algun C debes definir como <int> y decirle que debe hacer.

O sea, si lo haces en el .h se compila bien por que se hace el cambio en el propio compilado, sin embargo, el linkador no sabe de que le hablas, asi que debes definir un modulo con la template bien definida , o sea:
Código: Text
  1.  
  2. bool ARBOL<int>::Insertar(int x)
  3. {
  4. ...
  5. }
  6.  
  7. bool ARBOL<float>::Insertar(float x)
  8. {
  9. ...
  10. }
  11.  
  12.  

este problema lo encontre yo al usarlas para el compilador IAR. Para otras cosas uso simples .h por que suelen ser operaciones simples. Pero si tienes que usar un modulo .cpp tienes que indicar todos los tipos posibles en los que el linkador se puede encontrar el tema.

suerte.

168
C/C++ / limpiar ventana
« en: Jueves 18 de Diciembre de 2008, 18:03 »
Buenas:

Tengo una ventana en Win32 pintada usando StretchDibBits.

La cosa es que quiero limpiarla debido a que no siempre pinto en la misma zona.

He buscado y no hay ninguna funcion win32 gdi que me permita limpiarla.

He probado a pintar un rectangulo encima pero no ha funcionado.

Alguien sabe si hay alguna funcion "Clear"?

mi codigo:
Código: Text
  1.  
  2. RECT r;
  3. GetWindowRect(Marco_Mapa,&r);
  4. HBRUSH b=CreateSolidBrush(RGB(255,255,255));
  5. FillRect(hDC,&r,(HBRUSH)(b));
  6. Mapa->Draw(hDC,0,0,200,140);
  7. delete(Mapa);
  8. DeleteObject(b);
  9.  
  10.  
  11.  

169
C/C++ / Comprobar si un hilo esta aun vivo
« en: Viernes 5 de Diciembre de 2008, 19:04 »
Buenas:

tengo un hilo que parece ser qeu da algun problema y "desaparece".

Con desaparecer me refiero a que no produce ninguna excepción, no pasa por _endthread ni hace nada raro, sin embargo, el hilo deja de funcionar y ademas desaparece de la lista de threads del spy++.

Alguien sabe que puede provocar algo asi?

De mientras averiguo la razón, estoy intentando descubrir cuando desaparece para relanzarlo. Para ello, en msdn dicen de usar WaitForSingleObject, sin embargo, cuando se produce esta "desaparición" waitforsingleobject no retorna. He probado tambien con _cwait y pasa lo mismo.

Alguien sabe como puedo "vigilar" la permanencia de un  hilo?.

Gracias.

Código: Text
  1.  
  2.  
  3. //este es hilo de vigilancia del otro hilo
  4. unsigned int __stdcall Watcher(void *)
  5. {
  6.         _cwait(NULL,(intptr_t)app->GetCom()->ReadThread,0);              //no detecta la finalización
  7.            //WaitForSingleObject(app->GetCom()->ReadThread,INFINITE);  //no detecta la finalización
  8.  
  9.     if (app->IsFinished()==false)
  10.     MessageBox(0,"HILO DE LECTURA ROTO SIN SOLICITUD",0,0);
  11.     return 0;
  12. }
  13.  
  14.  

170
C/C++ / Re: Respaldo de una base de datos
« en: Viernes 28 de Noviembre de 2008, 17:20 »
puedes hacerlo con la api de mysql para c que puedes coger en la pagina oficial de mysql.net

usarla es muy simple, cuando te la instales te ayudo si tienes alguna duda.

171
OpenGL / tutorial sobre Skinning/Bones
« en: Viernes 17 de Octubre de 2008, 19:27 »
Buenas:

estoy haciendo un motor y estoy intentando aplicar skinning a partir de bones (en algunos lugares lo llaman de otra forma) pero es la deformacion de la malla para mover una malla unica por medio de los bones vamos.

La cosa es que aplico este codigo:

Código: Text
  1.  
  2.     //---- Dibujamos el mesh
  3. int nB=E->GetNBones();
  4. int nV=E->GetNVertex();
  5.  
  6. _3D * V=E->GetVertex(); //array de vertices
  7.  
  8.  
  9. _3D v; //vertice x,y,z,w
  10.  
  11. double weight;
  12.  
  13.  
  14. RenderBone(Bones->Root); //aplico las matrices absolutas de los bones
  15.  
  16. for (int iV=0;iV<nV;iV++)
  17. {
  18.     E->WeightedVertex[iV]=V[iV];
  19.     E->WeightedVertex[iV].w=1.0;
  20. }
  21.  
  22. for (int b=0;b<E->GetNBones();b++)
  23.     {
  24.         KngBone * B=E->GetBone(b);
  25.         for (int w=0;w<B->GetNWeights();w++)
  26.             {
  27.                 iV=B->GetWeight(w).n;
  28.                 weight=B->GetWeight(w).w;
  29.                 v=B->Absolute.VectorMatrixMultiply(E->WeightedVertex[iV]); //aqui multiplico la matriz acumulada de todos los bones que afectan  a este bone y la aplico sobre el vertice.
  30.  
  31.                 v.x*=weight;  //opero sobre los pesos para saber el verdadero desplazamiento
  32.                 v.y*=weight;
  33.                 v.z*=weight;
  34.                 v.w*=weight;
  35.  
  36.                               //sumo todos los pesos para tener el vertice bien
  37.                 E->WeightedVertex[iV].x+=v.x;E->WeightedVertex[iV].y+=v.y;E->WeightedVertex[iV].z+=v.z;
  38.             }
  39.     }
  40.  
  41.  
  42. for (ifaces=0;ifaces<nFaces;ifaces++)
  43.             {
  44.                 glBegin(GL_LINE_STRIP);                     // Drawing Using Triangles
  45.                    
  46.                     F=Faces[ifaces];
  47.  
  48.                     _3D va,vb,vc;
  49.  
  50.                     va=E->WeightedVertex[F.a];         
  51.                     vb=E->WeightedVertex[F.b];                 
  52.                     vc=E->WeightedVertex[F.c];                 
  53.  
  54.                     glVertex3f( va.x, va.y, va.z);         
  55.                     glVertex3f( vb.x, vb.y, vb.z);         
  56.                     glVertex3f( vc.x, vc.y, vc.z);         
  57.                     glVertex3f( va.x, va.y, va.z);
  58.                 glEnd();
  59.             }   
  60.  
  61.  
  62.  

para obtener las matrices absolutas de los bones antes hago una operacion recursiva

Código: Text
  1.  
  2.  
  3. void KngRendererBone::RenderBone(KngBone * B)
  4. {   
  5.     B->Absolute=*(B->GetMatrix());  //copio la matriz
  6.     if (B->GetParent()!=NULL)
  7.             B->Absolute*=B->GetParent()->Absolute; //y la multiplico por la matriz acumulada de su padre
  8.  
  9.             for (int e=0;e<B->GetNChilds();e++)
  10.                 RenderBone(B->GetChild(e));  //recursiva       
  11. }
  12.  
  13.  


y la malla se me deforma horriblemente.

no se que hago mal, alguien sabe algun tutorial donde expliquen que operaciones hay que producir para que se deforme bien?

alguien sabe que puedo estar torciendo?


gracias por anticipado, pero buf, tengo el engine parado por esto.

172
C/C++ / Re: Compilacion Condicional y Creacion de Librerias
« en: Viernes 10 de Octubre de 2008, 09:52 »
si se puede con la directiva #ifndef o #ifdef

Código: Text
  1.  
  2. #ifndef _mytypo
  3. #defien _mytypo
  4. typedef mytypo ...
  5. #endif
  6.  
  7.  

173
Windows / rs232 y el raton
« en: Martes 7 de Octubre de 2008, 16:40 »
Buenas:

Tengo un problema curioso. Dispongo de un aparato que emite tramas a traves de un puerto de rs232. La cosa es que si al iniciar windows, el dispositivo emite alguna trama, el ratón se vuelve loco y el puerto de comunicaciones se queda bloqueado , como si windows hubiera decidido que este puerto tiene conectado un ratón rs232.

Como se puede evitar que windows interprete el puerto como una interfaz humana?

gracias

174
C/C++ / Re: Perdida Datos En Un For
« en: Domingo 8 de Junio de 2008, 17:38 »
tienes que usar una matriz bidimensional

como char Matrix[20][30]
asi podras guardar 20 textos de 30 bytes

para hacer la entrada, en vez de &nombre usas &nombre[indice++]

y luego para mostrarlo lo iteras



me da que lo que te vendria bien para hacer eso son structuras

typedef struct
{
char nombre[20];
char DNI[10];
char telf[20];
int edad;
}REGISTRO;

REGISTRO tabla[20];

e ir metiendo, mirate en google structuras en c

175
C/C++ / Re: Mostrar Imagen...
« en: Lunes 2 de Junio de 2008, 12:37 »
con las gdi de windows puedes hacerlo, empleando el StretchDibits puedes cambiarle el tamaño y gestionando el TransparentBlt haces que sea transparente

                     
Código: Text
  1.   hLoc  =LoadImage(NULL,s,IMAGE_BITMAP,0,0,LR_LOADFROMFILE | LR_DEFAULTSIZE);
  2.  
  3.                         SetStretchBltMode(hDC,COLORONCOLOR);
  4.       SelectObject(memHDC, hLoc);
  5.  
  6.       x=((A-&#62;GetPosition()).x)+MapaOx;
  7.       y=((A-&#62;GetPosition()).y)+MapaOy;
  8.  
  9.       TransparentBlt(
  10.         hDC,
  11.         0+x-15,
  12.         0+y-15,
  13.         30,
  14.         30,
  15.         memHDC,
  16.         0,
  17.         0,
  18.         30,
  19.         30,
  20.         RGB(255,255,255));
  21.  

Edito: este codigo es para cargar un BMP para hacerlo con otro tipo, localizas la imagen en un DIB antes...

Páginas: 1 ... 5 6 [7] 8 9 ... 12