42 #include <visp3/core/vpConfig.h>
44 #ifndef DOXYGEN_SHOULD_SKIP_THIS
54 #include <visp3/robot/vpMy.h>
55 #include <visp3/robot/vpArit.h>
58 #include <visp3/robot/vpBound.h>
59 #include <visp3/robot/vpView.h>
60 #include <visp3/robot/vpImstack.h>
61 #include <visp3/robot/vpRfstack.h>
62 #include <visp3/robot/vpVwstack.h>
72 Point2i *point2i = (Point2i *) NULL;
73 Point2i *listpoint2i = (Point2i *) NULL;
74 static int *rename_jlc = (
int *) NULL;
81 void open_display (
void)
83 static char proc_name[] =
"open_display";
85 if ((point2i = (Point2i *) malloc (POINT_NBR*
sizeof (Point2i))) == NULL
86 || (listpoint2i = (Point2i *) malloc (50*
sizeof (Point2i))) == NULL
87 || (rename_jlc = (
int *) malloc (POINT_NBR *
sizeof (
int))) == NULL)
98 void close_display (
void)
100 free ((
char *) point2i);
101 free ((
char *) listpoint2i);
102 free ((
char *) rename_jlc);
103 point2i = (Point2i *) NULL;
104 listpoint2i = (Point2i *) NULL;
105 rename_jlc = (
int *) NULL;
128 void point_3D_2D (Point3f *p3, Index size,
int xsize,
int ysize, Point2i *p2)
130 Point3f *pend = p3 + size;
131 float xdiv2 = ((float) xsize) / (float)2.0;
132 float ydiv2 = ((float) ysize) / (float)2.0;
134 for (; p3 < pend; p3++, p2++) {
135 p2->x = (int) ((1.0 + p3->x) * xdiv2);
136 p2->y = (int) ((1.0 - p3->y) * ydiv2);
159 void set_Bound_face_display (Bound *bp, Byte b)
161 Face *fp = bp->face.ptr;
162 Face *fend = fp + bp->face.nbr;
163 Point3f *pp = bp->point.ptr;
165 for (; fp < fend; fp++) {
171 fp->is_visible = TRUE;
172 if (b == IS_INSIDE)
continue;
176 p2 = pp + *(vp + fp->vertex.nbr - 1);
178 fp->is_visible = ((p1->z - p0->z) * (p2->x - p0->x)
179 >= (p1->x - p0->x) * (p2->z - p0->z));
181 if (! fp->is_visible)
continue;
183 fp->is_visible = ((p1->z - p0->z) * (p2->x - p0->x)
184 <= (p1->x - p0->x) * (p2->z - p0->z));
186 if (! fp->is_visible)
continue;
188 fp->is_visible = ((p1->y - p0->y) * (p2->z - p0->z)
189 >= (p1->z - p0->z) * (p2->y - p0->y));
191 if (! fp->is_visible)
continue;
193 fp->is_visible = ((p1->y - p0->y) * (p2->z - p0->z)
194 <= (p1->z - p0->z) * (p2->y - p0->y));
196 if (! fp->is_visible)
continue;
198 fp->is_visible = ((p1->x - p0->x) * (p2->y - p0->y)
199 >= (p1->y - p0->y) * (p2->x - p0->x));
201 if (! fp->is_visible)
continue;
203 fp->is_visible = ((p1->x - p0->x) * (p2->y - p0->y)
204 <= (p1->y - p0->y) * (p2->x - p0->x));
219 void wireframe_Face (Face *fp, Point2i *pp)
223 Index *vp = fp->vertex.ptr;
224 Index *vend = vp + fp->vertex.nbr;
225 Point2i *cp = listpoint2i;
227 if (fp->vertex.nbr < 2)
return;
228 if (fp->vertex.nbr > 50)
230 printf(
"pb malloc listpoint2i (display.c)\n");
return;
232 for (; vp < vend; vp++, cp++) {
233 SET_COORD2(*cp, pp[*vp].x, pp[*vp].y);