Skip to content

Latest commit

 

History

History
74 lines (64 loc) · 1.86 KB

README.md

File metadata and controls

74 lines (64 loc) · 1.86 KB

lfspolygon

Use LFS Polygon Draw to identify new areas (streets) without the use of nodes on opened track like FE1X FE1Y (LFS 0.5 Z30 and higher) used jsDraw2D - http://jsdraw2d.jsfiction.com/

C++ code to find point in polygon

float x,y; // curent pozition

float polyX[] // array of X polygon points
float polyY[] // array of Y polygon points

int polySides // count of points


bool Check_Pos(int polySides,float polyX[],float polyY[],float x,float y)
{

    int      i, j=polySides-1 ;
    bool  oddNodes=false     ;

    for (i=0; i<polySides; i++)
    {
        if (polyY[i]<y && polyY[j]>=y
                ||  polyY[j]<y && polyY[i]>=y)
        {
            if (polyX[i]+(y-polyY[i])/(polyY[j]-polyY[i])*(polyX[j]-polyX[i])<x)
            {
                oddNodes=!oddNodes;
            }
        }
        j=i;
    }
    return oddNodes;
}

PHP code to find point in polygon(For use in PRISM plugins)

public function isInPoly($X, $Y, $Poly)
{
    $polySides = count($Poly);
    $j = $polySides - 1;
    $oddNodes = false;

    for ($i=0; $i < $polySides; $i++)
    {
        if ($Poly[$i]['y'] < $Y && $Poly[$j]['y'] >= $Y || $Poly[$j]['y'] < $Y && $Poly[$i]['y'] >= $Y)
        {
            if ($Poly[$i]['x'] + ($Y - $Poly[$i]['y']) / ($Poly[$j]['y'] - $Poly[$i]['y']) * ($Poly[$j]['x'] - $Poly[$i]['x']) < $X)
                $oddNodes = !$oddNodes;
        }
        $j = $i;
    }
    return $oddNodes;
}

C# code to find point in polygon

public static bool Check_Pos(int polySides, int[]polyX, int[]polyY, float x, float y) {
	int i,
	j = polySides - 1;
	bool oddNodes = false;

	for (i = 0; i < polySides; i++) {
		if (polyY[i] < y && polyY[j] >= y || polyY[j] < y && polyY[i] >= y) {
			if (polyX[i] + (y - polyY[i]) / (polyY[j] - polyY[i]) * (polyX[j] - polyX[i]) < x) {
				oddNodes = !oddNodes;
			}
		}
		j = i;
	}
	return oddNodes;
}