【学习】计算几何初步

一、点。

l        点的坐标A(x1, y1),B(x2, y2)

二、向量。

l        向量AB = (x2-x1, y2-y1) = (x3,y3) ,CD = (x4, y4)。

l        向量的模|AB| = sqrt(x3*x3 + y3*y3) 即向量的长度。

三、点积。

l        点积的结果为一个数值。

l        数值计算方法AB * CD = x3*x4 + y3*y4。

l        几何意义AB * CD = |AB| * |CD| * cos(a),a为向量AB逆时针转向CD的角度,0<=a<360,也可以认为是两向量的夹角,0<=a<=180。一般用于求夹角,a = acos( (AB * CD) / (|AB| * |CD|) )。也可:|CD| * cos(a) = AB * CD / |AB|,即向量CD在AB上的投影。

四、叉积。

l        叉积的结果为一个向量。

l        AB×CD数值= x3*y4 – x4*y3。

l        方向由右手螺旋定则判定。

l        几何意义:AB×CD = |AB| * |CD| * sin(a),取绝对值即是以AB和CD为边的平行四边形面积。

五、线段相交的判定(判定线段AB和线段CD是否相交,属于哪种相交)。

l        规范相交:交点只有一个,且不是线段的端点。

1、充要条件:点A和点B在CD的两侧并且点C和点D在AB的两侧。

2、如何判断点A在向量CD的左侧还是右侧:CA×CD的数值大于0则左侧,小于0则右侧。于是CA×CD的数值和CB×CD的数值异号,点A和点B在CD的两侧,同理可判断点C和点D是否在AB的两侧(注意,必须严格异号)。

l        不规范相交:交点为某个线段的端点,甚至两线段有一段重合。

1、充要条件,一条线段的一个端点在另一条线段上。即A在CD上或B在CD上或C在AB上或D在AB上。

2、A在线段CD上的充要条件:

a)        AC×AD = 0,几何意义,AC和AD组成的平行四边形的面积为0,即A、C、D三点共线。

b)        A点在CD之间,A.x处于C.x和D.x之间并且A.y处于C.y和D.y之间

转至http://www.cppblog.com/shiming413/archive/2007/08/21/30494.html

时间: 2024-08-29 00:45:53

【学习】计算几何初步的相关文章

Spring源码学习的初步体会

Spring源码学习的初步体会: 深入学习和巩固java的基础知识,其中的java知识范围全部,可以边研究源码边巩固复习基础知识 体会其中用到的设计思想:其中包含的设计原则和设计模式. 加深对spring的理解,在业务开发中使用spring更容易和深入,提高了生产率.

es6学习笔记初步总结

es6学习笔记初步总结 1. let.const 和 block 作用域 在ES6以前,var关键字声明变量.无论声明在何处,都会被视为声明在函数的最顶部(不在函数内即在全局作用域的最顶部).这就是函数变量提升例如: let 关键词声明的变量不具备变量提升(hoisting)特性 let 和 const 声明只在最靠近的一个块中(花括号内)有效 当使用常量 const 声明时,请使用大写变量,如:CAPITAL_CASING const 在声明时必须被赋值 否则报语法错误SyntaxError

深度学习入门初步总结

深度学习入门初步总结 前言 在学习深度学习之前,从某乎上看了相关的学习路线,又通过师兄们的请教,最后选择了在linux环境下,用python进行代码的编写.由于自己在这之前,对linux没有接触过,所以在安装Ubuntu以及在环境安装下还是走了不少弯路,后续会把相关的安装教程也写在博客中.在学习之前,可以说自己真的还是个小白,很多东西都不会,望以后可以和大家多多交流,一些想法可能不正确,望各位也能指出来. 一.技术储备 python基本语法 由于自己之前学过python,在这里就不多做总结了 N

计算几何初步

嗯因为本人就是个计算几何渣所以标题就写个初步好了- ①求多边形面积 poj3907 随便找一个点,对多边形相邻顶点求叉积.加在一起求绝对值即可. #include <iostream> #include <stdio.h> #include <stdlib.h> #include <algorithm> #include <string.h> #include <vector> #include <math.h> #inc

技术学习的初步计划

这里我就粗浅的谈一下自己的技术发展吧,现在会有很多的不足,但是意义却很重大,主要的作用是为自己制定一个可控的学习指导方案,而不再是过去的盲目. 我主要的学习方向是linux运维,不管是应用运维,系统运维,监控运维,还是业务运维等等,这些都是我目前可以去走的路,但是不管从事以上的运维方向的哪一个或者都有涉及,所需要去学习和掌握的知识都是我现在需要去准备的,所以接下来我就围绕技术这一块来进行规划和学习,这个也是我初步的计划. 我现在所能想到的和觉得初步阶段需要去做的就是以下内容 主线任务(主要学习l

【转】[专题学习][计算几何]

原文地址:http://www.cnblogs.com/ch3656468/archive/2011/03/02/1969303.html 基本的叉积.点积和凸包等东西就不多说什么了,网上一搜一大堆,切一些题目基本熟悉了就差不多了. 一些基本的题目可以自己搜索,比如这个blog:http://blog.sina.com.cn/s/blog_49c5866c0100f3om.html 接下来,研究了半平面交,思想方法看07年朱泽园的国家队论文,模板代码参考自我校大牛韬哥: http://www.o

Sass学习笔记 -- 初步了解函数、运算、条件判断及循环

函数 sass定义了很多函数可供使用,当然你也可以自己定义函数,以@fuction开始.sass的官方函数链接为:sass fuction,实际项目中我们使用最多的应该是颜色函数,而颜色函数中又以lighten减淡和darken加深为最,其调用方法为lighten($color,$amount)和darken($color,$amount),它们的第一个参数都是颜色值,第二个参数都是百分比. //scss $baseFontSize:      10px !default; $gray:    

C#学习之初步理解委托、事件、匿名方法和Lambda

最经在学习LinqtoSql,然后扯到Lambda表达式,然后扯到匿名方法,然后扯到委托,最后扯到事件处理...后来发现对委托这个概念和事件处理这个过程理解得不是很清晰,遂得一下学习笔记.那里说得不对,请大家多多指教! 第一部分:理解委托 委托委托,顾名思义,就是类似于中间人的意思,有些事情你不做,委托别人去做,比如你想相亲,但你不想去主动约女孩子,那你可以交给媒婆去帮你约. 如果你学过C++,请把委托理解成函数指针,都是为了调用函数.函数指针可以调用符合该函数指针要求的函数.什么叫符合该函数指

UML学习之初步总结

UML(Unified Modeling Language)即统一建模语言,是一种开放的方法,用于说明.可视化.构建和编写一个正在开发的.面向对象的.软件密集系统的制品的开放方法.UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效. 在这里先总结UML的整体框架和学习内容: 首先鸟瞰UML的整体面貌 然后详细总结具体内容(如果有什么不妥的地方,欢迎您提出您的宝贵意见与建议): 补充一下UML模型的一点知识: 在UML系统开发中有三个主