逻辑是:用户正在编辑一个现有的多边形区域,其中极值点存储在数据库中。编辑后,修改后的坐标将在数据库中更新。现在,我需要找出在修改后的多边形中是否存在某个点。为此,我假设我必须做服务器端检查。客户端检查很容易由javaScript完成,我已经完成了。我真正的问题是在服务器端检查这个。有什么建议吗?
最佳答案
我已经在PHP中实现了多边形中的服务器端点。
<?php
//Point-In-Polygon Algorithm test parameters
$polySides = 4; //how many corners the polygon has
$polyX = array(4,9,11,2);//horizontal coordinates of corners
$polyY = array(10,7,2,2);//vertical coordinates of corners
$x = 3.5;//point
//$y = 13.5;//Outside
$y = 3.5;//Inside
function pointInPolygon($polySides,$polyX,$polyY,$x,$y) {
$j = $polySides-1 ;
$oddNodes = 0;
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; }
//Test
if (pointInPolygon($polySides,$polyX,$polyY,$x,$y)){
echo "Is in polygon!";
}
else echo "Is not in polygon";
?>
可以对其进行修改以适合所选语言,即C#