Perception Tool Kit (PTK) API Guide
grid_iter.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2018 Texas Instruments Incorporated
4  *
5  * All rights reserved not granted herein.
6  *
7  * Limited License.
8  *
9  * Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
10  * license under copyrights and patents it now or hereafter owns or controls to make,
11  * have made, use, import, offer to sell and sell ("Utilize") this software subject to the
12  * terms herein. With respect to the foregoing patent license, such license is granted
13  * solely to the extent that any such patent is necessary to Utilize the software alone.
14  * The patent license shall not apply to any combinations which include this software,
15  * other than combinations with devices manufactured by or for TI ("TI Devices").
16  * No hardware patent is licensed hereunder.
17  *
18  * Redistributions must preserve existing copyright notices and reproduce this license
19  * (including the above copyright notice and the disclaimer and (if applicable) source
20  * code license limitations below) in the documentation and/or other materials provided
21  * with the distribution
22  *
23  * Redistribution and use in binary form, without modification, are permitted provided
24  * that the following conditions are met:
25  *
26  * * No reverse engineering, decompilation, or disassembly of this software is
27  * permitted with respect to any software provided in binary form.
28  *
29  * * any redistribution and use are licensed by TI for use only with TI Devices.
30  *
31  * * Nothing shall obligate TI to provide you with source code for the software
32  * licensed and provided to you in object code.
33  *
34  * If software source code is provided to you, modification and redistribution of the
35  * source code are permitted provided that the following conditions are met:
36  *
37  * * any redistribution and use of the source code, including any resulting derivative
38  * works, are licensed by TI for use only with TI Devices.
39  *
40  * * any redistribution and use of any object code compiled from the source code
41  * and any resulting derivative works, are licensed by TI for use only with TI Devices.
42  *
43  * Neither the name of Texas Instruments Incorporated nor the names of its suppliers
44  *
45  * may be used to endorse or promote products derived from this software without
46  * specific prior written permission.
47  *
48  * DISCLAIMER.
49  *
50  * THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
51  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
52  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
53  * IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
54  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
55  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
56  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
57  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
58  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
59  * OF THE POSSIBILITY OF SUCH DAMAGE.
60  *
61  */
62 #pragma once
63 #ifndef PTK_GRID_ITER_H
64 #define PTK_GRID_ITER_H
65 
66 #include <stdint.h>
67 #include <perception/base/grid.h>
68 
74 #ifdef __cplusplus
75 extern "C" {
76 #endif
77 
87 typedef struct
88 {
90  const PTK_Grid * grid;
91 
93  const PTK_GridRoi * roi;
94 
96  int32_t cx;
97 
99  int32_t cy;
100 
102  int32_t r;
103 
105  int32_t rsq;
106 
108  int32_t cellX;
109 
111  int32_t cellY;
112 
114  int32_t minY;
115 
117  int32_t maxY;
118 
120  int32_t valid;
121 
123 
142  const PTK_Grid *grid,
143  const PTK_GridRoi *roi,
144  int32_t cx,
145  int32_t cy,
146  uint32_t r);
147 
165  uint32_t *cellX,
166  uint32_t *cellY);
167 
168 
176 typedef struct
177 {
179  const PTK_Grid * grid;
180 
184  const PTK_GridRoi * roi;
185 
187  uint32_t cellX;
188 
190  uint32_t cellY;
191 
193  uint32_t minCellX;
194 
196  uint32_t minCellY;
197 
199  uint32_t maxCellX;
200 
202  uint32_t maxCellY;
203 
207  float cx;
208 
212  float cy;
213 
217  float utx;
218 
222  float uty;
223 
226  float vtx;
227 
231  float vty;
232 
234  int32_t valid;
235 
237 
250  const PTK_Grid *grid,
251  const PTK_GridRoi *roi);
268  uint32_t *cellX,
269  uint32_t *cellY);
270 
271 #ifdef __cplusplus
272 }
273 #endif
274 
275 #endif
const PTK_Grid * grid
Definition: grid_iter.h:179
uint32_t minCellY
Definition: grid_iter.h:196
uint32_t minCellX
Definition: grid_iter.h:193
uint32_t PTK_GridIter_PhysBoxGetNext(PTK_GridIter_PhysBox *iter, uint32_t *cellX, uint32_t *cellY)
Get next cell from iterator. When no more cells are available, return 0.
int32_t minY
Definition: grid_iter.h:114
int32_t r
Definition: grid_iter.h:102
void PTK_GridIter_PhysBoxInit(PTK_GridIter_PhysBox *iter, const PTK_Grid *grid, const PTK_GridRoi *roi)
Initialize the iterator.
uint32_t maxCellX
Definition: grid_iter.h:199
Defines a rectangle in a target coordinate system. In local coordinate system, the vertices are (0|0)...
Definition: grid.h:268
void PTK_GridCircleIterInit(PTK_GridCircleIter *iter, const PTK_Grid *grid, const PTK_GridRoi *roi, int32_t cx, int32_t cy, uint32_t r)
Initializes the grid iterator.
int32_t cy
Definition: grid_iter.h:99
float vty
Definition: grid_iter.h:231
float utx
Definition: grid_iter.h:217
uint32_t PTK_GridCircleIterNext(PTK_GridCircleIter *iter, uint32_t *cellX, uint32_t *cellY)
Returns the next cell inside the region of interest.
float cx
Definition: grid_iter.h:207
Grid circle iterators are intended to be mostly opaque structures which can produce a sequence of (x...
Definition: grid_iter.h:87
float vtx
Definition: grid_iter.h:226
const PTK_GridRoi * roi
Definition: grid_iter.h:93
int32_t rsq
Definition: grid_iter.h:105
uint32_t cellX
Definition: grid_iter.h:187
int32_t cellX
Definition: grid_iter.h:108
This defines the common grid functionality which is then used to construct occupancy grids that store...
int32_t valid
Definition: grid_iter.h:120
uint32_t cellY
Definition: grid_iter.h:190
int32_t maxY
Definition: grid_iter.h:117
int32_t cellY
Definition: grid_iter.h:111
Grid box (rectangle) iterators produce a sequence of the cell coordinates which lie inside a rectangl...
Definition: grid_iter.h:176
int32_t valid
Definition: grid_iter.h:234
float uty
Definition: grid_iter.h:222
Grid definition.
Definition: grid.h:233
const PTK_Grid * grid
Definition: grid_iter.h:90
int32_t cx
Definition: grid_iter.h:96
uint32_t maxCellY
Definition: grid_iter.h:202
float cy
Definition: grid_iter.h:212
const PTK_GridRoi * roi
Definition: grid_iter.h:184