point intersects(Line line, Point point) { return lp_intersect(point, line); } point intersects(Point point, Line line) { return lp_intersect(point, line); } #### point intersects(Point point1, Point point2) { return point1.equals(point2); } #### sub intersects { my ($self, $arg1, $arg2) = @_; unless ( ($self->_is_point($arg1) or $self->_is_line($arg1)) && ($self->_is_point($arg2) or $self->_is_line($arg2)) ) { die "Bad args"; } if ($arg1->isa('point') and $arg2->isa('point')) { return $arg1->equals($arg2); } elsif ($arg1->isa('point') and $arg2->isa('line')) { return $self->_lp_intersect($arg1, $arg2); } elsif ($arg1->isa('line') and $arg2->isa('point')) { return $self->_lp_intersect($arg2, $arg1); } elsif ($arg1->isa('line') and $arg2->isa('line')) { return $self->_line_intersect($arg1, $arg2); } } #### unless ( ($self->_is_point($arg1) or $self->_is_line($arg1) or $self->_is_plane($arg1)) && ($self->_is_point($arg2) or $self->_is_line($arg2) or $self->_is_plane($arg2)) ) { die "Bad args"; } #### unless ( ($self->_is_point($arg1) or $self->_is_line($arg1) or $self->_is_plane($arg1)) && ($self->_is_point($arg2) or $self->_is_line($arg2) or $self->_is_plan($arg2)) ) { die "Bad args"; }