代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Js
】
判断一个多边形是不是凸多边形的js算法
作者:
泰鑫
/ 发布于
2017/11/20
/
822
/* * 凸多边形的判断,内角和如果不等于(n-2)*180,即不是凸多边形 */ var concavePolygon = concavePolygon || { judge: function (data) { var interiorAngle = 0; for (var i = 0, l = data.length; i < l; i++) { var vector_1 = {}, vector_2 = {}; if (i == l -1) { vector_1.x = data[l-1].x - data[0].x; vector_1.y = data[l-1].y - data[0].y; vector_2.x = data[1].x - data[0].x; vector_2.y = data[1].y - data[0].y; } else if (i == l -2) { vector_1.x = data[i].x - data[l -1].x; vector_1.y = data[i].y - data[l -1].y; vector_2.x = data[0].x - data[l -1].x; vector_2.y = data[0].y - data[l -1].y; } else{ vector_1.x = data[i].x - data[i+1].x; vector_1.y = data[i].y - data[i+1].y; vector_2.x = data[i+2].x - data[i+1].x; vector_2.y = data[i+2].y - data[i+1].y; } interiorAngle += this.vectorAngle(vector_1.x, vector_2.x, vector_1.y, vector_2.y); } if (isNaN(interiorAngle)) { return "repeat"; } else if (interiorAngle >= ((l-2)*180-1) && interiorAngle <= ((l-2)*180+1)){ return true } else { return false; } }, vectorAngle: function (x1, x2, y1, y2) { var a = x1*x2+y1*y2; var b = Math.sqrt(Math.pow(x1, 2) + Math.pow(y1, 2)); var c = Math.sqrt(Math.pow(x2, 2) + Math.pow(y2, 2)); var d = b*c; var cos = a/d; var acos = (Math.acos(cos)/Math.PI)*180; return acos; } }; html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" type="text/css" href="index.css"/> </head> <body onselectstart="return false"> <script src="jquery-1.10.2.min.js"></script> <canvas id="canvas" width="600" height="500" class="canvas"></canvas> <div class="start" id="start">开始绘制</div> <div class="checkborder" id="checkborder">切换边</div> <div class="checkDeriction" id="checkDeriction">切换方向</div> <div class="clear" id="clear">全部清空</div> <script src="plug.js"></script> <script src="judgeConcavePolygon.js"></script> <script> $("#canvas").drawCoverArrHPP({ $start : $("#start"), $checkDeriction : $("#checkDeriction"), $clear : $("#clear"), $checkborder : $("#checkborder"), $cxt : "canvas", $arrPosition : { total: 3, left: 1 }, $callBack: function (data) { console.log(data); var jude = concavePolygon.judge(data); if (!!jude) { alert("是凸多边形!"); } else{ alert("不是凸多边形!"); } } }); </script> </body> </html>
试试其它关键字
同语言下
.
Jquery搜索框获取回车事件
.
H5页面添加倒计时,然后自动跳转
.
通过user-agent判断h5页面是在哪个手机App(QQ、微信
.
nginx 禁止未绑定的域名访问
.
JavaScript 获取按键,并屏蔽系统 Window 事件
.
H5之只允许微信浏览器打开,禁止从外部浏览器访问
.
微信打开网址添加在浏览器中打开提示的办法
.
实现JS复制、粘贴,Chrome/Firefox下可用
.
video视频播放,play()、pause()、duration时长、onen
.
HTML5实现MP3上传前的预览和播放时长的获取
可能有用的
.
Jquery搜索框获取回车事件
.
H5页面添加倒计时,然后自动跳转
.
通过user-agent判断h5页面是在哪个手机App(QQ、微信
.
nginx 禁止未绑定的域名访问
.
JavaScript 获取按键,并屏蔽系统 Window 事件
.
H5之只允许微信浏览器打开,禁止从外部浏览器访问
.
微信打开网址添加在浏览器中打开提示的办法
.
实现JS复制、粘贴,Chrome/Firefox下可用
.
video视频播放,play()、pause()、duration时长、onen
.
HTML5实现MP3上传前的预览和播放时长的获取
泰鑫
贡献的其它代码
(
14
)
.
一个检查跑批是否成功的Shell
.
判断一个多边形是不是凸多边形的js算法
.
将UTC时间转换成美国东部时间(EST)
.
多 Notes 文档中附件批量汇总到 Notes 文档中
.
查询显示已重新编译的前 25 个存储过程
.
jquery 表格(展开和折叠列表项)
.
实现复选框的全选与取消
.
jxl导入导出Excel工具类
.
邮件发送工具类
.
八皇后问题
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3