/**

* 检查多边形是否包含了某点~

* @param point

* @return

*/

public boolean containsPoint(BYPoint point) {

int verticesCount = vertices.size();

int nCross = 0;

for (int i = 0; i < verticesCount; ++ i) {

BYPoint p1 = vertices.get(i);

BYPoint p2 = vertices.get((i + 1) % verticesCount);

// 求解 y=p.y 与 p1 p2 的交点

if ( p1.getY() == p2.getY() ) { // p1p2 与 y=p0.y平行

continue;

}

if ( point.getY() < Math.min(p1.getY(), p2.getY()) ) { // 交点在p1p2延长线上

continue;

}

if ( point.getY() >= Math.max(p1.getY(), p2.getY()) ) { // 交点在p1p2延长线上

continue;

}

// 求交点的 X 坐标

float x = (point.getY() - p1.getY()) * (p2.getX() - p1.getX())

/ (p2.getY() - p1.getY()) + p1.getX();

if ( x > point.getX() ) { // 只统计单边交点

nCross++;

}

}

// 单边交点为偶数,点在多边形之外

return (nCross%2==1);

}

点在多边形内 java_判断点在多边形内部的方法(Java版)相关推荐

  1. 多边形碰撞检测(判断点在多边形内)

    点与规则的矩形或者等边.等腰三角形等的碰撞检测很简单,本文主要是介绍"点与多边不规则图形的碰撞检测". 如图,这个多边形已经相当复杂,包含凸和凹,该如何解决呢? 结论:使用交点数判 ...

  2. 几何基础之点在多边形内的判断

    1.判断点在三角形的内外 即可判定点P在内. 三角形面积计算公式:. 2.判断点在多边形的内外 方法一:扫描法 以p点做一条射线,让其与多边形一个顶点相交,再判断是否与多边形上点共线当然这个点不可能是 ...

  3. php 判断点在多边形内,PHP判断点是否在多边形区域内外

    PHP判断点是否在多边形区域内外: 根据数学知识的射线法,射线与几何多边形相交的点的个数为奇数则是在几何内部: 偶数在外部:/** * Created by PhpStorm. * function: ...

  4. 点在多边形内的判断(射线法)

    这个博客写得非常好 转载于:https://www.cnblogs.com/justPassBy/p/5205310.html

  5. 链表的基本操作 java_详细实现单链表的基本操作【Java版】

    节点类 static Node head=new Node(); static class Node{ int data; Node next; public Node() {//无参构造方法,默认d ...

  6. 蚂蚁爬绳java_腾讯面试题——蚂蚁爬行(Java版)

    /** * 蚂蚁类,用于记录蚂蚁的状态及控制蚂蚁行为 */ public class Ant { /** * 蚂蚁爬行方向枚举值 */ public interface Direction { /** ...

  7. 判断一个数是否是素数(Java版)

    目录 素数的定义 求解素数 素数判定法1: 遍历从2到n-1的所有数字,判断是否有可以被n整除的数,如果没有,则为素数. 优化法2: 判定的范围改为[2 -,n/2].当 i>n/2 时,则判定 ...

  8. C语言实验——判断素数(循环结构)(Java版)

    Problem Description 从键盘上输入任意一个正整数,然后判断该数是否为素数. 如果是素数则输出"This is a prime." 否则输出"This i ...

  9. 百度编辑器图片上传 java_百度编辑器粘贴图片自动上传到服务器(Java版)

    Chrome+IE默认支持粘贴剪切板中的图片,但是我要发布的文章存在word里面,图片多达数十张,我总不能一张一张复制吧? Chrome高版本提供了可以将单张图片转换在BASE64字符串的功能.但是无 ...

最新文章

  1. [转] JavaScript仿淘宝智能浮动
  2. OKR 落地需要相关工具的辅助吗?
  3. R语言构建生存分析(survival analysis)模型示例
  4. 在Kaggle上赢得大数据竞赛的技巧和窍门
  5. php数组的值传递给另一个数组,如何把一个固定数组的值传递给另外一个数组
  6. opencv 把3通道图像转成单通道_小强学Python+OpenCV之-1.4.3图像(矩阵)加减运算
  7. RFID 射频 RFID工作流程 自动识别技术 工作频段 短距离无线通信技术
  8. 循环序列模型 —— 1.8 带有神经网络的梯度消失
  9. 漫话:什么是架构师?
  10. 面向对象:寻寻觅觅,诚邀你一起来解开这道迷题
  11. JDBC操作MYSQL数据库
  12. 记一次失败的项目经历
  13. matlab 怎麼卸載乾淨,matlab set gca用法
  14. 华为s5700交换机IP地址与MAC地址绑定
  15. setBackground()和setImageBitmap()看完就哦了
  16. OCR识别缺点_常用的OCR文字识别软件有哪些_软件动态论坛
  17. 什么副业能让你的收入增长十倍?
  18. pikachu靶场通关之暴力破解
  19. 介绍汽车美容预约小程序app开发
  20. SpringBoot 实现邮件发送功能

热门文章

  1. 云计算与 Cloud Native | 数人云CEO王璞@KVM分享实录
  2. STL 源代码分析 算法 stl_algo.h -- includes
  3. 项目中js文件修改后浏览器不能及时更新的解决办法
  4. 冲刺CCNA2.0(200-120)认证考试TK视频讲解
  5. 项目实现思路(不断更新)
  6. Microsoft Data Access Components(MDAC) 结构以及一些连接SQL数据库的架构基础
  7. 15.分布式文档系统-document id的手动指定与自动生成两种方式解析
  8. 【免费毕设】基于jsp的新闻发布系统(论文)
  9. mysql二进制日志开启方法_mysql中如何开启binlog?开启二进制日志文件?binary log?
  10. android api文档_【粉丝投稿】无需额外注解的 SpringBoot API文档生成工具