The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Physics::Springs - Simulate Particle Dynamics with Springs

SYNOPSIS

  use Physics::Springs;

ABSTRACT

  Simulate particle dynamics with springs.

DESCRIPTION

This module is intended as an add-on to the Physics::Particles module (version 1.00 or higher required) and may be used to simulate particle dynamics including spring-like forces between any two particles you specify.

Since version 1.00 of this module, Physics::Particles version 1.00 is required. Version 1.00 is neither compatible to earlier versions nor to any versions below 1.00 of Physics::Particles and Physics::Springs::Friction.

The module extends the API of Physics::Particles by one method which is documented below. Please see the documentation to Physics::Particles for more information about the API.

There are several particle properties required by Physics::Springs in order to work: These are the x/y/z coordinates, the vx/vy/vz velocity vector components, and a non-zero mass 'm'. Furthermore, it uses the _fx, _fy, _fz properties which the user should never modify directly.

Methods

add_spring

You may use the add_spring method to add springs to the system of particles. Each spring has a starting and end particle, a relaxed length, and a spring constant 'k'.

add_spring expects several named arguments. Required arguments are: The spring constant k, the starting (p1) and end (p2) points. Optional arguments are: The length of the relaxed spring 'len'. If len is not specified, the current distance between p1 and p2 will be used as the length of the relaxed spring.

DIAGNOSTICS

Some error messages you may encounter:

  "Precondition 1 not met for Physics::Springs::new()."
  new() does not take any parameters.
  
  "Postcondition 1 not met for Physics::Springs::new()"
  Complain to the author of the module. He screwed up.

  "Physics::Springs::new called in void context."
  It doesn't make sense to call constructors without action-at-a-distance
  in void context so don't.
  
  "Precondition 1 not met for Physics::Springs::add_spring()"
  add_spring() takes at least nine arguments.

  "Postcondition 1 not met for Physics::Springs::add_spring()"
  Complain to the author of the module. He screwed up.

SEE ALSO

The newest version of this module may be found on CPAN or http://steffen-mueller.net

The module this module subclasses: Physics::Particles

A module that adds force field-like forces to the simulation: Physics::Springs::Friction

Math::Project3D, Math::Project3D::Plot for a reasonably simple way to visualize your data.

AUTHOR

Steffen Mueller, <springs-module at steffen-mueller dot net>

COPYRIGHT AND LICENSE

Copyright 2003 by Steffen Mueller

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.