叉乘具有方向性,对于三角形abc和点p,使用向量ab⃗\vec{ab}ab xap⃗\vec{ap}ap​ ,如果p点在ab⃗\vec{ab}ab左侧,则结果大于0,如果p点在ab⃗\vec{ab}ab右侧,则结果小于0
可以将三角形abc按顺序(上图为逆时针)连接起来,形成三个向量ab⃗\vec{ab}ab、bc⃗\vec{bc}bc、ca⃗\vec{ca}ca,判断与ap⃗\vec{ap}ap​、bp⃗\vec{bp}bp​、cp⃗\vec{cp}cp​叉乘结果,如果都小于0,那么判定点在三角形内部,如果有等于0的结果,说明两向量共线,点在三角形边上

//点结构体
struct SPOINT{int x;int y;
};
//叉乘函数
int multiplication_cross(int x1,int y1,int x2,int y2){return x1*y2-x2*y1;
}
//叉乘法判断点在三角形内部
//参数p1 p2 p3 三角形的顶点 参数p4 要判断的点
//返回值 1 在三角形内部 0 在三角形边上 -1在三角形外部
int is_inside(SPOINT p1,SPOINT p2,SPOINT p3,SPOINT p4){SPOINT p12;SPOINT p23;SPOINT p31;SPOINT p14;SPOINT p24;SPOINT p34;p12.x=p2.x-p1.x;p12.y=p2.y-p1.y;p23.x=p3.x-p2.x;p23.y=p3.y-p2.y;p31.x=p1.x-p3.x;p31.y=p1.y-p3.y;p14.x=p4.x-p1.x;p14.y=p4.y-p1.y;p24.x=p4.x-p2.x;p24.y=p4.y-p2.y;p34.x=p4.x-p3.x;p34.y=p4.y-p3.y;if(multiplication_cross(p12.x,p12.y,p14.x,p14.y)>0&&multiplication_cross(p23.x,p23.y,p24.x,p24.y)>0&&multiplication_cross(p31.x,p31.y,p34.x,p34.y)>0){return 1;}if(multiplication_cross(p12.x,p12.y,p14.x,p14.y)*multiplication_cross(p23.x,p23.y,p24.x,p24.y)*multiplication_cross(p31.x,p31.y,p34.x,p34.y) == 0){return 0;}return -1;
}

使用向量叉乘判断点是否在三角形内相关推荐

  1. 2014软专高级程序语言T2(用向量叉乘判断点与三角形的位置关系)

    编写程序,输入A,B,C,D四个点的坐标,假设A,B,C三点可以构成一个三角形,判断D点是否落在三角形内. 解题思路: 假设三角形的三个点按照顺时针(或者逆时针)顺序是A,B,C.对于某一点P,求出三 ...

  2. 利用叉乘快速判断点是否在三角形内

    利用叉乘快速判断点是否在三角形内 判断P是否在三角形ABC内: 向量: pa = P - A,  ca = C - A; ba = B - A; 如果向量 cross(ca, pa)与向量 cross ...

  3. 判断一个点在三角形内

    http://www.gimoo.net/t/1505/5557e812d7390.html 判断点是否在三角形内 本文只是翻译和整理,原文在此http://www.blackpawn.com/tex ...

  4. 向量叉乘判断点是否在多边形内部

    向量叉乘: 二维向量的叉乘 ( x1 , y1 ) * ( x2 , y2 ) = x1y2 - y1x2 如果值大于0 , 则表明 ( x2 , y2 ) 在 ( x1 , y1 )左边,反之在右边 ...

  5. 二维平面上判断点是否在三角形内

    1. 已知三角形的三个顶点坐标,判断某个点是否在三角形中(在三角形的边上,我们也视作在三角形中),本文给出了三种方法. 算法1:利用面积法 如上图所示,如果点P在三角形ABC的内部,则三个小三角形PA ...

  6. 判断点是否在三角形内

    本文只是翻译和整理,原文在此http://www.blackpawn.com/texts/pointinpoly/default.html 概述 给定三角形ABC和一点P(x,y,z),判断点P是否在 ...

  7. [演示] 判断点是否处于三角形内的算法分析

    http://bbs.wow8.org/thread-94298-1-1.html 由于某些特殊需求,有时候需要判断一个点是不是在某一个三角形内面.虽然这样的情况很少,而且不是必须的,但既然有人提到了 ...

  8. 给定三角形ABC和一点P(x, y),判断P是否在三角形内

    解题思路: 根据点P与三角形其中两点所形成的三角形面积之和与三角形ABC面积进行比较,如果相等则点P在三角形内,不相等则不在三角形ABC内. 解题步骤: 一.根据给定的三点坐标计算三角形的面积: 二. ...

  9. 重心法-判断一点是否在三角形内

    1. 叉乘(X) 详细定义可以参考:叉积定义. 在三维坐标系中,如果 a = (a1, a2, a3), b = (b1, b2, b3),那么a x b = (a2b3 - a3b2, a3b1 - ...

最新文章

  1. php安装redis扩展模块
  2. [总结篇3]Provider_network的含义
  3. hdu 2009 求数列的和(c语言)
  4. java update多个字段的值_SQL的update多个字段的写法
  5. android6.0源码分析之Activity启动过程
  6. oracle 数据 时间间隔,如何掌握 Oracle 中的时间间隔型数据
  7. 支付宝服务窗的简单开发体会
  8. zookeeper集群部署监控与选举同步流程等工作原理
  9. 【运动学】基于matlab GUI模拟鱼类目标追击问题【含Matlab源码 166期】
  10. 谷歌云盘批量下载文件
  11. php五行万年历,PHP制作万年历
  12. C++设计模式基础和模式设计基本原则
  13. OneNote无法粘贴图片
  14. BottomNavigationView 动态切换Icon且保留原图颜色
  15. k8s 1.23 及keda 2.7.1 安装测试
  16. 第3-4课:爱因斯坦的思考题(上)
  17. 体现SRP(单一职责原则)的两种模式——工厂模式和命令模式
  18. django_models_外键应用
  19. scp传文件指定端口、传输目录
  20. 热门商业模式解剖:哪个适合中国

热门文章

  1. 2022双十一喵果Autojs脚本
  2. 火爆不亚于中国?看看印度聊天机器人市场现状 | 分析
  3. 几何公差之什么是被测要素?被测要素有哪些类型?
  4. 易语言json置入_易语言json操作模块源码
  5. Ext.extend方法
  6. 【PCL自学:Filtering】PCL中的各类滤波器介绍与使用 (持续更新)
  7. 船舶驾驶虚拟仿真模拟训练系统软件
  8. jdk32位安装包下载_Photoshop CC 2014软件下载和安装教程
  9. Markdown图片本地化
  10. python中的运算表达式规则