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