Physics-Balls

Balls of one size on a flat surface with friction: walls they bounce off, nose
points they rattle against, gates they drop through. An event-based analytic
engine in C, perl-free, with an XS door and a versioned C ABI (include/pb_abi.h)
so another module can roll balls with no Perl frame in between. It knows
nothing about any game; a pool or snooker adapter describes its table, sends a
strike as integers, and reads back the contacts in order, the rest layout, the
balls that dropped, and the trajectory as segments a client plays back.

The same inputs give the same doubles on every platform that keeps IEEE
arithmetic honest. The build turns off fused multiply-adds for that reason, and
the fixtures under t/ were recorded by the JavaScript prototype the engine was
transliterated from.

INSTALLATION

To install this module, run the following commands:

	perl Makefile.PL
	make
	make test
	make install

A C compiler is needed. ExtUtils::Depends installs the ABI header.

SUPPORT AND DOCUMENTATION

After installing, you can find documentation for this module with the
perldoc command.

    perldoc Physics::Balls

LICENSE AND COPYRIGHT

This software is Copyright (c) 2026 by LNATION.

This is free software, licensed under:

  The Artistic License 2.0 (GPL Compatible)
