Hi! (beginner)

In my code below, the pxx and the pyy arrays provide circular reference points around my test XY point for an early "warning zone" .... sounding off a beeper.

This code works, but being hard coded ..... makes it hard to change. Is there a better way to create this "circle of points"?

ie: lets say I want a 3ft circle of points around my test point, I just enter a "3" and the code calculates the 8 circle point coordinates into the array for me.

Thanks!




Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>




int main(int argc, char** argv) {
   


int bi = 8; //Set Boundry loop indexing variable (Number of Points in polygon)
int ci = 9; // Set loop indexing for 8 circle points plus the test point


float x[bi];
float y[bi];
float pxx[ci];
float pyy[ci];


float px=16;// Real Test X location point
float py=13.77; // Real Test Y location point
 
/* The coordinates of the test point */
pxx[0]=px;// Real Test X location point
pyy[0]=py; //Real Test Y location point


/*8 X,Y points circled around the real XY location for a circular WARNING ZONE)*/
pxx[1] = px;        
pyy[1] =(py+1);


pxx[2] = px;
pyy[2] =(py-1);


pxx[3] =(px+1);
pyy[3] = py;


pxx[4] =(px-1);
pyy[4] = py;


pxx[5] =(px+.75);
pyy[5] =(py+.75);


pxx[6] =(px+.75);
pyy[6] =(py-.75);


pxx[7] =(px-.75);
pyy[7] =(py+.75);


pxx[8] =(px-.75);
pyy[8] =(py-.75);




float x1;
float x2;
float k;


/* The points creating the polygon (INVISIBLE FENCE YARD BOUNDRY) */      
x[0] = 7;      y[0] = 22;      
x[1] = 10;     y[1] = 10;      
x[2] = 7;      y[2] = 2;       
x[3] = 15;     y[3] = 7;       
x[4] = 21;     y[4] = 6;       
x[5] = 30;     y[5] = 14;      
x[6] = 22;     y[6] = 18;      
x[7] = 20;     y[7] = 26;  


int armedflag = 0; 
int cnt = 0;


int status_a = 0;
int status_b = 0; 
int status_c = 0;  






for ( int v = 0; v < 30; v++ ){ // Simulated interrupt from GPS (once every second)




for ( int c = 0; c < ci; c++ ){


    
int crossings = 0;            
/* Iterate through each line */
for ( int i = 0; i < bi; i++ ){
   
  
    /* This is done to ensure that we get the same result when
           the line goes from left to right and right to left */
        if ( x[i] < x[ (i+1)%bi ] ){
                x1 = x[i];
                x2 = x[(i+1)%bi];
        } else {
                x1 = x[(i+1)%bi];
                x2 = x[i];
                          
        }
       
        /* First check if the ray is possible to cross the line */
        if ( pxx[c] > x1 && pxx[c] <= x2 && ( pyy[c] < y[i] || pyy[c] <= y[(i+1)%bi] ) ) {
                static const float eps = 0.000001;
 
                /* Calculate the equation of the line */
                float dx = x[(i+1)%bi] - x[i];
                float dy = y[(i+1)%bi] - y[i];
                float k;
 
                if ( fabs (dx) < eps ){
                    k =  INFINITY; //REM: <include math.h> !!!!
                } else {
                        k = dy/dx;
                }
 
                float m = y[i] - k * x[i];
               
                /* Find if the ray crosses the line */
                float y2 = k * pxx[c] + m;
                if ( pyy[c] <= y2 ){
                        crossings++;
                        
       }
    }
}


           
if (( crossings % 2 == 1)&& (c == 0)) 
               {
    
               printf("The dog is OK INSIDE the yard\n");
               status_a = 1;
               armedflag = 1;               
               
               }
    
if (( crossings % 2 != 1)&& (c > 0)&& (armedflag == 1))      
               {
               printf("BEEP!! BEEP!! BEEP!! The dog is IN THE WARNING ZONE\n");
               status_b = 1;
                              
               } 
if (( crossings % 2 == 1)&& (c > 0) && (status_a == 0)) 
               {
               armedflag = 0;
               }
           
               
if (( crossings % 2 != 1)&& (c == 0 )&& (armedflag == 1))     
               {
               printf("ZAP!! ZAP!! ZAP!! The dog is OUTSIDE the yard\n");
               status_c = 1;
               armedflag = 0;
                  
    } 
   
  }
    
    printf("Armed Flag: %d\n",armedflag);
    printf("Status_a: %d\n",status_a);
    printf("Status_b: %d\n",status_b);           
    printf("Status_c: %d\n",status_c);  
    
 }
 
}