求问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

?pwd=1234

提取码:1234

简介:高中数学优质资料下载,包括:试题试卷、课件、教材、视频、各大名师网校合集。

参考技术A

简单计算一下即可,答案如图所示

参考技术B

很简单

参考技术C

    早回来了20分钟,说明,车在行进过程中少开了20.。来回双程,所以去的过程中,少开了10分钟,所有女儿步行时间为50-20/2=40分钟。 2.(1)若是全部按照77cm的规格截取,可以的到的零件数量为600/77取正整数,为7根,余的长度61cm。但是88cm规格...

参考技术D   又一批初三的学生即将步入高中学堂,高中数学与初中数学相比更繁琐,难度也增加了不少,主要是因为高中数学概念比较抽象、习题繁多而且教学密度也大,所以很多学生升入高一后会对数学这一科目望而退却,甚至失去信心。这里我谈一下行之有效的数学学习方法,供学子们借鉴,
数学不是知识性、经验性的学科,而是思维性的学科。所以,数学的学习重在培养观察、分析和推断能力,开发学习者的创造能力和创新思维。因此,在学习数学的过程中,要有意识地培养这些能力。这会使数学成绩取得有效突破。
学习有法,但无定法,要想学会学习,不仅要向别人学习好的学习方法,还要善于总结自己的学习方法。学习数学,要独立思考,深入剖析题目,达到融会贯通的地步,那么你一定会取得优异成绩。
收集自己做过的错题,订正并写清错误的原因;对于考试成绩,定一个力所能及的奋斗目标;合理安排作息时间,合理的作息时间和良好的学习习惯有助于获得稳定的学习成绩。
一定要做好预习,带着预习中的问题走进课堂,能让数学学习事半功倍;做完作业要仔细检查;老师要求的练习要认真完成。
少动笔而能学好数学的天才是没有的,所以在业余时间要多做习题,本着熟能生巧的心态一定会有所收获。
数学考试的策略非常重要。考试时的题目一般都是先易后难,要把握住前面相对简单的题目,尽量不丢分,剩余的时间再做难题。正确率和做题的速度一样重要,合理地放弃某些题目能帮助你发挥正常水平,有利于在考试中取得理想的成绩。

以上是关于求问Matlab里inpolygon函数的数学原理。的主要内容,如果未能解决你的问题,请参考以下文章

Wolfe准则(数学原理及MATLAB实现)——最优化建模算法与理论

最优化建模算法理论之Wolfe准则(数学原理及MATLAB实现)

求问maximum recursion depth exceeded怎么解决

备战数学建模7-MATLAB数值微积分与方程求解

用matlabBP神经网络做多元线性回归,求问各参数的拟合值怎么看?

数学建模暑期集训5:matlab求解常微分方程/偏微分方程