Actualizar src/surface.c
This commit is contained in:
@@ -31,6 +31,47 @@ struct parm
|
||||
function_t f;
|
||||
} parm;
|
||||
|
||||
// Función para escribir el archivo .klein
|
||||
void write_klein_file(const char *filename, unsigned char dim, unsigned long vertex, float *vertices, float *normals)
|
||||
{
|
||||
FILE *file = fopen(filename, "wb");
|
||||
if (!file)
|
||||
{
|
||||
perror("Error al abrir el archivo");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
// Escribir encabezado
|
||||
fwrite("KLEIN", 1, 5, file); // Los primeros 5 bytes son "KLEIN"
|
||||
fputc(0, file); // Byte vacío
|
||||
fwrite(&dim, 1, 1, file); // Dimensión de la superficie
|
||||
fwrite(&vertex, sizeof(unsigned long), 1, file); // Número de vértices (8 bytes)
|
||||
|
||||
// Escribir dimensiones de la cuadrícula
|
||||
fwrite(parm.grid, sizeof(unsigned char), dim, file);
|
||||
// Debug info
|
||||
for (int i = 0; i < dim; i++) {
|
||||
printf("Grid[%d]: %u\n", i, parm.grid[i]);
|
||||
}
|
||||
|
||||
// Escribir vértices (en float)
|
||||
fwrite(vertices, sizeof(float), vertex * dim, file);
|
||||
// Debug info
|
||||
for (unsigned long i = 0; i < vertex * dim; i++) {
|
||||
printf("Vertices[%lu]: %f\n", i, vertices[i]);
|
||||
}
|
||||
|
||||
// Escribir normales (en float)
|
||||
fwrite(normals, sizeof(float), vertex * dim, file);
|
||||
// Debug info
|
||||
for (unsigned long i = 0; i < vertex * dim; i++) {
|
||||
printf("Normals[%lu]: %f\n", i, normals[i]);
|
||||
}
|
||||
|
||||
fclose(file);
|
||||
printf("Archivo %s escrito correctamente.\n", filename);
|
||||
}
|
||||
|
||||
int factorial(int n)
|
||||
{
|
||||
if (n == 1)
|
||||
@@ -320,3 +361,40 @@ float *generate_normals_surface(float *d, unsigned char m, unsigned long vertex)
|
||||
free(norm_vec);
|
||||
return n;
|
||||
}
|
||||
int main()
|
||||
{
|
||||
unsigned char dim;
|
||||
unsigned long vertex;
|
||||
float *vertices, *normals;
|
||||
|
||||
// Generar datos de la superficie
|
||||
vertices = generate_data_surface(&dim, &vertex);
|
||||
|
||||
// Verificar datos generados
|
||||
if (vertices == NULL) {
|
||||
printf("Error: vertices no generados.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
printf("Dim: %u, Vertex: %lu\n", dim, vertex);
|
||||
|
||||
// Generar normales
|
||||
normals = generate_normals_surface(vertices, dim, vertex);
|
||||
|
||||
// Verificar normales generadas
|
||||
if (normals == NULL) {
|
||||
printf("Error: normales no generadas.\n");
|
||||
free(vertices);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Escribir el archivo
|
||||
printf("Escribiendo archivo .klein\n");
|
||||
write_klein_file("kingtin.klein", dim, vertex, vertices, normals);
|
||||
|
||||
free(vertices);
|
||||
free(normals);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user