Perl 如何访问Math::Planar::GPC函数和功能?

Perl 如何访问Math::Planar::GPC函数和功能?,perl,geometry,polygon,gpc,Perl,Geometry,Polygon,Gpc,我想打印出两个多边形的交点。但当两个多边形没有相交时,我如何知道如何避免打印它? 因为如果没有交集,我不能调用$pgons[0]->多边形,它会给我一个错误。 (所有多边形中均无孔) 谢谢 似乎Gpc2Polygons在未找到交点时返回空数组。因此,要确定交集是否为非空,可以检查返回数组的长度是否大于零。例如: use feature qw(say); use strict; use warnings; use Math::Geometry::Planar; my $p1 = Math::G

我想打印出两个多边形的交点。但当两个多边形没有相交时,我如何知道如何避免打印它? 因为如果没有交集,我不能调用$pgons[0]->多边形,它会给我一个错误。
(所有多边形中均无孔)
谢谢


似乎
Gpc2Polygons
在未找到交点时返回空数组。因此,要确定交集是否为非空,可以检查返回数组的长度是否大于零。例如:

use feature qw(say);
use strict;
use warnings;

use Math::Geometry::Planar;

my $p1 = Math::Geometry::Planar->new;
my $p2 = Math::Geometry::Planar->new;

$p1->points([[0, 0], [0, 2], [2, 2], [2, 0]]);
for my $pos (1, 1.5, 2) {
    say "pos = $pos";
    $p2->points([[$pos, 0], [$pos, 2], [$pos + 2, 2], [$pos + 2, 0]]);
    my $intersect = GpcClip( 'INTERSECTION', $p1->convert2gpc, $p2->convert2gpc );
    my @pgons = Gpc2Polygons( $intersect );  
    if ( @pgons > 0 ) {
        say "  Found intersection";
    }
    else {
        say "  No intersection";
    }
}
输出为:

pos = 1
  Found intersection
pos = 1.5
  Found intersection
pos = 2
  No intersection

我不知道你在说什么(不是你的错,只是我的无知),但是当你想解决这个问题时,你需要省略< <代码> @ >代码>和他的名字之间的空白,比如@ TraceStudio BrutoNo。另外:他只会被注意到(他目前没有注意到)。@Perl谢谢。我的意思是如何确定“@pgons”中是否有真正的多边形。如果没有多边形,$pgons[0]->多边形将导致错误。
如果(@pgons&&$pgons[0]&&&$pgons[0]->多边形){…}
我很抱歉,但你误解了我:我帮不了你,因为我对数学一无所知::平面::GPC。第二:这不像推特。当您键入@SomeUser时,只有在SomeUser已经回答/评论或以某种方式与此特定问题交互时,才会向他发出警报。这件诉讼没有(到目前为止),所以不会通知他。您不能通过这种方式“呼叫”特定人员寻求帮助。人们可能不熟悉您正在使用的模块,但如果您提供足够的代码重现您的问题,我相信人们会提供帮助。你没有给出实际的错误。你不会显示输入数据,这样别人就可以重现你的错误并帮助你解决它。好吧!谢谢你,哈肯。在我发布这个问题后,我才意识到@pgons的大小可以用于此目的。我使用if$#pgons>=0。
pos = 1
  Found intersection
pos = 1.5
  Found intersection
pos = 2
  No intersection