package SPVM::Point3D;

1;

=head1 Name

SPVM::Point3D - Point 3D

=head1 Usage

  use Point3D;
  
  my $point = Point3D->new;
  my $point = Point3D->new(1, 2, 3);

  $point->set_x(1);
  $point->set_y(2);
  $point->set_z(3);
  
  my $x = $point->x;
  my $y = $point->y;
  my $z = $point->z;
  
  my $point_string = $point->to_string;

=head1 Description

C<Point3D> is a class for a point 3D.

=head1 Super Class

L<Point|SPVM::Point> is the super class of C<Point3D>.

=head1 Fields

C<Point3D> inherits the fields of L<Point|SPVM::Point/"Fields">.

=head2 z

  has z : rw protected int;

C<z>.

=head1 Class Methods

=head2 new

  static method new : Point3D ($x = 0 : int, $y = 0 : int, $z = 0 : int);

Creates a new C<Point3D> object with $x, $y, $z.

=head1 Instance Methods

C<Point3D> inherits the instance methods of L<Point|SPVM::Point/"Instance Methods">.

=head2 init

  protected method init : Point3D ($x = 0 : int, $y = 0 : int, $z = 0 : int)

Initializes L</"x">, L</"y">, and L</"z">.

=head2 clear

  method clear : void ();

Sets L<x|SPVM::Point/"x">, L<y|SPVM::Point/"y">, and L</"z"> to 0.

=head2 clone

  method clone : Point3D ();

Creates a new C<Point3D> object that clones myself.

=head2 to_string

  method to_string : string ();

Stringifies the C<Point3D> object as the following format.

  (1,2,3)

=head1 Copyright & License

Copyright (c) 2023 Yuki Kimoto

MIT License