module Geom

  # @param [Array] line1
  # @param [Array] line2
  #
  # @return [Array(Geom::Point3d, Geom::Point3d)]
  def self.closest_points(line1, line2)
  end


  # @param [Array<Geom::Point3d>] points
  #
  # @return [Array(Geom::Point3d, Geom::Point3d)]
  def self.fit_plane_to_points(*points)
  end

  # @param [Array] line1
  # @param [Array] line2
  #
  # @return [Geom::Point3d, Nil]
  def self.intersect_line_line
  end

  # @param [Array] line
  # @param [Array] plane
  #
  # @return [Geom::Point3d, Nil]
  def self.intersect_line_plane(line, plane)
  end

  # @param [Array] plane1
  # @param [Array] plane2
  #
  # @return [Geom::Point3d, Nil]
  def self.intersect_plane_plane(plane1, plane2)
  end

  # @overload linear_combination(weight1, point1, weight2, point2)
  #   @param [Numeric] weight1
  #   @param [Geom::Point3d] point1
  #   @param [Numeric] weight2
  #   @param [Geom::Point3d] point2
  #
  #   @return [Geom::Point3d]
  #
  # @overload linear_combination(weight1, vector1, weight2, vector2)
  #   @param [Numeric] weight1
  #   @param [Geom::Vector3d] vector1
  #   @param [Numeric] weight2
  #   @param [Geom::Vector3d] vector2
  #
  #   @return [Geom::Vector3d]
  def self.linear_combination(weight1, point1, weight2, point2)
  end

  # @param [Geom::Point3d] point
  # @param [Array<Geom::Point3d>] polygon
  # @param [Boolean] border
  #
  # @return [Boolean]
  def self.point_in_polygon_2D(point, polygon, border)
  end

end