Earth Tides分享 http://blog.sciencenet.cn/u/Earthtides 介绍大地测量和地球物理中的潮汐影响

博文

如何判断一个点是否在某一个多边形中

已有 2404 次阅读 2021-12-24 11:22 |系统分类:科研笔记

    这几天在计算地表温度变化引起的位移场,用到了以前写的一个计算海潮负荷的程序(海潮负荷只要积分海洋部分的球面,现在要积分陆地部分的球面)。写程序时用的是VC++,现在不用了,也不太好调试,废了很大劲,有些内容自己都忘了(现在想想写个说明文档是多么重要),所以又把以前的东西看了一些,发现一个“好”东西,跟大家分享一下。

   在计算海潮负荷时,有时要用到近海的潮汐模型来替换全球的海潮模型,近海区域有时候不是那么规则,其边界通常是数字化的,比如是由一些节点连起来的一个多边形,这时候就需要判断积分区域是否在这个多边形内,如果在这个区域,用全球海潮模型计算时,就不能计算这部分的积分(因为要扣除这部分影响)。

   怎么样判断一个点在一个面内,这就要用到复变函数中的柯西积分,

                                                             (1)

上式是一个围线积分(绕一个闭环,也就是多边形的边界,这里的编辑器没有积分号加个圈的符号),如果a在这个环内(积分核不是全域解析的,如果是解析的,积分就是0),积分值就等于2πi,如果不在则等于0,正好在边界线上则为πi。

   把复数的实部和虚部显式地表示出来,即

                                                (2)

则(1)可写为

                            (3)

上式积分中的前两项正好是一个全微分,因此围线积分是0(与路径无关,只和起点终点相关,起点即终点)。

因此只需要计算下式:

                                                   (4)

对于点正好在边界线上的情形是比较好判断的(如通过点到边界节点连线的斜率相等),这里就不详细介绍了,主要作内外判断。边界线实际是N个直线段连接而成。设这些点为

,...

围线积分就是在这些直线段积分再叠加,对于第j个点和第j+1个点组成的线段,

      当时,,(4)式的值为

                                    (5)

     当时,线段的方程为

                                (6)

所以,(4)变成

              (7)

这个积分需要判断分母中二项式的判别式的取值情况,将(7)写成简洁的形式

                                                  (8)

时,

                           (9)

大于或相等的情形,可以参考数学手册,这里就不写了。因为从(4)式知道分母表示的是两点的距离,一定是大于0的(不包含点在边界的情形),并且A也是大于0的,所以判别式小于0(二项式没有=0的实根),其结果就是(9)式。

所以最后的结果就是叠加所有N个线段上的值,如果这个结果接近2π,说明点就在多边形内部;如果接近0就在外部。

      其实,判断方法有很多种,这只是其中之一,有兴趣可以搜搜。






https://m.sciencenet.cn/blog-432384-1317959.html

上一篇:图片更正

1 王安良

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-25 08:39

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部