Pmmp Math Versions Save

PHP library containing math related code used in PocketMine-MP

1.0.0

9 months ago

Changes since 0.4.3

  • Added Facing::OFFSET constant (map of facing directions to their coordinate offsets)
  • Added AxisAlignedBB->offsetTowards() and AxisAlignedBB->offsetTowardsCopy() - moves the BB in the given direction by a specified distance
  • Modernize and cleanup code to PHP 8.0 standards

Despite the version bump to 1.0.0, this isn't a huge release. Staying on 0.x for so long was a mistake that needed to be corrected.

0.4.3

1 year ago

Changes since 0.4.2

  • Fixed deprecation warning from Matrix::offsetGet() (missed due to PHPStan bug).
  • Added more specific documentation for VoxelRayTrace::betweenPoints().

0.4.2

2 years ago
  • Improved error messages for Facing::rotate() when given incompatible axes and facings - they now show the names instead of the integer ID.

0.4.1

2 years ago

Changes since 0.4.0

  • Fixed deprecation warnings in Matrix on PHP 8.1.

0.4.0

2 years ago

Changes since 0.3.x

  • PHP 8.0 is now required.
  • Native union types have been applied to the following Vector3 elements:
    • __construct()
    • getX()
    • getY()
    • getZ()
    • add()
    • subtract()
    • maxPlainDistance()
    • withComponents()
    • x, y and z fields
  • Vector2 x and y fields now use native float property types.
  • Vector2->__construct() parameters are now mandatory.
  • Added Vector2->addVector(Vector2) and Vector2->subtractVector(Vector2), replacing the overloaded behaviour of add() and subtract().
  • Vector2->add() no longer accepts Vector2 in the first argument (use addVector() instead).
  • Vector2->subtract() no longer accepts Vector2 in the first argument (use subtractVector() instead).
  • Vector2->distance() no longer accepts float, float (now Vector2 is required).
  • Vector2->distanceSquared() no longer accepts float, float (now Vector2 is required).
  • Matrix has been modernized. All cases that used to return false on error now throw exceptions instead.
  • Axis, AxisAlignedBB, Facing, Math, VectorMath and VoxelRayTrace are now final.

0.3.0

2 years ago

This is a feature release, featuring significant API changes compared to 0.2.x.

Changes since 0.2.x

New features

  • Added Facing class, which allows using and manipulating 3D Facing values.
    • Vector3::SIDE_* constants are removed and replaced with Facing::* constants.
    • Vector3::getOppositeSide() is replaced by Facing::opposite().
    • Additional utilities like Facing::axis(), Facing::isPositive(), Facing::rotate() etc are provided.
  • Added Axis class.

Vector3

  • Removed the following API methods:
    • getOppositeSide(): use Facing::opposite() instead
    • setComponents(): mutating Vector3 is now discouraged, and in the future Vector3 will become immutable.
  • Vector3::SIDE_* constants have been removed (use Facing instead).
  • Added the following static API methods:
    • maxComponents(): returns a Vector3 with the highest x, y and z values of all the vectors given.
    • minComponents(): returns a Vector3 with the lowest x, y and z values of all the vectors given.
    • sum(): returns a Vector3 with x, y and z equalling the sums of the x, y and z values of the given vectors respectively.
  • Added the following dynamic API methods:
    • Added Vector3->sides(), which returns a Generator<Facing, Vector3> for all axis-aligned sides of the vector.
    • Added Vector3->sidesArray(), which returns array<Facing, Vector3> for all axis-aligned sides of the vector.
    • Added Vector3->sidesAroundAxis(), which returns Generator<Facing, Vector3> for axis-aligned sides of the vector not on the given axis.
    • Added Vector3->withComponents(), which allows easily creating a copy of a Vector3 while replacing one or more components of it.
  • Vector3->add() is split into two functions:
    • Vector3->add() now requires float, float, float and has no optional parameters.
    • Vector3->addVector() accepts Vector3, replacing the overloaded functionality of Vector3->add().
  • Vector3->subtract() is split into two functions:
    • Vector3->subtract() now requires float, float, float and has no optional parameters.
    • Vector3->subtractVector() accepts Vector3, replacing the overloaded functionality of Vector3->subtract().

AxisAlignedBB

  • AxisAlignedBB->__construct() now throws InvalidArgumentException if any of the min components are larger than their corresponding max components.
  • Removed the following API methods:
    • setBounds(): modifying AxisAlignedBB is now discouraged and AxisAlignedBB will become immutable in the future
    • setBB()
  • Added the following dynamic API methods:
    • extend(): adds a length of distance to the given face of the bounding box
    • extendedCopy()
    • trim(): removes a length of distance from the given face of the bounding box
    • trimmedCopy()
    • stretch(): adds a length of distance to both sides of the bounding box on the given axis
    • stretchedCopy()
    • squash(): removes a length of distance from both sides of the bounding box on the given axis
    • squashedCopy()
    • getXLength(): returns the difference between minX and maxX
    • getYLength(): returns the difference between minY and maxY
    • getZLength(): returns the difference between minZ and maxZ
    • isCube(): returns whether the bounding box's edges are all of approximately equal length
    • getVolume(): returns the amount of space inside the bounding box in cubic units
  • Added the following static API methods:
    • one(): returns a new AxisAlignedBB with min bounds 0,0,0 and max bounds 1,1,1

0.2.6

3 years ago

Changes since 0.2.5

  • Now tested on PHP 8.0.
  • Improved type info available to PHPStan.

0.2.5

3 years ago

Changes since 0.2.4

  • Cleaned up useless @param and @return type information that wasn't providing any information beyond what native types already described.
  • Now analysed with phpstan-strict-rules.

0.2.4

4 years ago

Changes since 0.2.3

  • Fixed determinant calculation for 1x1 matrix.
  • Vector3::subtract() now requires at least 1 parameter.
  • Vector3::maxPlainDistance() now requires at least 1 parameter.
  • Populated missing type information for Matrix, Vector3 and AxisAlignedBB.
  • Now scanned with PHPStan level 8.

0.2.3

4 years ago

Changes since 0.2.2

Vector3

  • Fixed incorrect parameter documentation on setComponents(), add() and subtract().