- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * 叉积在计算几何里很常见,在凸包,求面积,判断线段的拐向等等都会用到它。 今天,我们只来讨论叉积在求面积和判断线段的拐向中的作用。 在几何中点用结构体表示: 先来看线段的拐向:比如现在给你两条线段AB和BC,如下图: 如上图,可以通过计算向量的叉积来判断拐向,即判断(C-A)×(B-A)的符号。 若(C-A)×(B-A) 0 ,则AB在B点向右拐得到BC 若(C-A)×(B-A) 0 ,则AB在B点向左拐得到BC 若(C-A)×(B-A)= 0 ,则A,B,C三点共线。 对于两个向量 和 来说,叉积为 那么,(C-A)×(B-A)就可以用如下代码来计算: 讲到这里,下面我们来看一个简单题。 如图,我们给三个点A,B,C,判断沿着AB到BC,在B点是向右拐还是向左拐。并求出拐的角度。 当然,这个先直接用叉积判断拐向,然后再余弦定理计算角度即可,用180减去这个角度便是拐的角度。 例外,叉积还有一个重要的用处,就是用来求面积。 叉积用来求面积,求出的是有向面积,也就是说带正负号,不过再取一下绝对值就是真正的面积大小了。 比如求三角形ABC的面积,先计算出叉积cross(A,B,C), 那么面积就是fabs(cross(A,B,C))/ 2.0 现在我们来看利用叉积来求任意一个多边形的面积。 /showproblem.php?pid=2036 对于一个多边形,不一定是凸多边形,来求它的面积,首先,我们把它划分为若干个三角形,对于每个三角形,我们分别求出它们的有向面积的和,就得到了多边形的面积。模板如下,思路简单,自己在纸上画一下就明白了。 接下来,我们来看一个题目:给一个三角形ABC,再给一个点P,判断点P在三角形ABC的内外,注意在三角形的边上也算在内。如果在三角形内就输出“YES”,否则输出“NO”。(给定点的坐标都是整数) 当然,对于这个问题,实际上有衍生的版本,就是给定一个任意多边形,判断点P在多边形内外。这个有专门的算法,今天不予讨论,有兴趣的同学可以上网查阅相关资料。 我们今天只讨论三角形版本。既然我们学了叉积,那么必须就要派上用场。 我们知道,如果一个点P在三角形内,那么我们连接PA,PB,PC,很容易知道: 否则,如果点P在三角形ABC的外面,那么上面的等式就不成立。 所以,利用这个性质,我们就可以来判断一个点是否在三角形内外了。下面给出本题的完整代码。好好领会一下: *
文档评论(0)