Installation Guides
  Installing and Running ArtiSynth on Windows
    1 Overview
    2 Prerequisites
    3 Folder naming conventions
    4 Installing Java
      4.1 Ensuring the JDK visible to your system
    5 Installing a Precompiled Release
      5.1 Running from the file browser
      5.2 Running from a terminal window
    6 Installing from GitHub
      6.1 Installation using Eclipse
      6.2 Installation using Git for Windows
    7 Loading and Running Models
      7.1 Command line arguments
    8 Creating and Adding Models
      8.1 Model packages
      8.2 Compiling models
      8.3 Finding models in the Models menu
    9 Integrating external models
      9.1 Making ArtiSynth visible to the compiler
      9.2 Eclipse development
      9.3 Command line development
      9.4 Making external models visible to ArtiSynth
      9.5 Running from Eclipse
      9.6 Using EXTCLASSPATH
      9.7 Setting the CLASSPATH environment variable
      9.8 Using the -cp option
    10 Installing artisynth_models
      10.1 Installing a precompiled release
      10.2 Installing from GitHub
        10.2.1 Installation using Eclipse
        10.2.2 Installation using Git for Windows
    11 Updating ArtiSynth
      11.1 Library updates
    12 The Eclipse IDE
      12.1 Installing Eclipse
        12.1.1 Setting Eclipse to use the correct Java JDK
        12.1.2 Preventing excess resource copying
      12.2 Importing external projects
      12.3 Configuring environment variables
        12.3.1 Setting environment variables
      12.4 Command line and JVM arguments
        12.4.1 Setting command line and JVM arguments
      12.5 Adding projects to the build path
      12.6 Adding projects to the ArtiSynth launch configuration
    13 Additional Information
      13.1 Adding Directories to the System Path
        13.1.1 Windows 10
        13.1.2 Windows 8 and earlier
      13.2 Environment variables
        13.2.1 Setting environment variables
        13.2.2 Typical environment settings
        13.2.3 GitBash environment settings
      13.3 ArtiSynth Libraries
      13.4 The EXTCLASSPATH File
      13.5 Quick Git Summary
  Installing and Running ArtiSynth on MacOS
    1 Overview
    2 Prerequisites
    3 Folder naming conventions
    4 Installing Java
      4.1 Ensuring the JDK visible to your system
    5 Installing a Precompiled Release
      5.1 Running from the file browser
      5.2 Running from a terminal window
    6 Installing from GitHub
      6.1 Installation using Eclipse
      6.2 Installation using the command line
    7 Loading and Running Models
      7.1 Command line arguments
    8 Creating and Adding Models
      8.1 Model packages
      8.2 Compiling models
      8.3 Finding models in the Models menu
    9 Integrating external models
      9.1 Making ArtiSynth visible to the compiler
      9.2 Eclipse development
      9.3 Command line development
      9.4 Making external models visible to ArtiSynth
      9.5 Running from Eclipse
      9.6 Using EXTCLASSPATH
      9.7 Setting the CLASSPATH environment variable
      9.8 Using the -cp option
    10 Installing artisynth_models
      10.1 Installing a precompiled release
      10.2 Installing from GitHub
        10.2.1 Installation using Eclipse
        10.2.2 Installation from the command line
    11 Updating ArtiSynth
      11.1 Library updates
    12 The Eclipse IDE
      12.1 Installing Eclipse
        12.1.1 Setting Eclipse to use the correct Java JDK
        12.1.2 Preventing excess resource copying
      12.2 Importing external projects
      12.3 Configuring environment variables
        12.3.1 Setting environment variables
      12.4 Command line and JVM arguments
        12.4.1 Setting command line and JVM arguments
      12.5 Adding projects to the build path
      12.6 Adding projects to the ArtiSynth launch configuration
    13 Additional Information
      13.1 Adding Directories to the System Path
      13.2 Environment variables
        13.2.1 Example environment set up for bash
        13.2.2 Example environment setup for csh or tcsh
      13.3 ArtiSynth Libraries
      13.4 The EXTCLASSPATH File
      13.5 Quick Git Summary
  Installing and Running ArtiSynth on Linux
    1 Overview
    2 Prerequisites
    3 Folder naming conventions
    4 Installing Java
      4.1 Ensuring the JDK visible to your system
    5 Installing a Precompiled Release
      5.1 Running from a terminal window
    6 Installing from GitHub
      6.1 Installation using Eclipse
      6.2 Installation using the command line
    7 Loading and Running Models
      7.1 Command line arguments
    8 Creating and Adding Models
      8.1 Model packages
      8.2 Compiling models
      8.3 Finding models in the Models menu
    9 Integrating external models
      9.1 Making ArtiSynth visible to the compiler
      9.2 Eclipse development
      9.3 Command line development
      9.4 Making external models visible to ArtiSynth
      9.5 Running from Eclipse
      9.6 Using EXTCLASSPATH
      9.7 Setting the CLASSPATH environment variable
      9.8 Using the -cp option
    10 Installing artisynth_models
      10.1 Installing a precompiled release
      10.2 Installing from GitHub
        10.2.1 Installation using Eclipse
        10.2.2 Installation from the command line
    11 Updating ArtiSynth
      11.1 Library updates
    12 The Eclipse IDE
      12.1 Installing Eclipse
        12.1.1 Setting Eclipse to use the correct Java JDK
        12.1.2 Preventing excess resource copying
      12.2 Importing external projects
      12.3 Configuring environment variables
        12.3.1 Setting environment variables
      12.4 Command line and JVM arguments
        12.4.1 Setting command line and JVM arguments
      12.5 Adding projects to the build path
      12.6 Adding projects to the ArtiSynth launch configuration
    13 Additional Information
      13.1 Adding Directories to the System Path
      13.2 Environment variables
        13.2.1 Example environment set up for bash
        13.2.2 Example environment setup for csh or tcsh
      13.3 ArtiSynth Libraries
      13.4 The EXTCLASSPATH File
      13.5 Quick Git Summary
  Installing and Running ArtiSynth on Windows
    1 Overview
    2 Prerequisites
    3 Folder naming conventions
    4 Installing Java
      4.1 Ensuring the JDK visible to your system
    5 Installing a Precompiled Release
      5.1 Running from the file browser
      5.2 Running from a terminal window
    6 Installing from GitHub
      6.1 Installation using Eclipse
      6.2 Installation using Git for Windows
    7 Loading and Running Models
      7.1 Command line arguments
    8 Creating and Adding Models
      8.1 Model packages
      8.2 Compiling models
      8.3 Finding models in the Models menu
    9 Integrating external models
      9.1 Making ArtiSynth visible to the compiler
      9.2 Eclipse development
      9.3 Command line development
      9.4 Making external models visible to ArtiSynth
      9.5 Running from Eclipse
      9.6 Using EXTCLASSPATH
      9.7 Setting the CLASSPATH environment variable
      9.8 Using the -cp option
    10 Installing artisynth_models
      10.1 Installing a precompiled release
      10.2 Installing from GitHub
        10.2.1 Installation using Eclipse
        10.2.2 Installation using Git for Windows
    11 Updating ArtiSynth
      11.1 Library updates
    12 The Eclipse IDE
      12.1 Installing Eclipse
        12.1.1 Setting Eclipse to use the correct Java JDK
        12.1.2 Preventing excess resource copying
      12.2 Importing external projects
      12.3 Configuring environment variables
        12.3.1 Setting environment variables
      12.4 Command line and JVM arguments
        12.4.1 Setting command line and JVM arguments
      12.5 Adding projects to the build path
      12.6 Adding projects to the ArtiSynth launch configuration
    13 Additional Information
      13.1 Adding Directories to the System Path
        13.1.1 Windows 10
        13.1.2 Windows 8 and earlier
      13.2 Environment variables
        13.2.1 Setting environment variables
        13.2.2 Typical environment settings
        13.2.3 GitBash environment settings
      13.3 ArtiSynth Libraries
      13.4 The EXTCLASSPATH File
      13.5 Quick Git Summary
  Installing and Running ArtiSynth on MacOS
    1 Overview
    2 Prerequisites
    3 Folder naming conventions
    4 Installing Java
      4.1 Ensuring the JDK visible to your system
    5 Installing a Precompiled Release
      5.1 Running from the file browser
      5.2 Running from a terminal window
    6 Installing from GitHub
      6.1 Installation using Eclipse
      6.2 Installation using the command line
    7 Loading and Running Models
      7.1 Command line arguments
    8 Creating and Adding Models
      8.1 Model packages
      8.2 Compiling models
      8.3 Finding models in the Models menu
    9 Integrating external models
      9.1 Making ArtiSynth visible to the compiler
      9.2 Eclipse development
      9.3 Command line development
      9.4 Making external models visible to ArtiSynth
      9.5 Running from Eclipse
      9.6 Using EXTCLASSPATH
      9.7 Setting the CLASSPATH environment variable
      9.8 Using the -cp option
    10 Installing artisynth_models
      10.1 Installing a precompiled release
      10.2 Installing from GitHub
        10.2.1 Installation using Eclipse
        10.2.2 Installation from the command line
    11 Updating ArtiSynth
      11.1 Library updates
    12 The Eclipse IDE
      12.1 Installing Eclipse
        12.1.1 Setting Eclipse to use the correct Java JDK
        12.1.2 Preventing excess resource copying
      12.2 Importing external projects
      12.3 Configuring environment variables
        12.3.1 Setting environment variables
      12.4 Command line and JVM arguments
        12.4.1 Setting command line and JVM arguments
      12.5 Adding projects to the build path
      12.6 Adding projects to the ArtiSynth launch configuration
    13 Additional Information
      13.1 Adding Directories to the System Path
      13.2 Environment variables
        13.2.1 Example environment set up for bash
        13.2.2 Example environment setup for csh or tcsh
      13.3 ArtiSynth Libraries
      13.4 The EXTCLASSPATH File
      13.5 Quick Git Summary
  Installing and Running ArtiSynth on Linux
    1 Overview
    2 Prerequisites
    3 Folder naming conventions
    4 Installing Java
      4.1 Ensuring the JDK visible to your system
    5 Installing a Precompiled Release
      5.1 Running from a terminal window
    6 Installing from GitHub
      6.1 Installation using Eclipse
      6.2 Installation using the command line
    7 Loading and Running Models
      7.1 Command line arguments
    8 Creating and Adding Models
      8.1 Model packages
      8.2 Compiling models
      8.3 Finding models in the Models menu
    9 Integrating external models
      9.1 Making ArtiSynth visible to the compiler
      9.2 Eclipse development
      9.3 Command line development
      9.4 Making external models visible to ArtiSynth
      9.5 Running from Eclipse
      9.6 Using EXTCLASSPATH
      9.7 Setting the CLASSPATH environment variable
      9.8 Using the -cp option
    10 Installing artisynth_models
      10.1 Installing a precompiled release
      10.2 Installing from GitHub
        10.2.1 Installation using Eclipse
        10.2.2 Installation from the command line
    11 Updating ArtiSynth
      11.1 Library updates
    12 The Eclipse IDE
      12.1 Installing Eclipse
        12.1.1 Setting Eclipse to use the correct Java JDK
        12.1.2 Preventing excess resource copying
      12.2 Importing external projects
      12.3 Configuring environment variables
        12.3.1 Setting environment variables
      12.4 Command line and JVM arguments
        12.4.1 Setting command line and JVM arguments
      12.5 Adding projects to the build path
      12.6 Adding projects to the ArtiSynth launch configuration
    13 Additional Information
      13.1 Adding Directories to the System Path
      13.2 Environment variables
        13.2.1 Example environment set up for bash
        13.2.2 Example environment setup for csh or tcsh
      13.3 ArtiSynth Libraries
      13.4 The EXTCLASSPATH File
      13.5 Quick Git 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 Rendering rigid bodies
      3.2.8 Multiple meshes
      3.2.9 Example: a composite rigid body
    3.3 Joints and connectors
      3.3.1 Joints and coordinate frames
      3.3.2 Joint coordinates, constraints, and errors
      3.3.3 Creating Joints
      3.3.4 Working with coordinates
      3.3.5 Example: a simple hinge joint
      3.3.6 Constraint forces
      3.3.7 Compliance and regularization
      3.3.8 Example: an overconstrained linkage
      3.3.9 Rendering joints
    3.4 Joint components
      3.4.1 Hinge Joint
      3.4.2 Slider Joint
      3.4.3 Cylindrical Joint
      3.4.4 Slotted Hinge Joint
      3.4.5 Universal Joint
      3.4.6 Skewed Universal Joint
      3.4.7 Gimbal Joint
      3.4.8 Spherical Joint
      3.4.9 Planar Joint
      3.4.10 Planar Translation Joint
      3.4.11 Solid Joint
      3.4.12 Planar Connector
      3.4.13 Segmented Planar Connector
      3.4.14 Legacy Joints
    3.5 Frame springs
      3.5.1 Frame spring coordinate frames
      3.5.2 Frame materials
      3.5.3 Creating frame springs
      3.5.4 Example: two bodies connected by a frame spring
    3.6 Attachments
      3.6.1 Point attachments
      3.6.2 Example: model with particle attachments
      3.6.3 Frame attachments
      3.6.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 Overconstrained contact and regularization
      4.6.4 Penetration tolerance and limitations
      4.6.5 Contact rendering
      4.6.6 Example: Rendering normals and contours
      4.6.7 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
    4.10 Custom Joints
      4.10.1 Joint constraints
      4.10.2 Unilateral constraint engagement
      4.10.3 Implementing a custom joint
      4.10.4 Implementing a custom coupling
      4.10.5 Example: a simple custom joint
  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 Connecting FEM models to other components
      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 Finding which nodes to attach
      6.4.6 Example: two bodies connected by an FEM ?spring?
      6.4.7 Nodal-based attachments
      6.4.8 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 Skinning
    8.1 Implementation
    8.2 Creating a skin mesh
      8.2.1 Example: skinning over rigid bodies
    8.3 Computing weights
      8.3.1 Setting weights explicitly
    8.4 Markers and point attachments
      8.4.1 Markers
      8.4.2 Point attachments
      8.4.3 Example: skinning rigid bodies and FEM models
      8.4.4 Mesh-based markers and attachments
    8.5 Resolution and Limitations
    8.6 Collisions
      8.6.1 Example: collision with a cylinder
    8.7 Application to muscle wrapping
      8.7.1 Example: wrapping for a finger joint
  Chapter 9 DICOM Images
    9.1 The DICOM file format
    9.2 The DICOM classes
      9.2.1 DicomElement
      9.2.2 DicomHeader
      9.2.3 DicomPixelBuffer
      9.2.4 DicomSlice
      9.2.5 DicomImage
    9.3 Loading a DicomImage
      9.3.1 Time-dependent images
      9.3.2 Image formats
    9.4 The DicomViewer
    9.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 Rendering rigid bodies
      3.2.8 Multiple meshes
      3.2.9 Example: a composite rigid body
    3.3 Joints and connectors
      3.3.1 Joints and coordinate frames
      3.3.2 Joint coordinates, constraints, and errors
      3.3.3 Creating Joints
      3.3.4 Working with coordinates
      3.3.5 Example: a simple hinge joint
      3.3.6 Constraint forces
      3.3.7 Compliance and regularization
      3.3.8 Example: an overconstrained linkage
      3.3.9 Rendering joints
    3.4 Joint components
      3.4.1 Hinge Joint
      3.4.2 Slider Joint
      3.4.3 Cylindrical Joint
      3.4.4 Slotted Hinge Joint
      3.4.5 Universal Joint
      3.4.6 Skewed Universal Joint
      3.4.7 Gimbal Joint
      3.4.8 Spherical Joint
      3.4.9 Planar Joint
      3.4.10 Planar Translation Joint
      3.4.11 Solid Joint
      3.4.12 Planar Connector
      3.4.13 Segmented Planar Connector
      3.4.14 Legacy Joints
    3.5 Frame springs
      3.5.1 Frame spring coordinate frames
      3.5.2 Frame materials
      3.5.3 Creating frame springs
      3.5.4 Example: two bodies connected by a frame spring
    3.6 Attachments
      3.6.1 Point attachments
      3.6.2 Example: model with particle attachments
      3.6.3 Frame attachments
      3.6.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 Overconstrained contact and regularization
      4.6.4 Penetration tolerance and limitations
      4.6.5 Contact rendering
      4.6.6 Example: Rendering normals and contours
      4.6.7 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
    4.10 Custom Joints
      4.10.1 Joint constraints
      4.10.2 Unilateral constraint engagement
      4.10.3 Implementing a custom joint
      4.10.4 Implementing a custom coupling
      4.10.5 Example: a simple custom joint
  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 Connecting FEM models to other components
      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 Finding which nodes to attach
      6.4.6 Example: two bodies connected by an FEM ?spring?
      6.4.7 Nodal-based attachments
      6.4.8 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 Skinning
    8.1 Implementation
    8.2 Creating a skin mesh
      8.2.1 Example: skinning over rigid bodies
    8.3 Computing weights
      8.3.1 Setting weights explicitly
    8.4 Markers and point attachments
      8.4.1 Markers
      8.4.2 Point attachments
      8.4.3 Example: skinning rigid bodies and FEM models
      8.4.4 Mesh-based markers and attachments
    8.5 Resolution and Limitations
    8.6 Collisions
      8.6.1 Example: collision with a cylinder
    8.7 Application to muscle wrapping
      8.7.1 Example: wrapping for a finger joint
  Chapter 9 DICOM Images
    9.1 The DICOM file format
    9.2 The DICOM classes
      9.2.1 DicomElement
      9.2.2 DicomHeader
      9.2.3 DicomPixelBuffer
      9.2.4 DicomSlice
      9.2.5 DicomImage
    9.3 Loading a DicomImage
      9.3.1 Time-dependent images
      9.3.2 Image formats
    9.4 The DicomViewer
    9.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
    2.8 The ArtiSynth working directory
  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 Probes and waypoints
    7.2 Basic timeline structure
      7.2.1 Play controls
      7.2.2 Tracks
    7.3 Viewing and setting waypoints
      7.3.1 Waypoints
      7.3.2 Breakpoints
      7.3.3 Saving and loading
    7.4 Tracks and probes
      7.4.1 Creating, moving, and deleting tracks
      7.4.2 Muting tracks
      7.4.3 Expanding tracks
      7.4.4 Grouping tracks
    7.5 Numeric probe displays
      7.5.1 Setting the range and display properties
      7.5.2 Visibility control
      7.5.3 Editing and scaling data
      7.5.4 Interpolation control
      7.5.5 Large displays
      7.5.6 Cloning displays and exporting plots
  8 Saving and Loading Probes
    8.1 Saving and loading probe data
    8.2 Exporting numeric probe data
    8.3 Saving and loading all probes
  9 Adding and Editing Numeric Probes
    9.1 Adding output probes
      9.1.1 Creating a simple probe
      9.1.2 General output probes
      9.1.3 Using the probe editor
    9.2 Adding input probes
      9.2.1 Creating a simple probe
      9.2.2 General input probes
      9.2.3 Using the probe editor
    9.3 Setting probe properties
  10 Point Tracing
    10.1 Rendering only the trace(s)
  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
    2.8 The ArtiSynth working directory
  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 Probes and waypoints
    7.2 Basic timeline structure
      7.2.1 Play controls
      7.2.2 Tracks
    7.3 Viewing and setting waypoints
      7.3.1 Waypoints
      7.3.2 Breakpoints
      7.3.3 Saving and loading
    7.4 Tracks and probes
      7.4.1 Creating, moving, and deleting tracks
      7.4.2 Muting tracks
      7.4.3 Expanding tracks
      7.4.4 Grouping tracks
    7.5 Numeric probe displays
      7.5.1 Setting the range and display properties
      7.5.2 Visibility control
      7.5.3 Editing and scaling data
      7.5.4 Interpolation control
      7.5.5 Large displays
      7.5.6 Cloning displays and exporting plots
  8 Saving and Loading Probes
    8.1 Saving and loading probe data
    8.2 Exporting numeric probe data
    8.3 Saving and loading all probes
  9 Adding and Editing Numeric Probes
    9.1 Adding output probes
      9.1.1 Creating a simple probe
      9.1.2 General output probes
      9.1.3 Using the probe editor
    9.2 Adding input probes
      9.2.1 Creating a simple probe
      9.2.2 General input probes
      9.2.3 Using the probe editor
    9.3 Setting probe properties
  10 Point Tracing
    10.1 Rendering only the trace(s)
  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