题目:在二维坐标系中,所有的值都是double型,那么一个三角形可以由三个点来代表,给定三个点代表的三角形,再给定一个点(x, y),判断(x, y)是否在三角形中

基本思路:

如果一个点O在三角形的内部,那么从三角形的一个点出发,逆时针走过所有边的过程中,点O始终在走过边的左边。如果点O在外侧,则不满足这一条件。

  如果要逆时针走过一遍三角形,那么三个点的位置是重要的,假设输入的三个点依次是a,b,c,如果b在边ac的左边,按照a -> b -> c的顺序遍历是顺时针遍历,如果b在边ac的右边,按照a -> b -> c的顺序遍历就是逆时针遍历。如果出现前者情况,我们需要先调整一下三个点输入的顺序,接下来的重点就是判断一个点是在一条边的左侧还是右侧。该问题可以使用几何上的向量积(叉积)解决。

def crossproduct(x1,y1,x2,y2):return x1*y2 - x2*y1def isInside(x1,y1,x2,y2,x3,y3,x,y):if crossproduct(x1-x2,y1-y2,x1-x3,y1-y3) >= 0:x2,x3 = x3,x2y2,y3 = y3,y2if crossproduct(x2-x1,y2-y1,x-x1,y-y1)<0:return Falseif crossproduct(x3-x2,y3-y2,x-x2,y-y2)<0:return Falseif crossproduct(x1-x3,y1-y3,x-x3,y-y3)<0:return Falsereturn True

判断一个点是否在三角形内部相关推荐

  1. 如何判断一个点是否在三角形内部

    如何判断一个点是否在三角形内部 昨天学到一个方法,虽然是数学上的问题,而且也没找到具体严格的证明,但觉得知道下其用法还是很好的. 问题:如何判断一个点是否在三角形内部 方法:比如三角型外有点P,三角型 ...

  2. 【c++】判断一个点是否在三角形内部

    判断一个点是否在三角形内部 基础知识 整体代码 之前做笔试题的时候,忘了怎么计算点是否在三角形的内部,写个博客记录一下. 基础知识 使用结构体保存点的坐标 // 用一个结构体去表示点 struct p ...

  3. [转]如何判断一个点是否在一个多边形内部

    原文地址:http://hi.baidu.com/wayright/item/ad18e4c0c5446b2dee4665c9 在多边性的存储中,每一个多边形都是由一系列连续的点组成,例如保存为数组P ...

  4. 面试高频算法题补充系列:如何判断一个点是否在三角形内?

    前言 了解更多常考高频算法题可以关注 公众号:一个搬砖的胖子 企业面试题库:https://codetop.cc/ 小程序:CodeTop 该题曾出现在字节跳动.腾讯.网易.美团.小马智行等公司的面试 ...

  5. Java 判断一个点是否在一个三角形内

    题目描述:   如何判断一个点是否在一个三角形内. 测试样例: 自定义的POINT类: class POINT{int x;int y;public POINT(int x,int y){this.x ...

  6. 能否构成三角形的条件代码_Java 如何判断一个点是否在一个三角形内

    题目描述: 如何判断一个点是否在一个三角形内. 测试样例: 自定义的POINT类: class POINT{ int x; int y; public POINT(int x,int y){ this ...

  7. 判断一个点是否在矩形内部

    //判断一个点是否在矩形内部 public class InMatrix{//(1)特殊情况,矩形平行于x轴和y轴public static boolean isInMatrix(double x1, ...

  8. Algorithm: 如何判断一个点是否在一个三角形内

    昨日因为机缘巧合,做了一道阿里的实习生编程题.题目很有趣,其中涉及到了如何判断一个点是否在一个三角形内. 其中,判断这个问题最简单的方法是面积法.(图片来源:http://www.cnblogs.co ...

  9. 判断一个点是否在多边形内部

    一.比如说,我就随便涂了一个多边形和一个点,现在我要给出一种通用的方法来判断这个点是不是在多边形内部(别告诉我用肉眼观察--). 首先想到的一个解法是从这个点做一条射线,计算它跟多边形边界的交点个数, ...

最新文章

  1. 树的高度(小米2017秋招真题)
  2. OpenGL 泛光Bloom
  3. select标签中option的显示隐藏控制(兼容IE)
  4. 传递集合对象_面试必备——Java集合框架
  5. 苏州,遇见NXP痞子衡
  6. 蛋疼的strtok函数
  7. hashtable资料
  8. gin--简单的登录界面的实现
  9. 易用性软件测试用例,易用性测试用例集
  10. 计算机网络知识点汇总(考研用)
  11. win7新建文本文档快捷键
  12. 下列各排序法中,最坏情况下的时间复杂度最低的是(**C** )A.希尔排序 B.快速排序 C.堆排序 D.冒泡排序
  13. 苹果真的老了!iphone XR降价跌至6500,与iphone X有很大差距
  14. Python基础班开班典礼
  15. Vue页面与页面之间的传值(router.push()编程式导航)
  16. mac时间机器文件服务器,使用时间机器备份文件 - 处理文件和文件夹 - macOS使用手册...
  17. 基金类型(场内场外、开放封闭、ETF、联接、LOF)
  18. Linux shell脚本分割文件
  19. Photoshop 字体描边和阴影
  20. C语言练习——单词本管理

热门文章

  1. 配置管理篇(0)_SaltStack 安装
  2. Python中:self和__init__的含义 + 为何要有self和__init__
  3. Android Drawable 转化成 Bitmap
  4. MySQL Study案例之--快速了解MySQL服务器
  5. 【转】JCR期刊分区及其检索方法
  6. 计算当前日期是一年中的第几周
  7. UpdatePanel控件的简单属性学习
  8. 要你命3000-List29
  9. Matlab最短路学习
  10. 青岛互联网java开发_为什么说Java是过去未来的互联网编程(上)