Visual Servoing Platform version 3.7.0
Loading...
Searching...
No Matches
vpWireFrameSimulatorTypes.h
1/*
2 * ViSP, open source Visual Servoing Platform software.
3 * Copyright (C) 2005 - 2025 by Inria. All rights reserved.
4 *
5 * This software is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 * See the file LICENSE.txt at the root directory of this source
10 * distribution for additional information about the GNU GPL.
11 *
12 * For using ViSP with software that can not be combined with the GNU
13 * GPL, please contact Inria about acquiring a ViSP Professional
14 * Edition License.
15 *
16 * See https://visp.inria.fr for more information.
17 *
18 * This software was developed at:
19 * Inria Rennes - Bretagne Atlantique
20 * Campus Universitaire de Beaulieu
21 * 35042 Rennes Cedex
22 * France
23 *
24 * If you have questions regarding the use of this file, please contact
25 * Inria at visp@inria.fr
26 *
27 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
28 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
29 *
30 * Description:
31 * Wire frame simulator
32 */
33
34#ifndef vpWireFrameSimulatorTypes_h
35#define vpWireFrameSimulatorTypes_h
36
37#include <visp3/core/vpConfig.h>
38
39#ifndef DOXYGEN_SHOULD_SKIP_THIS
41typedef unsigned short Index;
42typedef char Type;
43typedef float Matrix[4][4];
44
45/*
46 * MATRIX
47 * ______
48 *
49 * Matrice homogene ou non.
50 * | Rotation | 0 |
51 * Matrice non homogene = | 3x3 | 0 |
52 * |-------------| 0 |
53 * | Translation | 1 |
54 */
55typedef float Matrix[4][4];
56
57#define DEFAULT_VSIZE 4
58
59/*
60 * Vertex_list :
61 * Pour optimiser l'allocation et la liberation memoire d'une liste de
62 * sommets: si (nbr > DEFAULT_VSIZE) | alors ptr est alloue et libere
63 * dynamiquement | sinon ptr = tbl fsi;
64 */
65typedef struct
66{
67 Index nbr; /* nombre de sommets */
68 Index *ptr; /* liste dynamique */
69 Index tbl[DEFAULT_VSIZE];
70} Vertex_list;
71
72typedef struct
73{
74 unsigned is_polygonal : 1; /* face polygonale */
75 unsigned is_visible : 1; /* face affichable */
76#ifdef face_edge
77 Edge_list edge; /* liste d'aretes */
78#endif // face_edge
79 Vertex_list vertex; /* liste de sommets */
80#ifdef face_normal
81 Vector normal; /* vecteur normal */
82#endif // face_normal
83} Face;
84
85typedef struct
86{
87 Index nbr; /* nombre de faces */
88 Face *ptr; /* liste dynamique */
89} Face_list;
90
91typedef struct
92{
93 float x, y, z;
94} Point3f;
95
96typedef struct
97{
98 Index nbr; /* nombre de points */
99 Point3f *ptr; /* liste dynamique */
100} Point3f_list;
101
102typedef struct
103{
104 unsigned is_display : 1; /* surface affichable */
105 unsigned is_polygonal : 1; /* surface polyedrique */
106 Type type; /* type de la primitive */
107#ifdef face_edge
108 Edge_list edge; /* liste d'aretes */
109#endif // face_edge
110 Face_list face; /* liste de faces */
111 Point3f_list point; /* points aux sommets */
112#ifdef face_normal
113 Vector_list normal; /* normales aux sommets */
114#endif // face_normal
115} Bound;
116
117typedef struct
118{
119 Index nbr; /* nombre de surfaces */
120 Bound *ptr; /* liste dynamique */
121} Bound_list;
122
123typedef struct
124{
125 char *name; /* nom de la scene */
126 Bound_list bound; /* liste de surfaces */
127} Bound_scene;
128END_VISP_NAMESPACE
129#endif
130#endif