Visual Servoing Platform version 3.7.0
Loading...
Searching...
No Matches
vpBound.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 * Le fichier "bound.h" contient les macros et le types
32 * utilises par le modele geometrique surfacique polygonale 3D.
33 *
34 * Authors:
35 * Jean-Luc CORRE
36 */
37
38#ifndef vpBound_H
39#define vpBound_H
40
41#include <visp3/core/vpConfig.h>
42
43#ifndef DOXYGEN_SHOULD_SKIP_THIS
44
45#include "vpArit.h"
46#include "vpMy.h"
47#include <visp3/robot/vpWireFrameSimulatorTypes.h>
48
49#define START_ARG 0
50#define NEXT_ARG 1
51
52#define BND_NULL (-1)
53
54#define BND_BLOCK 0
55#define BND_CARDIOIDE 1
56#define BND_CONE 2
57#define BND_CYLINDER 3
58#define BND_SPHERE 4
59#define BND_TORUS 5
60#define BND_WEDGE 6
61
62#define BND_F3 7
63#define BND_F4 8
64
65#define BND_GRID 9
66#define BND_PIPE 10
67#define BND_SECTION 11
68
69#define BND_NBR 12
70
71#define BOUND_NBR 1024
72#define FACE_NBR 6144 /* Tailles de tableaux */
73#define VERTEX_NBR 16
74#define POINT_NBR 6144
75#ifdef face_normal
76#define VECTOR_NBR 6144
77#endif // face_normal
78
80#ifdef face_edge
81typedef struct
82{
83 Index v0, v1; /* extremites */
84 Index f0, f1; /* faces */
85} Edge;
86#endif // face_edge
87
88#ifdef face_edge
89typedef struct
90{
91 Index nbr; /* nombre d'aretes */
92 Edge *ptr; /* liste dynamique */
93} Edge_list;
94#endif // face_edge
95
96#ifdef face_normal
97typedef struct
98{
99 Index nbr; /* nombre de vecteurs */
100 Vector *ptr; /* liste dynamique */
101} Vector_list;
102#endif // face_normal
103
104typedef struct
105{
106 float xmin, xmax; /* bornes sur l'axe x */
107 float ymin, ymax; /* bornes sur l'axe y */
108 float zmin, zmax; /* bornes sur l'axe z */
109} Bounding_box;
110
111typedef struct
112{
113 Index nbr; /* nombre de scenes */
114 Bound_scene *ptr; /* liste dynamique */
115} Bound_scene_list;
116
117void free_Bound(Bound *bp);
118void free_huge_Bound(Bound *bp);
119void free_Bound_scene(Bound_scene *bsp);
120void malloc_Bound(Bound *bp, Type type, int polygonal, Index fn, Index pn);
121void malloc_huge_Bound(Bound *bp);
122void malloc_Bound_scene(Bound_scene *bsp, const char *name, Index bn);
123END_VISP_NAMESPACE
124#endif
125#endif