toxiclibs

About

toxiclibs is an independent, open source library collection for computational design tasks with Java & Processing developed by Karsten “toxi” Schmidt (thus far). The classes are purposefully kept fairly generic in order to maximize re-use in different contexts ranging from generative design, animation, interaction/interface design, data visualization to architecture and digital fabrication, use as teaching tool and more.

After over 3 years of ongoing (almost daily) development the collection consists of:

  • 270+ classes
  • 18 packages bundled into 7 libraries
  • altogether >25k lines of code

The libraries have been designed to have no further dependencies in order to maximize reuse and flexibility. Even though these libraries have been mainly developed for use in Processing related projects, there is no explicit dependency on the monolithic PApplet or any other classes of the Processing toolkit. This is intentional & should be considered as a feature. The architectural concerns of these libraries will be discussed in more detail on this blog in due course.

Also, please note that all code in this project is using Java 5 syntax (and soon Java 6 only) and so will not work with older versions (before 0140) of Processing. Personally, I’ve been mainly using Eclipse for my projects and the “new” syntax just speeds up development time (if not execution time too).

Package overview

Javadocs are included in all downloads and are available online, an overview of available packages is here:

Currently available packages (needs updating)

  • toxi.audio
    • JOAL based 3D spatial audio
    • sound manager (and generative music composition system soon)
  • toxi.color
    • float based color type with RGB, HSV, CMYK accessors & operators
    • named colors & hues
    • color lists, ranges, themes
    • color theory strategies
    • super flexible color sorting with many presets
  • toxi.geom
    • 2d/3d vector maths
    • AABB, sphere, plane, triangle, ray
    • octree
    • splines
    • 4×4 matrix
    • intersection tests
    • Mesh container
    • OBJ and STL exporters (able to support massive files, with optional STL colour support)
  • toxi.math
    • common interpolation methods (demo included in download)
    • unit translators (between dpi, points, mm, pixels, useful for PDF generation)
    • some (collected) faster & convenient implementations of assorted common math functions (similar to processing, only without dependency on PApplet)
    • sin/cos lookup tables
    • Perlin & Simplex noise
    • wave generators
  • toxi.physics
    • basic 2d & 3D particle physics engine with Verlet integration
  • toxi.image.util
    • grayscale image filters
  • toxi.util.datatypes
    • TypedProperties class for dealing with Java property files
    • ArrayUtil
    • Float/Integer ranges (with/without bias)
    • Singleton registry