map判断当前点,是否在某一个已知数组构成的平面内

window.IsPointInRegion = function (p, points) { //判断点是否在面内,p为当前点,points为构成平面的点数组
points = points || {};
var nCross = 0;
var p1 = {};
var p2 = {};
var pointCount = points.length;
for (var i = 0; i < points.length; i++) {
p1 = points[i];
p2 = points[(i + 1) % pointCount];
// 求解 y=p.y 与 p1p2 的交点
if (p1.Cy == p2.Cy) // p1p2 与 y=p0.y平行
continue;
if (p.Cy < Math.min(p1.Cy, p2.Cy)) // 交点在p1p2延长线上
continue;
if (p.Cy >= Math.max(p1.Cy, p2.Cy)) // 交点在p1p2延长线上
continue;
// 求交点的 X 坐标 --------------------------------------------------------------
var x = (p.Cy - p1.Cy) * (p2.Cx - p1.Cx) / (p2.Cy - p1.Cy) + p1.Cx;
if (x > p.Cx)
nCross++; // 只统计单边交点
}
// 单边交点为偶数,点在多边形之外 ---
return (nCross % 2 == 1);
}

时间: 2024-07-30 00:58:26

map判断当前点,是否在某一个已知数组构成的平面内的相关文章

[转]如和判断你的领导是否是一个值得你追随的领导.

跟对一个领导,对于你的一生来说,应该是一个巨大的财富.那么如何来判断你的领导是否是一个值得你追随的领导呢? 1. 你的领导总是传递给你负面的消息每周一例会,你都会从你的领导那听到坏消息.公司对你们的部门不满了,他对项目进展不满了,手下人如何不努力了,等等,他从不关注团队的成就,他只关心他自己在大领导眼中的形象. 2. 你没有得到过他的鼓励他经常批评你,但一个好的领导者应该鼓励追随他的人. 如果你觉得你工作已经很尽力了,但最终还是得不到鼓励,你一定是在为一个错误的领导工作. 3. 你的领导从不对你

判断股票强弱最有效的一个方法

简单地说, (1)大盘指数涨的时候,该股票涨得比大盘指数大,当大盘指数调整时,该股票指数调整得很少 . (2)大盘指数一波一波下跌,但是该股票却跌不下去,没有跟谁指数下跌,往往这种时候,当大盘涨一点点的时候,该股票就会大涨. (3)大盘连续大涨,而该股票却一直下跌,这种股票一定要及时清理,比如最近的600077宋都股份,大盘涨了6个多点,它还跌了6个多点.这种股票千万要不得. 判断股票强弱最有效的一个方法

Petrozavodsk Winter-2013. Ural FU Contest Problem D. Five Palindromes manacher、一个串切割成5个回文子串、优化

Ural Federal University Contest, SKB Kontur Cup Petrozavodsk Winter Training Camp, Saturday, February 2, 2013 Problem D. Five Palindromes Input file: input.txt Output file: output.txt Time limit: 2 seconds (3 seconds for Java) Memory limit: 256 mebib

170319 剑指offer 1.把一个字符串转化成整数(简单问题的全面性考虑)

工作的时间越长,越感觉基础的重要性,当我们对程序的框架结构越来越熟悉的时候,越会注意这一点,在工作当中,功能的实现是重要的,但是代码的健壮性,重用性,与扩展性确往往更为重要,在学习新技术的同时,我们或许应该抽出一点时间,去思考代码可能出现的问题. 关于剑指offer的这本书,可能所有刚毕业找工作的人,或者准备找工作的人都曾经看过,但是当时我们面对一些东西的时候心情过于浮躁,往往忽视了简单的却又十分重要的环节,(ps:也可能只有我是这样) 面试中一道简单的问题(把一个字符串转化成整数) 可能接触c

hdu 2098 分拆素数和(一个偶数拆分成两个不同素数和 拆法数量)

传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2098 分拆素数和 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 46434    Accepted Submission(s): 20210 Problem Description 把一个偶数拆成两个不同素数的和,有几种拆法呢? Input

在平面内,已知一个矩形的四个角坐标,将矩形绕中心点转动一个角度,求旋转后的角坐标.

在平面内,已知一个矩形的四个角坐标,将矩形绕中心点转动一个角度,求旋转后的角坐标.也就是已知半径,求每个点旋转后的坐标. 把旋转前和旋转后的点加上中心点看成一个等腰三角形就好解决了,不用扇形公式,而是用三角形公式.假设矩形的左上角为(left, top),右下角为(right, bottom),则矩形上任意点(x0, y0)绕其中心(xcenter,ycenter)逆时针旋转angle角度后,新的坐标位置(x′, y′)的计算公式为: xcenter = (right - left + 1) /

2.2确定一个字符是否在指定范围内

知识点: 1.大小在两个字符之间 问题: 要确定一个char数据类型中的字符是否在一个范围内,如数字1-5之间,或介于字母A—M之间 解决方案 可以使用Char数据类型内置的比较支持.以下代码显示了如何使用这个内置的比较支持: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namesp

如何把一个正整数分解成质因数相乘(java)

package com.hpu.bai; /** * 此程序用来把一个正整数分解成质因数相乘 如 20 = 2*2*5: * @author bai * */ public class Byprime { public static int prime(int m){ int k =2;int count =0; System.out.print(m+"="); while(k<=m){ if(k == m){ System.out.print(m); count+=1; bre

把一个序列转换成非严格递增序列的最小花费 POJ 3666

1 //把一个序列转换成非严格递增序列的最小花费 POJ 3666 2 //dp[i][j]:把第i个数转成第j小的数,最小花费 3 4 #include <iostream> 5 #include <cstdio> 6 #include <cstdlib> 7 #include <algorithm> 8 #include <vector> 9 #include <math.h> 10 // #include <memory.