计算矢量叉积是与直线和线段相关算法的核心部分。

设矢量P = ( x1, y1 ),Q = ( x2, y2 ),则矢量叉积定义为由(0,0)、p1、p2和p1+p2所组成的平行四边形的带符号的面积,即:P × Q = x1*y2 - x2*y1,其结果是一个标量。显然有性质 P × Q = - ( Q × P ) 和 P × ( - Q ) = - ( P × Q )。

一般在不加说明的情况下,本文下述算法中所有的点都看作矢量,两点的加减法就是矢量相加减,而点的乘法则看作矢量叉积。

叉积的一个非常重要性质是可以通过它的符号判断两矢量相互之间的顺逆时针关系:   若 P × Q > 0 , 则P在Q的顺时针方向。   若 P × Q < 0 , 则P在Q的逆时针方向。

若 P × Q = 0 , 则P与Q共线,但可能同向也可能反向。   折线段的拐向判断:

折线段的拐向判断方法可以直接由矢量叉积的性质推出。

对于有公共端点的线段p0p1和p1p2,通过计算(p2 - p0) × (p1 - p0)的符号便可以确定折线段的拐向:

若(p2 - p0) × (p1 - p0) > 0,则p0p1在p1点拐向右侧后得到p1p2。

若(p2 - p0) × (p1 - p0) < 0,则p0p1在p1点拐向左侧后得到p1p2。

若(p2 - p0) × (p1 - p0) = 0,则p0、p1、p2三点共线。

折线段拐向判断

段折线段的拐向判断方法可以直接由矢量叉积的性质推出。

对于有公共端点的线段p0p1和p1p2,通过计算(p2 - p0) × (p1 - p0)的符号便可以确定折线段的拐向:

若(p2 - p0) × (p1 - p0) > 0,则p0p1在p1点拐向右侧后得到p1p2。

若(p2 - p0) × (p1 - p0) < 0,则p0p1在p1点拐向左侧后得到p1p2。

若(p2 - p0) × (p1 - p0) = 0,则p0、p1、p2三点共线。

csdn:http://blog.csdn.net/sjl_leaf/article/details/8789785

利用矢量叉积判断是逆时针还是顺时针。

    设A(x1,y1),B(x2,y2),C(x3,y3),则三角形两边的矢量分别是:
    AB=(x2-x1,y2-y1), AC=(x3-x1,y3-y1)
    则AB和AC的叉积为:(2*2的行列式)
    |x2-x1, y2-y1|
    |x3-x1, y3-y1|
    值为:(x2-x1)*(y3-y1) - (y2-y1)*(x3-x1)
    利用右手法则进行判断:
    如果AB*AC>0,则三角形ABC是逆时针的
    如果AB*AC<0,则三角形ABC是顺时针的
    如果……  =0,则说明三点共线,

矢量叉积与折线段拐向判断---三角形顺逆判断相关推荐

  1. php判断三角形类型,判断三角形类型

    #include #include int main() { int a0, b0, c0; while(~scanf("%d%d%d", &a0, &b0, &a ...

  2. 【计算机图形学】【OpenGL】基于窗口的Liang-Barsky的折线段裁剪的实现

    计算机图形学课程实验,出于记录和分享学习过程的目的写下此博客.由于是第一次写博客,不足之处还望指出. 目录 实验要求: 实现效果: 头文件: Liang-Barsky算法部分: 实现部分: 全局变量定 ...

  3. NYOJ 659 判断三角形

    判断三角形 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 小明非常喜欢研究三角形.现在,小明已经知道三角形的三条边,如果三条边能组成三角形,小明就会很高兴,他就会得到一 ...

  4. c语言坐标三角形判断,【C语言】判断三角形类型(示例代码)

    根据输入的三角形的三边判断三角形的类型,并输出其面积和类型. #include #include #include int main() { float a, b, c; float s, area; ...

  5. php判断三角形类型,C#_C#判断三角形的类型,题目描述: 输入三角形的三 - phpStudy...

    C#判断三角形的类型 题目描述: 输入三角形的三条边长,判断是否能构成一个三角形(不考虑退化三角形,即面积为零的三角形),是什么样的三角形(直角.锐角.钝角.等边.等腰). 函数声明为:byte Ge ...

  6. C# 实验三 判断一个字符、判断三角形、千名学生、a+aa+aaa+aaaa、求数列相加、约瑟夫环

    题目 以下为实现代码 1 判断一个字符 using System; using System.Collections.Generic; using System.Linq; using System. ...

  7. C语言试题七十二之请编写函数判断三角形的类型,并输出其面积和类型。

    1. 题目 编写函数:判断三角形的类型,并输出其面积和类型. 2.思路: 首先判断其两边之和是否大于第三边,若大于则判断可以构成三角形,再进一步判断该三角形是什么三角形,并计算这个三角形的面积:否则不 ...

  8. java中直角三角形第三条边,Java编程,根据输入三角形的三个边边长,程序能判断三角形类型为:等边、等腰、斜角、直角三角形,求代码...

    private static Scanner sc;private static int edge[] = new int[3];public static void main(String[] ar ...

  9. 7-8 判断三角形类型 (20 分)

    ** 7-8 判断三角形类型 (20 分) ** 输入三角形三条边,判断该三角形为什么类型的三角形. 输入格式: 在一行中输入三角形的三条边的值(实型数),可以用一个或多个空格或回车分隔,其中三条边的 ...

  10. C语言OJ项目参考(2963) 判断三角形

    2963: 判断三角形 Description 娄月的妹妹刘月是个初中生,某天回来兴高采烈的回家告诉姐姐他学会了如何凭借三角形三边判断三角形的形状(设两条短边为啊a,b;长边为c,判断a*a+b*b和 ...

最新文章

  1. docker 安装vim
  2. 学多门计算机语言的好处,多学一门语言的19大好处
  3. 我是如何从程序小白成为码农的
  4. (12)调用门阶段测试
  5. (二十):response 对象 (JSP学习第六天)
  6. [BZOJ1260][CQOI2007]涂色paint 区间dp
  7. 云服务器mqtt协议,云服务器mqtt协议
  8. Java转型(向上转型和向下转型)
  9. PHP经典项目案例-(一)博客管理系统5
  10. Pandas to_datetime
  11. 语料库的获取与词频分析
  12. 设计图纸管理系统办公系统实现无纸化
  13. 我是一个将近30岁的女程序员
  14. 作为DQM的首次战棋尝试,《勇者斗恶龙战略版》何以开局便成功
  15. 树莓派GPIO针脚在python中BCM与BOARD模式
  16. 闲置oppoR9sk---获取root权限
  17. 导出https网站证书
  18. 4个小故事,分分钟看懂人民币汇率
  19. YYKit系列之——YYCache使用
  20. Kaggle: ImageNet Dog Breed Classification (Pytorch)

热门文章

  1. Linux Commands
  2. 非域环境下安装并配置Project Server 2007(二)
  3. Qt学习之路(21): event()
  4. Ubuntu中安装网易云音乐(可以直接打开的最简单的方法)
  5. Windows下运行linux桌面程序
  6. mysql查询一张表中一共有多少条数据
  7. 百度seo排名点击器app_手机端百度搜索排名seo优化_百度移动端整站关键词排名优化...
  8. java语言的输入输出_java语言的输入输出
  9. 计算机电源在线工作,计算机开关电源的工作原理与维修2.pdf
  10. 未分配利润与利润表不一致_财务报表中未分配利润和净利润不一样,这正常吗?...