mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-06-04 22:17:01 +08:00
[nav] remove old unused flight zone checking
now performed with sectors at compilation time
This commit is contained in:
committed by
Felix Ruess
parent
7881f20b4c
commit
ee42369dda
@@ -1,114 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2007 Arnold Schroeter
|
||||
*
|
||||
* This file is part of paparazzi.
|
||||
*
|
||||
* paparazzi is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* paparazzi is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with paparazzi; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file subsystems/navigation/flightzone.c
|
||||
*
|
||||
* Check whether a point is inside the polygon limiting the competition area.
|
||||
*
|
||||
* todo: - support concave/convex polygons
|
||||
* - sort points automatically
|
||||
* - minimize size of Orthogonal[]
|
||||
*
|
||||
*
|
||||
* limitations: - boundary polygon has to be convex
|
||||
* - points have to be ordered clockwise
|
||||
*
|
||||
* author: Arnold Schroeter
|
||||
* history:
|
||||
* 2.9.07 initial version
|
||||
*
|
||||
*/
|
||||
|
||||
#include "flightzone.h"
|
||||
|
||||
typedef struct { COORD_TYPE x;
|
||||
COORD_TYPE y;
|
||||
} POINT;
|
||||
|
||||
POINT Corner[] = {
|
||||
12, 18,
|
||||
12, 25,
|
||||
15, 29,
|
||||
18, 25,
|
||||
18, 18,
|
||||
13.5, 16,
|
||||
0 , 0}; // last corner is a dummy, which must not be deleted!!!
|
||||
|
||||
POINT Orthogonal[20]; // Attention!!! array must be at least as long as Corner[]
|
||||
|
||||
unsigned char bNumberOfCorners = 0;
|
||||
|
||||
/*******************************************************************
|
||||
; function name: vInitIsInsideBoundaries
|
||||
; description:
|
||||
;*******************************************************************/
|
||||
void vInitIsInsideBoundaries(void)
|
||||
{
|
||||
unsigned char i;
|
||||
|
||||
bNumberOfCorners = sizeof(Corner)/sizeof(POINT) - 1; // last corner is always a dummy
|
||||
|
||||
Corner[bNumberOfCorners].x = Corner[0].x;
|
||||
Corner[bNumberOfCorners].y = Corner[0].y;
|
||||
|
||||
for (i = 0; i < bNumberOfCorners; i++)
|
||||
{
|
||||
Orthogonal[i].x = Corner[i+1].y - Corner[i].y;
|
||||
Orthogonal[i].y = - (Corner[i+1].x - Corner[i].x);
|
||||
|
||||
#if 0
|
||||
printf("%d: corner (%f, %f), orthogonal (%f, %f)\n",
|
||||
i, Corner[i].x, Corner[i].y,
|
||||
Orthogonal[i].x, Orthogonal[i].y);
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
; function name: iIsInsideBoundaries
|
||||
; description:
|
||||
;
|
||||
; parameters:
|
||||
; returns: 1 if point is inside boundaries
|
||||
; 0 if point is outside boundaries
|
||||
;*******************************************************************/
|
||||
int iIsInsideBoundaries(COORD_TYPE x, COORD_TYPE y)
|
||||
{
|
||||
|
||||
int r = 1;
|
||||
static unsigned char i;
|
||||
|
||||
i = 0;
|
||||
|
||||
while ((i < bNumberOfCorners) && (r == 1))
|
||||
{
|
||||
if (((x - Corner[i].x) * Orthogonal[i].x + (y - Corner[i].y) * Orthogonal[i].y) < 0.)
|
||||
{
|
||||
r = 0;
|
||||
}
|
||||
|
||||
++i;
|
||||
}
|
||||
|
||||
return r;
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2007 Arnold Schroeter
|
||||
*
|
||||
* This file is part of paparazzi.
|
||||
*
|
||||
* paparazzi is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* paparazzi is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with paparazzi; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file subsystems/navigation/flightzone.c
|
||||
*
|
||||
* Check whether a point is inside the polygon limiting the competition area.
|
||||
*
|
||||
* author: Arnold Schroeter
|
||||
* history:
|
||||
* 2.9.07 initial version
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef FLIGHTZONE_H
|
||||
#define FLIGHTZONE_H
|
||||
|
||||
#define COORD_TYPE float
|
||||
|
||||
void vInitIsInsideBoundaries(void);
|
||||
int iIsInsideBoundaries(COORD_TYPE x, COORD_TYPE y);
|
||||
|
||||
#endif /* FLIGHTZONE_H */
|
||||
Reference in New Issue
Block a user