Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include "rply/rply.c"
- typedef struct _HE_edge
- {
- struct HE_vert* vert; // vertex at the end of the half-edge
- struct HE_edge* pair; // oppositely oriented adjacent half-edge
- struct HE_face* face; // face the half-edge borders
- struct HE_edge* next; // next half-edge around the face
- }HE_edge;
- typedef struct _HE_vert
- {
- float x;
- float y;
- struct HE_edge* edge; // one of the half-edges emantating from the vertex
- }HE_vert;
- typedef struct _HE_face
- {
- int color; // cor da face
- struct HE_edge* edge; // one of the half-edges bordering the face
- }HE_face;
- HE_edge *HE;
- HE_vert *vertices;
- int i = 0;
- long v0, v1, v2;
- static int vertex_cb(p_ply_argument argument) {
- long eol;
- ply_get_argument_user_data(argument, NULL, &eol);
- if (eol)
- {
- vertices[i].y = ply_get_argument_value(argument);
- i++;
- }
- else
- {
- vertices[i].x = ply_get_argument_value(argument);
- }
- return 1;
- }
- static int face_cb(p_ply_argument argument) {
- long length, value_index;
- ply_get_argument_property(argument, NULL, &length, &value_index);
- switch (value_index) {
- case 0:
- v0 = ply_get_argument_value(argument);
- break;
- case 1:
- v1 = ply_get_argument_value(argument);
- break;
- case 2:
- v2 = ply_get_argument_value(argument);
- break;
- default:
- break;
- }
- return 1;
- }
- int main(void) {
- int arestas, nHEs;
- long nvertices, ntriangles;
- p_ply ply = ply_open("rply/etc/input.ply", NULL);
- if (!ply) return 1;
- if (!ply_read_header(ply)) return 1;
- nvertices = ply_set_read_cb(ply, "vertex", "x", vertex_cb, NULL, 0);
- ply_set_read_cb(ply, "vertex", "y", vertex_cb, NULL, 1);
- vertices = (HE_vert *) malloc (nvertices * sizeof(HE_vert));
- ntriangles = ply_set_read_cb(ply, "face", "vertex_indices", face_cb, NULL, 0);
- //calculando o numero de HEs;
- arestas = nvertices + ntriangles - 2;
- nHEs = arestas*2;
- HE = (HE_edge *) malloc (nHEs * sizeof(HE_edge));
- printf("%ld\n%ld\n", nvertices, ntriangles);
- if (!ply_read(ply)) return 1;
- for(i = 0; i < nvertices; i++)
- {
- printf("X: %f, Y: %f \n", vertices[i].x, vertices[i].y);
- }
- printf("Vertice 0 : %ld, Vertice 1: %ld, Vertice 2: %ld\n", v0, v1, v2);
- ply_close(ply);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement