点与不规则图形关系判断

 1 <html>
 2 <head>
 3 <meta http-equiv="Content-Type" content="text/html; charset=gbk">
 4 <title>img usemap属性</title>
 5 </head>
 6 <script>
 7
 8 function isPointInLine(point,linePoint1,linePoint2)
 9 {
10     //是否一个点向x轴的射线穿透线段,有交点
11     var maxY=(linePoint1.y>linePoint2.y)?linePoint1.y:linePoint2.y;
12     var minY=(linePoint1.y<linePoint2.y)?linePoint1.y:linePoint2.y;
13     //alert("maxY" + maxY);
14     //alert("minY = " + minY);
15     var re=false;
16     if(point.y<maxY && point.y>=minY)
17     {
18         a1 = point.x;
19         a2 = (linePoint2.x-linePoint1.x)*(point.y-linePoint1.y)/(linePoint2.y-linePoint1.y);
20         //alert(a1);
21         //alert(a2);
22         //alert(a1 <= a2);
23         if(parseFloat(point.x) <= parseFloat(( linePoint1.x+(linePoint2.x-linePoint1.x)*(point.y-linePoint1.y)/(linePoint2.y-linePoint1.y) )) )
24         {
25         re=true;
26         }
27     }
28     //alert("point :" + point.x + ":" + point.y + ";")
29     //alert("linePoint1 :" + linePoint1.x + ":" + linePoint1.y + ";")
30     //alert("linePoint2 :" + linePoint2.x + ":" + linePoint2.y + ";")
31     //alert(re);
32     return(re);
33 }
34
35 function isPointInPolygon(point,poly)
36 {
37     //是否点在多边形里
38     var crossNum=0;
39     var re=true;
40     for(var i=0;i<poly.length-1;i++)
41     {
42         if(isPointInLine(point,poly[i],poly[i+1]))
43         {
44             crossNum++;
45         }
46     }
47
48     if((crossNum % 2)==0)
49     {
50         re=false;
51     }
52
53     return(re);
54 }
55
56 function clickme()
57 {
58     var pa = document.getElementById("point").value.split(",");
59     var p = {x:pa[0],y:pa[1]};
60
61     var poa = document.getElementById("poly").value.split(",");
62     var po = new Array();
63     for(var i=0;i<poa.length/2;i++){
64         po[i]={x:poa[2*i],y:poa[2*i+1]};
65     };
66     //for(var i=0;i<po.length;i++)
67     //{
68     //    alert(po[i].x);
69     //    alert(po[i].y);
70     //}
71
72     //alert(p.x);
73     //alert(p.y);
74
75     alert(isPointInPolygon(p,po));
76 }
77 </script>
78
79 <body>
80     原理:从要判断的点向x轴发射一条射线,如果射线与多边形的边有偶数次相交,那么点不在多边形内;奇数次相交,那么点在多边形内(<font color="red">*此处的坐标是平面坐标</font>)
81     <br>
82 <input type="text" id="point" value="0.5,0.49" />点的横竖坐标,用逗号分隔
83 <br>
84 <input type="text" id="poly" value="0,0,0.75,0.75,1,0,1,1,0,1" />按照逆时针方向 多边形点的横竖坐标坐标0
85 <input type="button" id="btn" value="点击我" onclick="clickme();">
86 </body>
87 </html>

原理:

 从要判断的点向x轴发射一条射线,如果射线与多边形的边有偶数次相交,那么点不在多边形内;奇数次相交,那么点在多边形内
时间: 2024-10-10 08:59:05

点与不规则图形关系判断的相关文章

qt button以及label实现不规则图形

1.方法1:准备一张边界是透明的不规则图形 QPushButton * pbtn = new QPushButton;    pbtn->setStyleSheet("QPushButton{border:0px;}");//这句务必加上,否则看到的就是矩形了,而不是不规则图形了    pbtn->setText("aaa");    pbtn->setIcon(QPixmap("://louDong.png"));    pb

JTS Geometry关系判断和分析

关系判断 Geometry之间的关系有如下几种: 相等(Equals): 几何形状拓扑上相等. 脱节(Disjoint): 几何形状没有共有的点. 相交(Intersects): 几何形状至少有一个共有点(区别于脱节) 接触(Touches): 几何形状有至少一个公共的边界点,但是没有内部点. 交叉(Crosses): 几何形状共享一些但不是所有的内部点. 内含(Within): 几何形状A的线都在几何形状B内部. 包含(Contains): 几何形状B的线都在几何形状A内部(区别于内含) 重叠

POJ1094 Sorting It All Out(拓扑排序)每输入条关系判断一次

Sorting It All Out Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 29182   Accepted: 10109 Description An ascending sorted sequence of distinct values is one in which some form of a less-than operator is used to order the elements from s

使用CSS 3创建不规则图形 文字围绕

前言 CSS 创建复杂图形的技术即将会被广泛支持,并且应用到实际项目中.本篇文章的目的是为大家开启它的冰山一角.我希望这篇文章能让你对不规则图形有一个初步的了解. 现在,我们已经可以使用CSS 3 常见不规则复杂图形了(点击链接查看),如下图所示: 使用CSS创建的图形,无法内置文字或实现文字环绕效果.因此,如何实现不规则图形和文字复杂布局也成为了一个热议话题. 今天我们就来介绍一下如何实现这个效果.文章中我们将阐述如何使用 CSS创建不规则图形,实现不规则的文本布局.学会如何创建不规则图形之后

(转)第04节:Fabric.js用路径画不规则图形

在Canvas上画方形.圆形.三角形都是很容易的,只要调用fabric对应的方法就可以了,但这些都是规则的图形,如果你想画一个不规则的图形,这时候你可以用fabric.js提供的路径绘图方法.所谓路径绘图就是用点和线的移动的方式进行绘图.通过对 线.曲线.弧的应用你可以非常复杂的图形. 我们先来看一段的代码: var canvas = new fabric.Canvas('canvas'); var path = new fabric.Path('M 0 0 L 200 100 L 170 20

poj 2318 TOYS (点与线段位置关系判断)

TOYS Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10848   Accepted: 5206 Description Calculate the number of toys that land in each bin of a partitioned toy box. Mom and dad have a problem - their child John never puts his toys away w

自定义点与地图覆盖物上的关系判断处理

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>GeoUtils示例</title> <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.2"&

Sorting It All Out(关系判断排序算法)

今天的题目是英文,如果懒得看的可以直接看下面我凭借过了大学英语32级的水平的精简翻译. Description(题目描述) An ascending sorted sequence of distinct values is one in which some form of aless-than operator is used to order the elements from smallest to largest. Forexample, the sorted sequence A,

web前端入门到实战:css实现不规则图形的阴影(如对话框)

在日常开发中会使用带箭头的弹出对话框,有时为了美观或者突出,会添加一个阴影.由于图形不规则且可能是由多个元素拼接而成的,这样box-shadow属性可能不能满足需求.这里推荐一个类似的属性,filter下的drop-shadow. <div class="triangle"> </div> .triangle{ width: 200px; height: 60px; position: relative; filter: drop-shadow(0 0 5px