Installation Guides
  Installing and Running ArtiSynth on Windows
    1 Introduction
    2 Prerequisites
    3 Installing Java
      3.1 Making the JDK visible to your system
    4 Installing a Precompiled Release
    5 Installing from Github
      5.1 Cloning the repository
        5.1.1 Clone using Git for Windows
        5.1.2 Cloning using Cygwin
        5.1.3 Cloning using Eclipse
      5.2 Downloading the libraries
    6 Compiling ArtiSynth
      6.1 Compiling with Eclipse
      6.2 Compiling with Cygwin
    7 Running ArtiSynth
      7.1 Running using artisynth.bat
      7.2 Running using Cygwin
      7.3 Running using Eclipse
      7.4 Command line arguments
      7.5 Loading and Running Models
    8 Installing artisynth_models and Other External Packages
      8.1 Downloading
      8.2 Compiling
        8.2.1 Compiling with Eclipse
        8.2.2 Compiling from the command line
      8.3 Making Classes Visible to ArtiSynth
        8.3.1 Using the Eclipse Classpath
        8.3.2 Using the EXTCLASSPATH file
        8.3.3 Using CLASSPATH environment variable
    9 Updating ArtiSynth and Other Packages
      9.1 Library updates
    10 The Eclipse IDE
      10.1 Installing Eclipse
      10.2 Configuring Eclipse for ArtiSynth
      10.3 Importing ArtiSynth projects into Eclipse
        10.3.1 Importing external projects
        10.3.2 Importing projects from a remote Git repository
        10.3.3 Cloning a project from a remote Git repository
        10.3.4 Importing from a Subversion repository
        10.3.5 Installing project files
      10.4 Configuring environment variables
        10.4.1 Setting environment variables
      10.5 Command line and JVM arguments
        10.5.1 Setting command line and JVM arguments
      10.6 Adding projects to the build path
      10.7 Adding projects to the ArtiSynth launch configuration
      10.8 Installing a Subversion plug-in
      10.9 Preventing excessive resource copying
    11 Additional Information
      11.1 Adding Directories to the System Path
        11.1.1 Windows 10
        11.1.2 Windows 8 and earlier
      11.2 Git for Windows
      11.3 The TortoiseSVN Client
      11.4 Cygwin
      11.5 Environment variables
        11.5.1 Setting environment variables
        11.5.2 Typical environment settings
        11.5.3 Cygwin environment settings
      11.6 ArtiSynth Libraries
      11.7 The EXTCLASSPATH File
      11.8 Quick Git Summary
      11.9 Quick Subversion Summary
  Installing and Running ArtiSynth on MacOS
    1 Introduction
    2 Prerequisites
    3 Installing Java
      3.1 Making the JDK visible to your system
    4 Installing a Precompiled Release
    5 Installing from Github
      5.1 Cloning the repository
        5.1.1 Cloning using the command line
        5.1.2 Cloning using Eclipse
      5.2 Downloading the libraries
    6 Compiling ArtiSynth
      6.1 Compiling with Eclipse
      6.2 Compiling from the command line
    7 Running ArtiSynth
      7.1 Running from the command line
      7.2 Running from the file browser
      7.3 Running using Eclipse
      7.4 Command line arguments
      7.5 Loading and Running Models
    8 Installing artisynth_models and Other External Packages
      8.1 Downloading
      8.2 Compiling
        8.2.1 Compiling with Eclipse
        8.2.2 Compiling from the command line
      8.3 Making Classes Visible to ArtiSynth
        8.3.1 Using the Eclipse Classpath
        8.3.2 Using the EXTCLASSPATH file
        8.3.3 Using CLASSPATH environment variable
    9 Updating ArtiSynth and Other Packages
      9.1 Library updates
    10 The Eclipse IDE
      10.1 Installing Eclipse
      10.2 Configuring Eclipse for ArtiSynth
      10.3 Importing ArtiSynth projects into Eclipse
        10.3.1 Importing external projects
        10.3.2 Importing projects from a remote Git repository
        10.3.3 Cloning a project from a remote Git repository
        10.3.4 Importing from a Subversion repository
        10.3.5 Installing project files
      10.4 Configuring environment variables
        10.4.1 Setting environment variables
      10.5 Command line and JVM arguments
        10.5.1 Setting command line and JVM arguments
      10.6 Adding projects to the build path
      10.7 Adding projects to the ArtiSynth launch configuration
      10.8 Installing a Subversion plug-in
      10.9 Preventing excessive resource copying
    11 Additional Information
      11.1 Adding Directories to the System Path
      11.2 Environment variables
        11.2.1 Example environment set up for bash
        11.2.2 Example environment setup for csh or tcsh
      11.3 ArtiSynth Libraries
      11.4 The EXTCLASSPATH File
      11.5 Quick Git Summary
      11.6 Quick Subversion Summary
  Installing and Running ArtiSynth on Linux
    1 Introduction
    2 Prerequisites
    3 Installing Java
      3.1 Making the JDK visible to your system
    4 Installing a Precompiled Release
    5 Installing from Github
      5.1 Cloning the repository
        5.1.1 Cloning using the command line
        5.1.2 Cloning using Eclipse
      5.2 Downloading the libraries
    6 Compiling ArtiSynth
      6.1 Compiling with Eclipse
      6.2 Compiling from the command line
    7 Running ArtiSynth
      7.1 Running from the command line
      7.2 Running using Eclipse
      7.3 Command line arguments
      7.4 Loading and Running Models
    8 Installing artisynth_models and Other External Packages
      8.1 Downloading
      8.2 Compiling
        8.2.1 Compiling with Eclipse
        8.2.2 Compiling from the command line
      8.3 Making Classes Visible to ArtiSynth
        8.3.1 Using the Eclipse Classpath
        8.3.2 Using the EXTCLASSPATH file
        8.3.3 Using CLASSPATH environment variable
    9 Updating ArtiSynth and Other Packages
      9.1 Library updates
    10 The Eclipse IDE
      10.1 Installing Eclipse
      10.2 Configuring Eclipse for ArtiSynth
      10.3 Importing ArtiSynth projects into Eclipse
        10.3.1 Importing external projects
        10.3.2 Importing projects from a remote Git repository
        10.3.3 Cloning a project from a remote Git repository
        10.3.4 Importing from a Subversion repository
        10.3.5 Installing project files
      10.4 Configuring environment variables
        10.4.1 Setting environment variables
      10.5 Command line and JVM arguments
        10.5.1 Setting command line and JVM arguments
      10.6 Adding projects to the build path
      10.7 Adding projects to the ArtiSynth launch configuration
      10.8 Installing a Subversion plug-in
      10.9 Preventing excessive resource copying
    11 Additional Information
      11.1 Adding Directories to the System Path
      11.2 Environment variables
        11.2.1 Example environment set up for bash
        11.2.2 Example environment setup for csh or tcsh
      11.3 ArtiSynth Libraries
      11.4 The EXTCLASSPATH File
      11.5 Quick Git Summary
      11.6 Quick Subversion Summary
  Installing and Running ArtiSynth on Windows
    1 Introduction
    2 Prerequisites
    3 Installing Java
      3.1 Making the JDK visible to your system
    4 Installing a Precompiled Release
    5 Installing from Github
      5.1 Cloning the repository
        5.1.1 Clone using Git for Windows
        5.1.2 Cloning using Cygwin
        5.1.3 Cloning using Eclipse
      5.2 Downloading the libraries
    6 Compiling ArtiSynth
      6.1 Compiling with Eclipse
      6.2 Compiling with Cygwin
    7 Running ArtiSynth
      7.1 Running using artisynth.bat
      7.2 Running using Cygwin
      7.3 Running using Eclipse
      7.4 Command line arguments
      7.5 Loading and Running Models
    8 Installing artisynth_models and Other External Packages
      8.1 Downloading
      8.2 Compiling
        8.2.1 Compiling with Eclipse
        8.2.2 Compiling from the command line
      8.3 Making Classes Visible to ArtiSynth
        8.3.1 Using the Eclipse Classpath
        8.3.2 Using the EXTCLASSPATH file
        8.3.3 Using CLASSPATH environment variable
    9 Updating ArtiSynth and Other Packages
      9.1 Library updates
    10 The Eclipse IDE
      10.1 Installing Eclipse
      10.2 Configuring Eclipse for ArtiSynth
      10.3 Importing ArtiSynth projects into Eclipse
        10.3.1 Importing external projects
        10.3.2 Importing projects from a remote Git repository
        10.3.3 Cloning a project from a remote Git repository
        10.3.4 Importing from a Subversion repository
        10.3.5 Installing project files
      10.4 Configuring environment variables
        10.4.1 Setting environment variables
      10.5 Command line and JVM arguments
        10.5.1 Setting command line and JVM arguments
      10.6 Adding projects to the build path
      10.7 Adding projects to the ArtiSynth launch configuration
      10.8 Installing a Subversion plug-in
      10.9 Preventing excessive resource copying
    11 Additional Information
      11.1 Adding Directories to the System Path
        11.1.1 Windows 10
        11.1.2 Windows 8 and earlier
      11.2 Git for Windows
      11.3 The TortoiseSVN Client
      11.4 Cygwin
      11.5 Environment variables
        11.5.1 Setting environment variables
        11.5.2 Typical environment settings
        11.5.3 Cygwin environment settings
      11.6 ArtiSynth Libraries
      11.7 The EXTCLASSPATH File
      11.8 Quick Git Summary
      11.9 Quick Subversion Summary
  Installing and Running ArtiSynth on MacOS
    1 Introduction
    2 Prerequisites
    3 Installing Java
      3.1 Making the JDK visible to your system
    4 Installing a Precompiled Release
    5 Installing from Github
      5.1 Cloning the repository
        5.1.1 Cloning using the command line
        5.1.2 Cloning using Eclipse
      5.2 Downloading the libraries
    6 Compiling ArtiSynth
      6.1 Compiling with Eclipse
      6.2 Compiling from the command line
    7 Running ArtiSynth
      7.1 Running from the command line
      7.2 Running from the file browser
      7.3 Running using Eclipse
      7.4 Command line arguments
      7.5 Loading and Running Models
    8 Installing artisynth_models and Other External Packages
      8.1 Downloading
      8.2 Compiling
        8.2.1 Compiling with Eclipse
        8.2.2 Compiling from the command line
      8.3 Making Classes Visible to ArtiSynth
        8.3.1 Using the Eclipse Classpath
        8.3.2 Using the EXTCLASSPATH file
        8.3.3 Using CLASSPATH environment variable
    9 Updating ArtiSynth and Other Packages
      9.1 Library updates
    10 The Eclipse IDE
      10.1 Installing Eclipse
      10.2 Configuring Eclipse for ArtiSynth
      10.3 Importing ArtiSynth projects into Eclipse
        10.3.1 Importing external projects
        10.3.2 Importing projects from a remote Git repository
        10.3.3 Cloning a project from a remote Git repository
        10.3.4 Importing from a Subversion repository
        10.3.5 Installing project files
      10.4 Configuring environment variables
        10.4.1 Setting environment variables
      10.5 Command line and JVM arguments
        10.5.1 Setting command line and JVM arguments
      10.6 Adding projects to the build path
      10.7 Adding projects to the ArtiSynth launch configuration
      10.8 Installing a Subversion plug-in
      10.9 Preventing excessive resource copying
    11 Additional Information
      11.1 Adding Directories to the System Path
      11.2 Environment variables
        11.2.1 Example environment set up for bash
        11.2.2 Example environment setup for csh or tcsh
      11.3 ArtiSynth Libraries
      11.4 The EXTCLASSPATH File
      11.5 Quick Git Summary
      11.6 Quick Subversion Summary
  Installing and Running ArtiSynth on Linux
    1 Introduction
    2 Prerequisites
    3 Installing Java
      3.1 Making the JDK visible to your system
    4 Installing a Precompiled Release
    5 Installing from Github
      5.1 Cloning the repository
        5.1.1 Cloning using the command line
        5.1.2 Cloning using Eclipse
      5.2 Downloading the libraries
    6 Compiling ArtiSynth
      6.1 Compiling with Eclipse
      6.2 Compiling from the command line
    7 Running ArtiSynth
      7.1 Running from the command line
      7.2 Running using Eclipse
      7.3 Command line arguments
      7.4 Loading and Running Models
    8 Installing artisynth_models and Other External Packages
      8.1 Downloading
      8.2 Compiling
        8.2.1 Compiling with Eclipse
        8.2.2 Compiling from the command line
      8.3 Making Classes Visible to ArtiSynth
        8.3.1 Using the Eclipse Classpath
        8.3.2 Using the EXTCLASSPATH file
        8.3.3 Using CLASSPATH environment variable
    9 Updating ArtiSynth and Other Packages
      9.1 Library updates
    10 The Eclipse IDE
      10.1 Installing Eclipse
      10.2 Configuring Eclipse for ArtiSynth
      10.3 Importing ArtiSynth projects into Eclipse
        10.3.1 Importing external projects
        10.3.2 Importing projects from a remote Git repository
        10.3.3 Cloning a project from a remote Git repository
        10.3.4 Importing from a Subversion repository
        10.3.5 Installing project files
      10.4 Configuring environment variables
        10.4.1 Setting environment variables
      10.5 Command line and JVM arguments
        10.5.1 Setting command line and JVM arguments
      10.6 Adding projects to the build path
      10.7 Adding projects to the ArtiSynth launch configuration
      10.8 Installing a Subversion plug-in
      10.9 Preventing excessive resource copying
    11 Additional Information
      11.1 Adding Directories to the System Path
      11.2 Environment variables
        11.2.1 Example environment set up for bash
        11.2.2 Example environment setup for csh or tcsh
      11.3 ArtiSynth Libraries
      11.4 The EXTCLASSPATH File
      11.5 Quick Git Summary
      11.6 Quick Subversion Summary
ArtiSynth Modeling Guide
  Preface
    How to read this guide
  Chapter 1 ArtiSynth Overview
    1.1 System structure
      1.1.1 Model components
      1.1.2 The RootModel
      1.1.3 Component path names
      1.1.4 Model advancement
      1.1.5 MechModel
    1.2 Physics simulation
    1.3 Basic packages
      1.3.1 maspack
      1.3.2 artisynth.core
      1.3.3 artisynth.demos
    1.4 Properties
      1.4.1 Querying and setting property values
      1.4.2 Property handles and paths
      1.4.3 Composite and inheritable properties
    1.5 Creating an application model
      1.5.1 Implementing the build() method
      1.5.2 Making models visible to ArtiSynth
      1.5.3 Loading and running a model
  Chapter 2 Supporting classes
    2.1 Vectors and matrices
    2.2 Rotations and transformations
    2.3 Points and Vectors
    2.4 Spatial vectors and inertias
    2.5 Meshes
      2.5.1 Mesh creation
      2.5.2 Setting normals, colors, and textures
      2.5.3 Automatic creation of normals and hard edges
      2.5.4 Vertex and feature coloring
      2.5.5 Reading and writing mesh files
      2.5.6 Reading and writing normal and texture information
      2.5.7 Constructive solid geometry
    2.6 Reading source relative files
    2.7 Reading and caching remote files
  Chapter 3 Mechanical Models I
    3.1 Springs and particles
      3.1.1 Axial springs and materials
      3.1.2 Example: A simple particle-spring model
      3.1.3 Dynamic, parametric, and attached components
      3.1.4 Custom axial materials
      3.1.5 Damping parameters
    3.2 Rigid bodies
      3.2.1 Frame markers
      3.2.2 Example: A simple rigid body-spring model
      3.2.3 Creating rigid bodies
      3.2.4 Pose and velocity
      3.2.5 Inertia and the surface mesh
      3.2.6 Damping parameters
      3.2.7 Multiple meshes
      3.2.8 Example: a composite rigid body
    3.3 Joints and connectors
      3.3.1 Joints and coordinate frames
      3.3.2 Creating Joints
      3.3.3 Example: A simple revolute joint
      3.3.4 Commonly used joints
    3.4 Frame springs
      3.4.1 Frame spring coordinate frames
      3.4.2 Frame materials
      3.4.3 Creating frame springs
      3.4.4 Example: Two bodies connected by a frame spring
    3.5 Attachments
      3.5.1 Point attachments
      3.5.2 Example: model with particle attachments
      3.5.3 Frame attachments
      3.5.4 Example: model with frame attachments
  Chapter 4 Mechanical Models II
    4.1 Simulation control properties
    4.2 Units
      4.2.1 Scaling units
    4.3 Render properties
      4.3.1 Render property taxonomy
      4.3.2 Setting render properties
      4.3.3 Texture mapping
    4.4 Point-to-point muscles
      4.4.1 Muscle materials
      4.4.2 Example: Muscle attached to a rigid body
    4.5 Collision Handling
      4.5.1 Enabling collisions in code
      4.5.2 Example: Collision with a plane
      4.5.3 Collision behaviors
      4.5.4 Self-collision and collidable hierarchies
      4.5.5 Collidability
      4.5.6 Collision response
      4.5.7 Nested MechModels
    4.6 Collision Implementation and Rendering
      4.6.1 Collision methods and collider types
      4.6.2 Collision meshes and signed distance grids
      4.6.3 Penetration tolerance and limitations
      4.6.4 Contact rendering
      4.6.5 Example: Rendering normals and contours
      4.6.6 Example: Rendering a color map
    4.7 Distance Grids and Components
    4.8 Transforming geometry
      4.8.1 Nonlinear transformations
      4.8.2 Example: the FemModelDeformer class
      4.8.3 Implementation and behavior
      4.8.4 Use in model registration
    4.9 General component arrangements
      4.9.1 Container components
      4.9.2 Example: a net formed from balls and springs
      4.9.3 Adding containers to other models
  Chapter 5 Simulation Control
    5.1 Control Panels
      5.1.1 General principles
      5.1.2 Example: Creating a simple control panel
    5.2 Custom properties
      5.2.1 Adding properties to a component
      5.2.2 Example: a visibility property
    5.3 Controllers and monitors
      5.3.1 Implementation
      5.3.2 Example: A controller to move a point
    5.4 Probes
      5.4.1 Numeric probe structure
      5.4.2 Creating probes in code
      5.4.3 Example: probes connected to SimpleMuscle
      5.4.4 Data file format
      5.4.5 Adding probe data in-line
      5.4.6 Numeric monitor probes
      5.4.7 Numeric control probes
    5.5 Application-Defined Menu Items
  Chapter 6 Finite Element Models
    6.1 Overview
      6.1.1 FemModel3d
      6.1.2 Component Structure
        6.1.2.1 Nodes
        6.1.2.2 Elements
        6.1.2.3 Shell elements
        6.1.2.4 Meshes
      6.1.3 Materials
      6.1.4 Boundary conditions
    6.2 FEM model creation
      6.2.1 Factory methods
      6.2.2 Loading external FEM meshes
      6.2.3 Generating from surfaces
      6.2.4 Building elements in code
      6.2.5 Example: a simple beam model
    6.3 FEM Geometry
      6.3.1 Surface meshes
      6.3.2 Embedding geometry within an FEM
      6.3.3 Example: a beam with an embedded sphere
    6.4 Node attachments
      6.4.1 Connecting nodes to rigid bodies or particles
      6.4.2 Example: connecting a beam to a block
      6.4.3 Connecting nodes directly to elements
      6.4.4 Example: connecting two FEMs together
      6.4.5 Nodal-based attachments
      6.4.6 Example: element vs. nodal-based attachments
    6.5 FEM markers
      6.5.1 Example: attaching an FEM beam to a muscle
    6.6 Frame attachments
      6.6.1 Example: attaching frames to an FEM beam
      6.6.2 Adding joints to FEM models
      6.6.3 Example: two FEM beams connected by a joint
    6.7 Incompressibility
      6.7.1 Volume regions and locking
      6.7.2 Hard incompressibility
      6.7.3 Soft incompressibility
      6.7.4 Incompressibility and linear materials
      6.7.5 Using incompressibility in practice
    6.8 Varying and augmenting material behaviors
      6.8.1 Example: FEM sheet with a stiff spine
    6.9 Muscle activated FEM models
      6.9.1 FemMuscleModel
        6.9.1.1 Bundles
        6.9.1.2 Exciters
      6.9.2 Fibre-based muscles
      6.9.3 Material-based muscles
      6.9.4 Example: comparison with two beam examples
    6.10 Fields
      6.10.1 Field types
      6.10.2 Adding fields to a model
      6.10.3 Binding to material propertues
      6.10.4 Example: FEM with variable stiffness
      6.10.5 Example: specifying FEM muscle directions
    6.11 Collisions
      6.11.1 Example: FEM collisions
    6.12 Rendering and Visualizations
      6.12.1 Example: stress and strain plotting
      6.12.2 Example: rendering contact pressures
  Chapter 7 Muscle Wrapping and Via Points
    7.1 Via Points
      7.1.1 Example: a muscle with via points
    7.2 Obstacle Wrapping
      7.2.1 Example: wrapping around a cylinder
    7.3 General Surfaces and Distance Grids
      7.3.1 Example: wrapping around a bone
    7.4 Initializing the Wrap Path
      7.4.1 Example: wrapping around a torus
    7.5 Alternate Wrapping Surfaces
      7.5.1 Example: wrapping for a finger joint
    7.6 Tuning the Wrapping Behavior
  Chapter 8 DICOM Images
    8.1 The DICOM file format
    8.2 The DICOM classes
      8.2.1 DicomElement
      8.2.2 DicomHeader
      8.2.3 DicomPixelBuffer
      8.2.4 DicomSlice
      8.2.5 DicomImage
    8.3 Loading a DicomImage
      8.3.1 Time-dependent images
      8.3.2 Image formats
    8.4 The DicomViewer
    8.5 DICOM example
  Appendix A Mathematical Review
    A.1 Rotation transforms
    A.2 Rigid transforms
    A.3 Affine transforms
    A.4 Rotational velocity
    A.5 Spatial velocities and forces
    A.6 Spatial inertia
  Bibliography
  Preface
    How to read this guide
  Chapter 1 ArtiSynth Overview
    1.1 System structure
      1.1.1 Model components
      1.1.2 The RootModel
      1.1.3 Component path names
      1.1.4 Model advancement
      1.1.5 MechModel
    1.2 Physics simulation
    1.3 Basic packages
      1.3.1 maspack
      1.3.2 artisynth.core
      1.3.3 artisynth.demos
    1.4 Properties
      1.4.1 Querying and setting property values
      1.4.2 Property handles and paths
      1.4.3 Composite and inheritable properties
    1.5 Creating an application model
      1.5.1 Implementing the build() method
      1.5.2 Making models visible to ArtiSynth
      1.5.3 Loading and running a model
  Chapter 2 Supporting classes
    2.1 Vectors and matrices
    2.2 Rotations and transformations
    2.3 Points and Vectors
    2.4 Spatial vectors and inertias
    2.5 Meshes
      2.5.1 Mesh creation
      2.5.2 Setting normals, colors, and textures
      2.5.3 Automatic creation of normals and hard edges
      2.5.4 Vertex and feature coloring
      2.5.5 Reading and writing mesh files
      2.5.6 Reading and writing normal and texture information
      2.5.7 Constructive solid geometry
    2.6 Reading source relative files
    2.7 Reading and caching remote files
  Chapter 3 Mechanical Models I
    3.1 Springs and particles
      3.1.1 Axial springs and materials
      3.1.2 Example: A simple particle-spring model
      3.1.3 Dynamic, parametric, and attached components
      3.1.4 Custom axial materials
      3.1.5 Damping parameters
    3.2 Rigid bodies
      3.2.1 Frame markers
      3.2.2 Example: A simple rigid body-spring model
      3.2.3 Creating rigid bodies
      3.2.4 Pose and velocity
      3.2.5 Inertia and the surface mesh
      3.2.6 Damping parameters
      3.2.7 Multiple meshes
      3.2.8 Example: a composite rigid body
    3.3 Joints and connectors
      3.3.1 Joints and coordinate frames
      3.3.2 Creating Joints
      3.3.3 Example: A simple revolute joint
      3.3.4 Commonly used joints
    3.4 Frame springs
      3.4.1 Frame spring coordinate frames
      3.4.2 Frame materials
      3.4.3 Creating frame springs
      3.4.4 Example: Two bodies connected by a frame spring
    3.5 Attachments
      3.5.1 Point attachments
      3.5.2 Example: model with particle attachments
      3.5.3 Frame attachments
      3.5.4 Example: model with frame attachments
  Chapter 4 Mechanical Models II
    4.1 Simulation control properties
    4.2 Units
      4.2.1 Scaling units
    4.3 Render properties
      4.3.1 Render property taxonomy
      4.3.2 Setting render properties
      4.3.3 Texture mapping
    4.4 Point-to-point muscles
      4.4.1 Muscle materials
      4.4.2 Example: Muscle attached to a rigid body
    4.5 Collision Handling
      4.5.1 Enabling collisions in code
      4.5.2 Example: Collision with a plane
      4.5.3 Collision behaviors
      4.5.4 Self-collision and collidable hierarchies
      4.5.5 Collidability
      4.5.6 Collision response
      4.5.7 Nested MechModels
    4.6 Collision Implementation and Rendering
      4.6.1 Collision methods and collider types
      4.6.2 Collision meshes and signed distance grids
      4.6.3 Penetration tolerance and limitations
      4.6.4 Contact rendering
      4.6.5 Example: Rendering normals and contours
      4.6.6 Example: Rendering a color map
    4.7 Distance Grids and Components
    4.8 Transforming geometry
      4.8.1 Nonlinear transformations
      4.8.2 Example: the FemModelDeformer class
      4.8.3 Implementation and behavior
      4.8.4 Use in model registration
    4.9 General component arrangements
      4.9.1 Container components
      4.9.2 Example: a net formed from balls and springs
      4.9.3 Adding containers to other models
  Chapter 5 Simulation Control
    5.1 Control Panels
      5.1.1 General principles
      5.1.2 Example: Creating a simple control panel
    5.2 Custom properties
      5.2.1 Adding properties to a component
      5.2.2 Example: a visibility property
    5.3 Controllers and monitors
      5.3.1 Implementation
      5.3.2 Example: A controller to move a point
    5.4 Probes
      5.4.1 Numeric probe structure
      5.4.2 Creating probes in code
      5.4.3 Example: probes connected to SimpleMuscle
      5.4.4 Data file format
      5.4.5 Adding probe data in-line
      5.4.6 Numeric monitor probes
      5.4.7 Numeric control probes
    5.5 Application-Defined Menu Items
  Chapter 6 Finite Element Models
    6.1 Overview
      6.1.1 FemModel3d
      6.1.2 Component Structure
        6.1.2.1 Nodes
        6.1.2.2 Elements
        6.1.2.3 Shell elements
        6.1.2.4 Meshes
      6.1.3 Materials
      6.1.4 Boundary conditions
    6.2 FEM model creation
      6.2.1 Factory methods
      6.2.2 Loading external FEM meshes
      6.2.3 Generating from surfaces
      6.2.4 Building elements in code
      6.2.5 Example: a simple beam model
    6.3 FEM Geometry
      6.3.1 Surface meshes
      6.3.2 Embedding geometry within an FEM
      6.3.3 Example: a beam with an embedded sphere
    6.4 Node attachments
      6.4.1 Connecting nodes to rigid bodies or particles
      6.4.2 Example: connecting a beam to a block
      6.4.3 Connecting nodes directly to elements
      6.4.4 Example: connecting two FEMs together
      6.4.5 Nodal-based attachments
      6.4.6 Example: element vs. nodal-based attachments
    6.5 FEM markers
      6.5.1 Example: attaching an FEM beam to a muscle
    6.6 Frame attachments
      6.6.1 Example: attaching frames to an FEM beam
      6.6.2 Adding joints to FEM models
      6.6.3 Example: two FEM beams connected by a joint
    6.7 Incompressibility
      6.7.1 Volume regions and locking
      6.7.2 Hard incompressibility
      6.7.3 Soft incompressibility
      6.7.4 Incompressibility and linear materials
      6.7.5 Using incompressibility in practice
    6.8 Varying and augmenting material behaviors
      6.8.1 Example: FEM sheet with a stiff spine
    6.9 Muscle activated FEM models
      6.9.1 FemMuscleModel
        6.9.1.1 Bundles
        6.9.1.2 Exciters
      6.9.2 Fibre-based muscles
      6.9.3 Material-based muscles
      6.9.4 Example: comparison with two beam examples
    6.10 Fields
      6.10.1 Field types
      6.10.2 Adding fields to a model
      6.10.3 Binding to material propertues
      6.10.4 Example: FEM with variable stiffness
      6.10.5 Example: specifying FEM muscle directions
    6.11 Collisions
      6.11.1 Example: FEM collisions
    6.12 Rendering and Visualizations
      6.12.1 Example: stress and strain plotting
      6.12.2 Example: rendering contact pressures
  Chapter 7 Muscle Wrapping and Via Points
    7.1 Via Points
      7.1.1 Example: a muscle with via points
    7.2 Obstacle Wrapping
      7.2.1 Example: wrapping around a cylinder
    7.3 General Surfaces and Distance Grids
      7.3.1 Example: wrapping around a bone
    7.4 Initializing the Wrap Path
      7.4.1 Example: wrapping around a torus
    7.5 Alternate Wrapping Surfaces
      7.5.1 Example: wrapping for a finger joint
    7.6 Tuning the Wrapping Behavior
  Chapter 8 DICOM Images
    8.1 The DICOM file format
    8.2 The DICOM classes
      8.2.1 DicomElement
      8.2.2 DicomHeader
      8.2.3 DicomPixelBuffer
      8.2.4 DicomSlice
      8.2.5 DicomImage
    8.3 Loading a DicomImage
      8.3.1 Time-dependent images
      8.3.2 Image formats
    8.4 The DicomViewer
    8.5 DICOM example
  Appendix A Mathematical Review
    A.1 Rotation transforms
    A.2 Rigid transforms
    A.3 Affine transforms
    A.4 Rotational velocity
    A.5 Spatial velocities and forces
    A.6 Spatial inertia
  Bibliography
ArtiSynth User Interface Guide
  1 Introduction
  2 Loading, Simulating and Saving Models
    2.1 Loading from the Models menu
    2.2 Loading by class path
    2.3 Loading from a file
    2.4 Reloading a model
    2.5 Simulating a model
    2.6 Other toolbar controls
    2.7 Saving a model
  3 The Viewer
    3.1 Viewer Toolbar
    3.2 Viewpoint Control
    3.3 Adding Additional Viewers
    3.4 Orthographic vs. Perspective Projection
    3.5 Viewer Grid
      3.5.1 Grid units
      3.5.2 Axis Labeling
      3.5.3 Grid properties
    3.6 Clipping Planes
      3.6.1 Adding and removing
      3.6.2 Moving
      3.6.3 Offsets
      3.6.4 Enabling/disabling
      3.6.5 Slicing mode
      3.6.6 Other features
    3.7 Indicating 3D Positions with the Mouse
    3.8 Alternate Mouse Bindings
    3.9 Keyboard Shortcuts
  4 Component Navigation and Selection
    4.1 The Component Hierarchy
      4.1.1 Component names and numbers
      4.1.2 Component path names
    4.2 Navigation Panel Selection
      4.2.1 Large numbers of nameless components
    4.3 Viewer Selection
      4.3.1 Click and box selection
      4.3.2 Elliptic selection
      4.3.3 Selection filtering
    4.4 Selection Display
    4.5 Selecting Parent and Ancestor Components
    4.6 Highlighting Selected Components
  5 Model Manipulation
    5.1 Dragger Fixtures
    5.2 Transformer Tools
      5.2.1 Constrained transformation
      5.2.2 Transformer repositioning
      5.2.3 Changing the transformer base frame
    5.3 Pull Manipulation
    5.4 Marker Tool
  6 Editing Properties
    6.1 Property Panels
      6.1.1 Inheritable properties
    6.2 Render Properties
      6.2.1 Render property settings
  7 The Timeline
    7.1 Basic Structure
      7.1.1 Play controls
      7.1.2 Tracks
    7.2 Waypoints and Breakpoints
      7.2.1 Waypoints
      7.2.2 Breakpoints
      7.2.3 Saving and loading waypoints
    7.3 Tracks and Probes
      7.3.1 Creating, moving, and deleting tracks
      7.3.2 Muting tracks
      7.3.3 Expanding tracks
      7.3.4 Grouping tracks
    7.4 Numeric Probe Displays
      7.4.1 Setting the range
      7.4.2 Visibility control
      7.4.3 Editing data
      7.4.4 Interpolation control
      7.4.5 Large displays
  8 Visual Display
    8.1 Point Tracing
      8.1.1 Rendering only the trace(s)
  9 Probes
    9.1 Saving and Loading Probes and Their Data
      9.1.1 Saving probes
      9.1.2 Saving probes in a different directory
      9.1.3 Loading probes
      9.1.4 Loading probes from a different directory
  10 Adding and Editing Numeric Probes
    10.1 Adding Output Probes
      10.1.1 Creating a simple probe
      10.1.2 General output probes
      10.1.3 Using the probe editor
    10.2 Adding Input Probes
      10.2.1 Creating a simple probe
      10.2.2 General input probes
      10.2.3 Using the probe editor
    10.3 Setting Probe Properties
  11 Making Movies
    11.1 Region To Capture Options
    11.2 Record Options
    11.3 Output Options
    11.4 Output Size Options
  12 Control Panels
    12.1 Creating Control Panels
      12.1.1 Composite property widgets
      12.1.2 Widgets for sub-properties
    12.2 Editing Control Panels
    12.3 Live Updating
  13 Component Editing
    13.1 Generic Edit Operations
      13.1.1 Deletion
      13.1.2 Duplication
      13.1.3 Undo
    13.2 Editing Panels
    13.3 Specifying Position, Orientation, and Scaling
    13.4 Editing MechModels
      13.4.1 Adding finite element models
      13.4.2 Adding rigid bodies
      13.4.3 Adding frame markers
      13.4.4 Adding particles
      13.4.5 Adding axial springs and muscles
      13.4.6 Adding rigid body connectors
      13.4.7 Attaching particles to particles
      13.4.8 Attaching particles to rigid bodies
      13.4.9 Collision handling
    13.5 Editing Rigid Bodies
      13.5.1 Geometry and inertia
    13.6 Editing FEM Models
      13.6.1 Adding FEM markers
      13.6.2 Adding muscle bundles
    13.7 Editing Muscle Bundles
      13.7.1 Adding fibres
      13.7.2 Adding element references
      13.7.3 Automatically Setting Elements and Directions
      13.7.4 Removing fibres and element references
    13.8 Editing Muscle Exciters
    13.9 Editing Root Models
  14 Customizing the Models Menu
    14.1 Plain text Format
    14.2 XML Format
      14.2.1 The root element
      14.2.2 Models
      14.2.3 Separators
      14.2.4 Labels
      14.2.5 Sub-menus
      14.2.6 Packages
      14.2.7 Plain text files
      14.2.8 History
      14.2.9 Importing other XML files
      14.2.10 Hiding Elements
  1 Introduction
  2 Loading, Simulating and Saving Models
    2.1 Loading from the Models menu
    2.2 Loading by class path
    2.3 Loading from a file
    2.4 Reloading a model
    2.5 Simulating a model
    2.6 Other toolbar controls
    2.7 Saving a model
  3 The Viewer
    3.1 Viewer Toolbar
    3.2 Viewpoint Control
    3.3 Adding Additional Viewers
    3.4 Orthographic vs. Perspective Projection
    3.5 Viewer Grid
      3.5.1 Grid units
      3.5.2 Axis Labeling
      3.5.3 Grid properties
    3.6 Clipping Planes
      3.6.1 Adding and removing
      3.6.2 Moving
      3.6.3 Offsets
      3.6.4 Enabling/disabling
      3.6.5 Slicing mode
      3.6.6 Other features
    3.7 Indicating 3D Positions with the Mouse
    3.8 Alternate Mouse Bindings
    3.9 Keyboard Shortcuts
  4 Component Navigation and Selection
    4.1 The Component Hierarchy
      4.1.1 Component names and numbers
      4.1.2 Component path names
    4.2 Navigation Panel Selection
      4.2.1 Large numbers of nameless components
    4.3 Viewer Selection
      4.3.1 Click and box selection
      4.3.2 Elliptic selection
      4.3.3 Selection filtering
    4.4 Selection Display
    4.5 Selecting Parent and Ancestor Components
    4.6 Highlighting Selected Components
  5 Model Manipulation
    5.1 Dragger Fixtures
    5.2 Transformer Tools
      5.2.1 Constrained transformation
      5.2.2 Transformer repositioning
      5.2.3 Changing the transformer base frame
    5.3 Pull Manipulation
    5.4 Marker Tool
  6 Editing Properties
    6.1 Property Panels
      6.1.1 Inheritable properties
    6.2 Render Properties
      6.2.1 Render property settings
  7 The Timeline
    7.1 Basic Structure
      7.1.1 Play controls
      7.1.2 Tracks
    7.2 Waypoints and Breakpoints
      7.2.1 Waypoints
      7.2.2 Breakpoints
      7.2.3 Saving and loading waypoints
    7.3 Tracks and Probes
      7.3.1 Creating, moving, and deleting tracks
      7.3.2 Muting tracks
      7.3.3 Expanding tracks
      7.3.4 Grouping tracks
    7.4 Numeric Probe Displays
      7.4.1 Setting the range
      7.4.2 Visibility control
      7.4.3 Editing data
      7.4.4 Interpolation control
      7.4.5 Large displays
  8 Visual Display
    8.1 Point Tracing
      8.1.1 Rendering only the trace(s)
  9 Probes
    9.1 Saving and Loading Probes and Their Data
      9.1.1 Saving probes
      9.1.2 Saving probes in a different directory
      9.1.3 Loading probes
      9.1.4 Loading probes from a different directory
  10 Adding and Editing Numeric Probes
    10.1 Adding Output Probes
      10.1.1 Creating a simple probe
      10.1.2 General output probes
      10.1.3 Using the probe editor
    10.2 Adding Input Probes
      10.2.1 Creating a simple probe
      10.2.2 General input probes
      10.2.3 Using the probe editor
    10.3 Setting Probe Properties
  11 Making Movies
    11.1 Region To Capture Options
    11.2 Record Options
    11.3 Output Options
    11.4 Output Size Options
  12 Control Panels
    12.1 Creating Control Panels
      12.1.1 Composite property widgets
      12.1.2 Widgets for sub-properties
    12.2 Editing Control Panels
    12.3 Live Updating
  13 Component Editing
    13.1 Generic Edit Operations
      13.1.1 Deletion
      13.1.2 Duplication
      13.1.3 Undo
    13.2 Editing Panels
    13.3 Specifying Position, Orientation, and Scaling
    13.4 Editing MechModels
      13.4.1 Adding finite element models
      13.4.2 Adding rigid bodies
      13.4.3 Adding frame markers
      13.4.4 Adding particles
      13.4.5 Adding axial springs and muscles
      13.4.6 Adding rigid body connectors
      13.4.7 Attaching particles to particles
      13.4.8 Attaching particles to rigid bodies
      13.4.9 Collision handling
    13.5 Editing Rigid Bodies
      13.5.1 Geometry and inertia
    13.6 Editing FEM Models
      13.6.1 Adding FEM markers
      13.6.2 Adding muscle bundles
    13.7 Editing Muscle Bundles
      13.7.1 Adding fibres
      13.7.2 Adding element references
      13.7.3 Automatically Setting Elements and Directions
      13.7.4 Removing fibres and element references
    13.8 Editing Muscle Exciters
    13.9 Editing Root Models
  14 Customizing the Models Menu
    14.1 Plain text Format
    14.2 XML Format
      14.2.1 The root element
      14.2.2 Models
      14.2.3 Separators
      14.2.4 Labels
      14.2.5 Sub-menus
      14.2.6 Packages
      14.2.7 Plain text files
      14.2.8 History
      14.2.9 Importing other XML files
      14.2.10 Hiding Elements
Maspack Reference Manual
  Preface
  Chapter 1 Properties
    1.1 Accessing Properties
      1.1.1 Why Property Handles?
    1.2 Property Ranges
    1.3 Obtaining Property Information
    1.4 Exporting Properties from a Class
      1.4.1 Read-only properties
      1.4.2 Inheriting Properties from a superclass
    1.5 Composite Properties
    1.6 Reading and Writing to Persistent Storage
    1.7 Inheritable Properties
    1.8 Exporting Inheritable Properties
    1.9 Inheritable and Composite Properties
  Chapter 2 Rendering
    2.1 Overview
      2.1.1 Renderables and Viewers
      2.1.2 A Complete Example
    2.2 Viewers
      2.2.1 Render lists
      2.2.2 Prerendering and Rendering
      2.2.3 Viewer renderables and external render lists
      2.2.4 Coordinate frames and view point control
      2.2.5 Lights
    2.3 The Renderer Interface
      2.3.1 Drawing single points and lines
      2.3.2 Drawing single triangles
      2.3.3 Colors and associated attributes
        2.3.3.1 Highlighting
      2.3.4 Drawing using draw mode
      2.3.5 Drawing solid shapes
      2.3.6 Shading and color mixing
      2.3.7 Vertex coloring, and color mixing and interpolation
      2.3.8 Changing the model matrix
      2.3.9 Render properties and RenderProps
        2.3.9.1 Drawing points and lines as 3D solid objects
        2.3.9.2 RenderProps taxonomy
        2.3.9.3 Renderer methods that use RenderProps
      2.3.10 Screen information and 2D rendering
      2.3.11 Depth offsets
      2.3.12 Maintaining the graphics state
      2.3.13 Text rendering
    2.4 Render Objects
      2.4.1 Building a render object
      2.4.2 ?Current? attributes
      2.4.3 Maintaining consistent attributes
      2.4.4 Adding primitives in ?build? mode
      2.4.5 Modifying render objects
      2.4.6 Drawing RenderObjects
      2.4.7 Multiple primitive groups
      2.4.8 Drawing primitive subsets
    2.5 Texture mapping
      2.5.1 Texture mapping properties
      2.5.2 Texturing example using draw mode
      2.5.3 Texturing example using a render object
    2.6 Mesh Renderers
    2.7 Object Selection
      2.7.1 Implementing custom selection
      2.7.2 Selection Events
  Preface
  Chapter 1 Properties
    1.1 Accessing Properties
      1.1.1 Why Property Handles?
    1.2 Property Ranges
    1.3 Obtaining Property Information
    1.4 Exporting Properties from a Class
      1.4.1 Read-only properties
      1.4.2 Inheriting Properties from a superclass
    1.5 Composite Properties
    1.6 Reading and Writing to Persistent Storage
    1.7 Inheritable Properties
    1.8 Exporting Inheritable Properties
    1.9 Inheritable and Composite Properties
  Chapter 2 Rendering
    2.1 Overview
      2.1.1 Renderables and Viewers
      2.1.2 A Complete Example
    2.2 Viewers
      2.2.1 Render lists
      2.2.2 Prerendering and Rendering
      2.2.3 Viewer renderables and external render lists
      2.2.4 Coordinate frames and view point control
      2.2.5 Lights
    2.3 The Renderer Interface
      2.3.1 Drawing single points and lines
      2.3.2 Drawing single triangles
      2.3.3 Colors and associated attributes
        2.3.3.1 Highlighting
      2.3.4 Drawing using draw mode
      2.3.5 Drawing solid shapes
      2.3.6 Shading and color mixing
      2.3.7 Vertex coloring, and color mixing and interpolation
      2.3.8 Changing the model matrix
      2.3.9 Render properties and RenderProps
        2.3.9.1 Drawing points and lines as 3D solid objects
        2.3.9.2 RenderProps taxonomy
        2.3.9.3 Renderer methods that use RenderProps
      2.3.10 Screen information and 2D rendering
      2.3.11 Depth offsets
      2.3.12 Maintaining the graphics state
      2.3.13 Text rendering
    2.4 Render Objects
      2.4.1 Building a render object
      2.4.2 ?Current? attributes
      2.4.3 Maintaining consistent attributes
      2.4.4 Adding primitives in ?build? mode
      2.4.5 Modifying render objects
      2.4.6 Drawing RenderObjects
      2.4.7 Multiple primitive groups
      2.4.8 Drawing primitive subsets
    2.5 Texture mapping
      2.5.1 Texture mapping properties
      2.5.2 Texturing example using draw mode
      2.5.3 Texturing example using a render object
    2.6 Mesh Renderers
    2.7 Object Selection
      2.7.1 Implementing custom selection
      2.7.2 Selection Events
ArtiSynth Reference Manual
  1 Component Hierarchy
    1.1 Model Components
    1.2 Component References
    1.3 Composite Components
    1.4 CompositeComponentBase, ComponentList, and ComponentListImpl
  2 Models
    2.1 Models and State
    2.2 Model Agents
      2.2.1 Probes
      2.2.2 Controllers and monitors
      2.2.3 Models associated with agents
      2.2.4 Model agent state
    2.3 The Root Model
    2.4 Advancing Models in Time
    2.5 Adaptive Stepping
  3 Writing and Scanning Components
    3.1 Writing components
      3.1.1 Writing references
      3.1.2 Writing child components
    3.2 Scanning components
      3.2.1 Scanning references and post-scanning
      3.2.2 Scanning child components
      3.2.3 Post-scanning implementation
      3.2.4 Post-scanning property values
      3.2.5 Invoking the complete scan process
    3.3 File and token structure
    3.4 Debugging
    3.5 Summary
  1 Component Hierarchy
    1.1 Model Components
    1.2 Component References
    1.3 Composite Components
    1.4 CompositeComponentBase, ComponentList, and ComponentListImpl
  2 Models
    2.1 Models and State
    2.2 Model Agents
      2.2.1 Probes
      2.2.2 Controllers and monitors
      2.2.3 Models associated with agents
      2.2.4 Model agent state
    2.3 The Root Model
    2.4 Advancing Models in Time
    2.5 Adaptive Stepping
  3 Writing and Scanning Components
    3.1 Writing components
      3.1.1 Writing references
      3.1.2 Writing child components
    3.2 Scanning components
      3.2.1 Scanning references and post-scanning
      3.2.2 Scanning child components
      3.2.3 Post-scanning implementation
      3.2.4 Post-scanning property values
      3.2.5 Invoking the complete scan process
    3.3 File and token structure
    3.4 Debugging
    3.5 Summary
Interfacing ArtiSynth to MATLAB and Jython
  1 Introduction
  2 Interfacing to MATLAB
    2.1 Requirements and configuration
    2.2 Starting ArtiSynth
    2.3 Querying ArtiSynth structures and models
    2.4 Scripting commands
    2.5 Java memory limits
    2.6 Setting the classpath for ArtiSynth
    2.7 Setting the classpath for models
    2.8 Connecting to an external MATLAB process
    2.9 Managing an external MATLAB connection from code
  3 Interfacing to Jython
    3.1 Querying ArtiSynth structures and models
    3.2 Jython scripting
    3.3 Specifying scripts on the command line
  4 Summary of scripting methods
  1 Introduction
  2 Interfacing to MATLAB
    2.1 Requirements and configuration
    2.2 Starting ArtiSynth
    2.3 Querying ArtiSynth structures and models
    2.4 Scripting commands
    2.5 Java memory limits
    2.6 Setting the classpath for ArtiSynth
    2.7 Setting the classpath for models
    2.8 Connecting to an external MATLAB process
    2.9 Managing an external MATLAB connection from code
  3 Interfacing to Jython
    3.1 Querying ArtiSynth structures and models
    3.2 Jython scripting
    3.3 Specifying scripts on the command line
  4 Summary of scripting methods
Writing Documentation for ArtiSynth
  1 Introduction
  2 How Documents Are Created
    2.1 Document Source Code Organization
    2.2 Makefile commands to build documents
      2.2.1 Javadocs
      2.2.2 HTML files
      2.2.3 PDF files
      2.2.4 Other Commands
    2.3 Building single HTML files
    2.4 Building sectioned HTML files
    2.5 Building PDF files
    2.6 Installing Documents on the Webserver
  3 LaTeX usage and conventions
    3.1 LaTeXML restrictions
    3.2 Font conventions
    3.3 Code blocks
    3.4 Side blocks
    3.5 Inserting Images
    3.6 Javadoc References
      3.6.1 Class references
      3.6.2 Method references
      3.6.3 How it works
    3.7 References to other ArtiSynth documents
  4 Adding a New Document
    4.1 Creating and Updating the Makefiles
    4.2 Updating the InfoCenter
    4.3 Updating the ArtiSynth website
  5 Images, IDraw and Xfig
  6 Eclipse InfoCenter
  7 External Software Required
    7.1 Installing LaTeXML
  8 Local Customizations
    8.1 setJavadocLinks script
    8.2 fixLatexmlOutput script
  1 Introduction
  2 How Documents Are Created
    2.1 Document Source Code Organization
    2.2 Makefile commands to build documents
      2.2.1 Javadocs
      2.2.2 HTML files
      2.2.3 PDF files
      2.2.4 Other Commands
    2.3 Building single HTML files
    2.4 Building sectioned HTML files
    2.5 Building PDF files
    2.6 Installing Documents on the Webserver
  3 LaTeX usage and conventions
    3.1 LaTeXML restrictions
    3.2 Font conventions
    3.3 Code blocks
    3.4 Side blocks
    3.5 Inserting Images
    3.6 Javadoc References
      3.6.1 Class references
      3.6.2 Method references
      3.6.3 How it works
    3.7 References to other ArtiSynth documents
  4 Adding a New Document
    4.1 Creating and Updating the Makefiles
    4.2 Updating the InfoCenter
    4.3 Updating the ArtiSynth website
  5 Images, IDraw and Xfig
  6 Eclipse InfoCenter
  7 External Software Required
    7.1 Installing LaTeXML
  8 Local Customizations
    8.1 setJavadocLinks script
    8.2 fixLatexmlOutput script
ArtiSynth Coding Standard
  1 Introduction
  2 Cuddle braces and indent by 3
  3 Always used braced blocks
  4 Do not use tabs
  5 Keep line widths to 80 columns
  6 Break lines at the beginning of argument lists
  7 Break lines after assignment operators
  8 Align conditional expressions with the opening parentheses
  9 No space before empty argument lists
  1 Introduction
  2 Cuddle braces and indent by 3
  3 Always used braced blocks
  4 Do not use tabs
  5 Keep line widths to 80 columns
  6 Break lines at the beginning of argument lists
  7 Break lines after assignment operators
  8 Align conditional expressions with the opening parentheses
  9 No space before empty argument lists