求问Matlab里inpolygon函数的数学原理。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求问Matlab里inpolygon函数的数学原理。相关的知识,希望对你有一定的参考价值。
因为需要在fortran里判断一个点是否在多变形区域内,所以想把inpolygon函数改写成fortran程序……但是只能看懂函数里单个语句的意思,完全不明白原理。在matlab论坛里看其他inpolygon函数相关的帖子,有人说:
“可以这样实现, 首先给定该多边形顺时针采样的序列: Cc1, ..., cn
令待求点为p, 计算p的特征行列式序列:|pci, pc(i+1)|如果这个序列恒正, 则p在多边形内, 否则位于多边形外。这种方法还可以推广到多维, 如一个点是否在一个n维的几何体内。”
虽然不明白,但是我感觉inpolygon用的好像就是这种方法,里面有计算点乘和叉乘的语句。求解释!
如果有更好的方法也请说明……
首先给定该多边形顺时针采样的序列: Cc1, ..., cn;
令待求点为p, 计算p的特征行列式序列:|pci, pc(i+1)|;
如果这个序列恒正, 则p在多边形内, 否则位于多边形外。这种方法还可以推广到多维, 如一个点是否在一个n维的几何体内。
Examples
L = linspace(0,2.*pi,6); xv = cos(L)';yv = sin(L)';
xv = [xv ; xv(1)]; yv = [yv ; yv(1)];
x = randn(250,1); y = randn(250,1);
in = inpolygon(x,y,xv,yv);
plot(xv,yv,x(in),y(in),'r+',x(~in),y(~in),'bo')
参考技术A 如果多边形的每个角的点已经按一顺时针排列(逆时针也可以)matlab里用的有叉乘的,是用向量计算的办法
要判断某点P(x,y)是否在多边形内C{c1,c2,...cn内
可以计算P到顺序相邻两点的向量的差乘值 Pc1Xc2 Pc2XPc3 .... Pcn-1XPcn PcnXPc1
如果在多边形里面 这些叉积都是 取相同符号的
如果符号相同中还有0值,表示在多边形边上
如果有正,有负表明点P在多边形外 参考技术B 一般用转角法(弧长法)来判别被测点与多边形的关系
方法是以被测点为圆心作单位圆,将全部有向边向单位圆作径向投影,并计算其在单位圆上弧长的代数和
其实就是点乘向量的arccos函数值之和
外部是0,内部是2π,边上为π
这里有源代码,不过是C++的
http://wenku.baidu.com/link?url=BVISYea6fMtlvNABa0t4lu6XK3E2ALqJ5zH-JYuekHsrnXdbcxLfPDr3hwLuhVGugsuv6UuPrmzzkJy5B8j7i58umBq19lu7QYSrCmDf0de本回答被提问者采纳
求问高中数学!
求详解!谢谢!
高中数学合集百度网盘下载
链接:https://pan.baidu.com/s/1znmI8mJTas01m1m03zCRfQ
提取码:1234
简介:高中数学优质资料下载,包括:试题试卷、课件、教材、视频、各大名师网校合集。
参考技术A简单计算一下即可,答案如图所示
参考技术B很简单
参考技术C早回来了20分钟,说明,车在行进过程中少开了20.。来回双程,所以去的过程中,少开了10分钟,所有女儿步行时间为50-20/2=40分钟。 2.(1)若是全部按照77cm的规格截取,可以的到的零件数量为600/77取正整数,为7根,余的长度61cm。但是88cm规格...
数学不是知识性、经验性的学科,而是思维性的学科。所以,数学的学习重在培养观察、分析和推断能力,开发学习者的创造能力和创新思维。因此,在学习数学的过程中,要有意识地培养这些能力。这会使数学成绩取得有效突破。
学习有法,但无定法,要想学会学习,不仅要向别人学习好的学习方法,还要善于总结自己的学习方法。学习数学,要独立思考,深入剖析题目,达到融会贯通的地步,那么你一定会取得优异成绩。
收集自己做过的错题,订正并写清错误的原因;对于考试成绩,定一个力所能及的奋斗目标;合理安排作息时间,合理的作息时间和良好的学习习惯有助于获得稳定的学习成绩。
一定要做好预习,带着预习中的问题走进课堂,能让数学学习事半功倍;做完作业要仔细检查;老师要求的练习要认真完成。
少动笔而能学好数学的天才是没有的,所以在业余时间要多做习题,本着熟能生巧的心态一定会有所收获。
数学考试的策略非常重要。考试时的题目一般都是先易后难,要把握住前面相对简单的题目,尽量不丢分,剩余的时间再做难题。正确率和做题的速度一样重要,合理地放弃某些题目能帮助你发挥正常水平,有利于在考试中取得理想的成绩。
以上是关于求问Matlab里inpolygon函数的数学原理。的主要内容,如果未能解决你的问题,请参考以下文章
Wolfe准则(数学原理及MATLAB实现)——最优化建模算法与理论
最优化建模算法理论之Wolfe准则(数学原理及MATLAB实现)
求问maximum recursion depth exceeded怎么解决