首页 > 后端开发 > 正文

PHP算法:如何判断一个已知坐标点存在于一个多边形内

2025-02-12 05:07:23 | 我爱编程网

最近经常有小伙伴私信询问PHP算法:如何判断一个已知坐标点存在于一个多边形内相关的问题,今天,我爱编程网小编整理了以下内容,希望可以对大家有所帮助。

本文目录一览:

PHP算法:如何判断一个已知坐标点存在于一个多边形内

PHP算法:如何判断一个已知坐标点存在于一个多边形内

我爱编程网(https://www.52biancheng.com)小编还为大家带来PHP算法:如何判断一个已知坐标点存在于一个多边形内的相关内容。

在多边性的存储中,每一个多边形都是由一系列连续的点组成,例如保存为数组Polygon[5],表示这个多边形是由5个点组成,这5个点顺序地存储在了数组Polygon之中。就如同走路一般地划线,从数组的第一个点连到第五个点,多边行就构造出来了。
在图形编程中,坐标的利用是不可忽视的。在这里判断一个点是否在多边行内部(可以包括线上)就要利用到各个点的坐标关系。下面开始讨论具体的方法。
对任何事物的分析,我们应该遵守由简入繁的原则,这样才能提高条理性,少犯错误。我们先判断一个点是否在一个三角形内部。一个三角形在一个坐标系(譬如由A、B、C三点组成)中,我们可以通过计算它的有向面积来判断A、B、C三点在坐标系中的顺逆。当然,在此之前我们必须先订立一套计算面积的规则。比如,在笛卡尔坐标系中,我们利用:
S=
((A.x-B.x)*(A.y+B.y)+(B.x-C.x)*(B.y+C.y)+(C.x-A.x)*
(C.y+B.y))/2 ---------------------------------- <1>来计算三角形的有向
面积。规则即是:从第一点开始,用前一点横坐标减后一点横坐标与两坐标之和的乘积求梯形面积,直到完成多边性的封闭,得到三角形的有向面积。此时,如果求出的值是正的(S>0),则得出A->B->C为逆时针,否则为顺时针。到这里,我们知道如何判断一个三角形的顺逆的方法。
对于凸多边形而言(以三角形ABC为例),假设存在一个点D,若这个点在三角形的内部,则以该点为起点,和原多边形的任意两个连续的且尊照多边形组成方向的点(如DAB、DBC、DCA)组成的三角形讲都是一个方向,如DAB和DBC都是顺时针方向。若这个点在三角形的外部,则会出现DAB、DBC、DCA三个三角形方向不一致的情形,即其中有一个不同于另外两个(如一个顺,两个逆)。到这里我们就知道了如何判断一个点在一个三角形内部的算法,总结一下就是通过判断该点同三角形连续两点组成三角形的顺逆性(归于面积的正负)来得到结果的。
实际上,对于其他的凸多边性也可以用一样的方法,只是这个时候判断的三角形的数目增加了,不管怎么样,只要点在多边形内部他们的顺逆都是一样的。对于凹多边形而言,情况就要相对复杂一些了。此时,判断一个点是否在其内部的计算量会增加比较多。具体算法如下:此时三角形一个个的判断可能会失效,我们应当两个同时判断。即判断该点是否同时在多边形的连续两个三角形之中,相当于是求两个三角形的交集,直到完成多边形封闭。例如,判断P点是否在多边形ABCD之中,依次判断P是否在ABC-BCD、BCD-CDA、CDA-DAB、DAB-ABC各个成对三角形中,P在ABC-BCD中表示P在ABC-BCD的交集之中。这样就可以判断一个点是否在一个凹多边形内部了。

PHP算法:如何判断一个已知坐标点存在于一个多边形内

php将二维数组以直角坐标系显示出来

//代码直接运行即可
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
$array=array(
'1'=>array('1'=>'3','2'=>'4','3'=>'2','5'=>'8'),
'4'=>array('1'=>'3','3'=>'4','5'=>'2','6'
=>'8'),
'5'=>array('3'=>'7'),
);

for($i=1;$i<=6;$i++){
    for($ii=1;$ii<=6;$ii++){
        if($array[$i][$ii]){
            echo $array[$i][$ii];
        }else{
            echo '&nbsp;';
        }
    }
    echo '<br />';
}
?>

PHP算法:如何判断一个已知坐标点存在于一个多边形内

我爱编程网(https://www.52biancheng.com)小编还为大家带来PHP算法:如何判断一个已知坐标点存在于一个多边形内的相关内容。

1。累计角度法
过此点连接多边形的每一顶点,各相邻边角度之和为360度,则此点在多边形内。
否则为0度,在多边形外部。

2。射线法
过此点向任意角度发一条射线,若与多边形的各条边交点个数之和为偶数,则此点在
多边形之外,否则在多边形之内。
若有交点为多边形顶点则要另选一条射线重算。 我爱编程网

以上就是我爱编程网小编整理的内容,想要了解更多相关资讯内容敬请关注我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
标签: PHP
与“PHP算法:如何判断一个已知坐标点存在于一个多边形内”相关推荐
PHP中如何判断一个数据已经存在于数据库中
PHP中如何判断一个数据已经存在于数据库中

PHP中如何判断一个数据已经存在于数据库中材料/工具:电脑、PHP1、首先,创建一个方法function来供调用。2、先判断id是否为0,为0则是不存在这条数据的。(假设判断数据库的数据是否存在相同id的数据)3、然后写sql语句,能查询对应id的数据是否存在了。4、然后调用查询数据库的方法,判断返回来的结果是否为空。不为空则是数据已存在。5、如果是判断数

2025-02-12 16:32:10
php判断翻转函数 php判断一个类里面的某个函数是否存在
php判断翻转函数 php判断一个类里面的某个函数是否存在

php判断一个类里面的某个函数是否存在1、首先需要新建一个246.php。2、然后需要按照图示代码输入php网页的结构(&lt;?php?&gt;)。3、然后需要按照图示代码声明PHP与浏览器交互的文件类型和编码。4、function_exists()函数的作用:如果函数已被定义就返回TRUE,如图所示为其语法结构。5、然后需要按照图示代码使用function_ex

2024-11-23 19:56:05
PHP字符串判断某个字符是否存在。 php 判断文件是否存在
PHP字符串判断某个字符是否存在。 php 判断文件是否存在

php字符串查询是否存在的实现方法php字符串查询是否存在的实现方法:1、使用【strstr】函数搜索一个字符串在另一个字符串中的第一次出现;2、通过【stristr】函数查找字符串在另一个字符串中第一次出现的位置;3、使用【strpos】函数判断字符串。推荐:《PHP视频教程》php判断字符串中是否包含指定字符串的方法编写程序的时候,经常要处理字符串,最基本就是字符串的查找,在

2024-12-17 06:27:50
PHP中的函数 php判断一个类里面的某个函数是否存在
PHP中的函数 php判断一个类里面的某个函数是否存在

php中function函数的用法在PHP中,function是用于定义和声明函数的关键字。函数是一段可重复使用的代码块,它封装了一系列操作或逻辑,并可以通过函数名进行调用和执行。通过使用函数,可以将代码模块化,提高代码的可读性、可维护性和重用性。在PHP中,function关键字用于定义和声明函数。函数是一段可重复使用的代码块,它封装了一系列操作或逻辑,并可以通过函数名进行调用和执行,

2024-10-22 09:11:05
PHP字符串判断某个字符是否存在。 php 判断在不在数组中 in array
PHP字符串判断某个字符是否存在。 php 判断在不在数组中 in array

PHP字符串判断某个字符是否存在。在PHP中,判断字符串中是否存在特定字符有三种常用的方法。首先,你可以使用`in_array()`函数,该函数接受一个值和一个数组作为参数,并可选地检查数据类型。例如:$arr=array('可以','如何','方法','知道','没有','不要');如果要查找"如何2"是否在数组中,可以这样操作:$isin=in_array("如何2",

2024-10-13 14:11:15
php判断一个类里面的某个函数是否存在(php验证是否为两位小数)
php判断一个类里面的某个函数是否存在(php验证是否为两位小数)

php判断一个类里面的某个函数是否存在1、首先需要新建一个246.php。2、然后需要按照图示代码输入php网页的结构(&lt;?php?&gt;)。3、然后需要按照图示代码声明PHP与浏览器交互的文件类型和编码。4、function_exists()函数的作用:如果函数已被定义就返回TRUE,如图所示为其语法结构。5、然后需要按照图示代码使用function_ex

2024-11-24 19:34:13
一个Java程序,若没有public类,文件名如何命名?是否可以存在多个main()方法?如何运行?
一个Java程序,若没有public类,文件名如何命名?是否可以存在多个main()方法?如何运行?

1,java程序的运行环境简称之为________.也称为构造器),程序块以及内部类.java程序的运行环境简称之为JRE。JRE全称JavaRuntimeEnvironment,由太阳微系统所研发,JRE可以让计算机系统运行Java应用程序(JavaApplication)。JRE的内部有一个Java虚拟机(JavaVirtualMachine,JVM)以及一些标准的类别函数库(C

2024-06-16 04:40:47
PHP字符串判断某个字符是否存在。(PHP filter_has_var定义和用法)
PHP字符串判断某个字符是否存在。(PHP filter_has_var定义和用法)

PHP字符串判断某个字符是否存在。在PHP中,判断字符串中是否存在特定字符有三种常用的方法。首先,你可以使用`in_array()`函数,该函数接受一个值和一个数组作为参数,并可选地检查数据类型。例如:$arr=array('可以','如何','方法','知道','没有','不要');如果要查找"如何2"是否在数组中,可以这样操作:$isin=in_array("如何2",

2025-02-03 04:49:14