Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

बहुभुज PHP में बिंदु खोजें

यह एक फ़ंक्शन है जिसे मैंने दूसरी भाषा से PHP में परिवर्तित किया है:

$vertices_x = array(37.628134, 37.629867, 37.62324, 37.622424);    // x-coordinates of the vertices of the polygon
$vertices_y = array(-77.458334,-77.449021,-77.445416,-77.457819); // y-coordinates of the vertices of the polygon
$points_polygon = count($vertices_x) - 1;  // number vertices - zero-based array
$longitude_x = $_GET["longitude"];  // x-coordinate of the point to test
$latitude_y = $_GET["latitude"];    // y-coordinate of the point to test

if (is_in_polygon($points_polygon, $vertices_x, $vertices_y, $longitude_x, $latitude_y)){
  echo "Is in polygon!";
}
else echo "Is not in polygon";


function is_in_polygon($points_polygon, $vertices_x, $vertices_y, $longitude_x, $latitude_y)
{
  $i = $j = $c = 0;
  for ($i = 0, $j = $points_polygon ; $i < $points_polygon; $j = $i++) {
    if ( (($vertices_y[$i]  >  $latitude_y != ($vertices_y[$j] > $latitude_y)) &&
     ($longitude_x < ($vertices_x[$j] - $vertices_x[$i]) * ($latitude_y - $vertices_y[$i]) / ($vertices_y[$j] - $vertices_y[$i]) + $vertices_x[$i]) ) )
       $c = !$c;
  }
  return $c;
}

अतिरिक्त: अधिक कार्यों के लिए मैं आपको बहुभुज.php वर्ग यहां उपलब्ध का उपयोग करने की सलाह देता हूं .अपने शीर्षों का उपयोग करके कक्षा बनाएं और फ़ंक्शन को कॉल करें isInside इनपुट के रूप में अपने परीक्षण बिंदु के साथ आपकी समस्या को हल करने के लिए एक और कार्य करने के लिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - सुपरटाइप/सबटाइप डिज़ाइन

  2. MySQL में ibdata1 फ़ाइल को कैसे सिकोड़ें/शुद्ध करें?

  3. MySQL क्या इनरजॉइन की कोई सीमा है?

  4. रेडीस्टेडमेंट का उपयोग करके सम्मिलित करें। मैं आईडी को ऑटो-इन्क्रीमेंट कैसे करूं?

  5. mysql- कॉलम में अनुदान कैसे लागू करें?