Upload files to "/"
This commit is contained in:
75
STLTextWriter.h
Normal file
75
STLTextWriter.h
Normal file
@@ -0,0 +1,75 @@
|
||||
#include "stdio.h"
|
||||
#include "stdlib.h"
|
||||
#include "math.h"
|
||||
#include "dotAndCrossProduct.h"
|
||||
|
||||
#define X 0
|
||||
#define Y 1
|
||||
#define Z 2
|
||||
|
||||
//draws one triangle
|
||||
int drawTriangle(FILE *outfile, double coords1[], double coords2[], double coords3[]){
|
||||
double vectn[] = {0,0,0}; // normal vector
|
||||
double vectnlenin = 0; // normal vector length inverse
|
||||
double vect1[] = {0,0,0}; // vector between coordinates 1 & 2
|
||||
double vect2[] = {0,0,0}; // vector between coordinates 1 & 3
|
||||
|
||||
vect1[0] = coords1[0] - coords2[0];
|
||||
vect1[1] = coords1[1] - coords2[1];
|
||||
vect1[2] = coords1[2] - coords2[2];
|
||||
vect2[0] = coords1[0] - coords3[0];
|
||||
vect2[1] = coords1[1] - coords3[1];
|
||||
vect2[2] = coords1[2] - coords3[2];
|
||||
|
||||
crossProduct(vectn, vect1, vect2);
|
||||
/* if((!isnormal(vectn[0]) && vectn[0] != 0) || (!isnormal(vectn[1]) && vectn[1] != 0) || (!isnormal(vectn[2]) && vectn[2] != 0)){
|
||||
printf("Troublemaker:\n\n");
|
||||
printf("vectn = %f, %f, %f\n\n", vectn[0], vectn[1], vectn[2]);
|
||||
printf("vect1 = %f, %f, %f\n", vect1[0], vect1[1], vect1[2]);
|
||||
printf("vect2 = %f, %f, %f\n\n", vect2[0], vect2[1], vect2[2]);
|
||||
printf("point1 = %f, %f, %f\n", coords1[0], coords1[1], coords1[2]);
|
||||
printf("point2 = %f, %f, %f\n", coords2[0], coords2[1], coords2[2]);
|
||||
printf("point3 = %f, %f, %f\n\n\n", coords3[0], coords3[1], coords3[2]);
|
||||
}
|
||||
*/
|
||||
vectnlenin = 1 / sqrt((vectn[0]*vectn[0]) + (vectn[1]*vectn[1]) + (vectn[2]*vectn[2]));
|
||||
vectn[0] = vectn[0] * vectnlenin;
|
||||
vectn[1] = vectn[1] * vectnlenin;
|
||||
vectn[2] = vectn[2] * vectnlenin;
|
||||
|
||||
fprintf(outfile, " facet normal %g %g %g\n", vectn[X], vectn[Y], vectn[Z]);
|
||||
fprintf(outfile, " outer loop\n");
|
||||
|
||||
fprintf(outfile, " vertex %g %g %g\n", coords1[X], coords1[Y], coords1[Z]);
|
||||
fprintf(outfile, " vertex %g %g %g\n", coords2[X], coords2[Y], coords2[Z]);
|
||||
fprintf(outfile, " vertex %g %g %g\n", coords3[X], coords3[Y], coords3[Z]);
|
||||
|
||||
fprintf(outfile, " endloop\n");
|
||||
fprintf(outfile, " endfacet\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
//draws one triangle and allows you to precompute the normal vector
|
||||
int drawTriangleWithNormal(FILE *outfile, double coords1[], double coords2[], double coords3[], double vectn[]){
|
||||
fprintf(outfile, " facet normal %g %g %g\n", vectn[X], vectn[Y], vectn[Z]);
|
||||
fprintf(outfile, " outer loop\n");
|
||||
|
||||
fprintf(outfile, " vertex %g %g %g\n", coords1[X], coords1[Y], coords1[Z]);
|
||||
fprintf(outfile, " vertex %g %g %g\n", coords2[X], coords2[Y], coords2[Z]);
|
||||
fprintf(outfile, " vertex %g %g %g\n", coords3[X], coords3[Y], coords3[Z]);
|
||||
|
||||
fprintf(outfile, " endloop\n");
|
||||
fprintf(outfile, " endfacet\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
//must be printed at the start of the file
|
||||
int startSTL(FILE *outfile){
|
||||
fprintf(outfile, "solid Mesh\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
//must be printed at the end of the file
|
||||
int endSTL(FILE *outfile){
|
||||
fprintf(outfile, "endsolid Mesh");
|
||||
}
|
||||
Reference in New Issue
Block a user