[N-World Contents] [Book Contents] [Prev] [Next] [Index]

Contents

About this Document

Contents of This Document
Document Style Conventions
Functions
Arguments
Notes
Mouse and Keyboard Notation
Menu Notation

1 Welcome to Nichimen's Wide Open World

Opening the Door
Defining Your Own Functions
Using Buffers
Finding Arguments
Saving your New Function
Welcome to the Wide Open World!

2 Lisp Fundamentals

The Lisp Interpreter and Evaluation
Symbols
Packages
Forms and Evaluation
Functions
Evaluation, Side Effects,
and Functional Programming
Defining Your Own Functions
Lists
Manipulating Lists
Creating a List
Returning Elements of a List
Variables
Scope
Setting Local Variables
Types
Arrays
Classes
Slots
Generic Functions
Defining Classes
Instancing
Manipulating Slot Values
Defining Methods
Inheritance of Slots and Methods
Object Oriented Programming Tools

3 Creating N·World Code

Getting Started
Using Xemacs
Extending Xemacs
The Xemacs Window
Basic Commands and Key Bindings
Creating Code
Entering Code in the Lisp Listener
Entering Code in a Buffer
Saving Your Work
Where to Save Your Source Code
Xemacs Modes
Finding a Function, Method, or Macro
Getting the Argument List of a Function
Getting the Source Code of a Function
Object Oriented Programming Tools
Using the Window Inspector
Compiling Your Code
Compiling Individual Forms
Compiling a Buffer
Compiling to a File
Using the Debugger
Break Levels
Moving Through Break Levels
Debugging and Multiprocessing
Working with Plug-Ins
Storing Your Plug-ins
Using Your Plug-ins
Default Plug-in Directories
Loading Plug-ins Every Time N·World Loads
Loading Plug-ins in Specific Situations

4 Defining Foreign Functions

Handling Foreign Functions
Compiling and Linking Shared Object Files
Compiler Options
Including C Libraries
Loading Shared Object Files
Defining C Types
Typedefs
Type Checking
Example
Creating a C Object
Getting the Value of a C Object from Lisp
Setting the Value of a C Object from Lisp
Data Types and Clipping
Defining a Type in Lisp Space
Defining More Complex C Structures
Manipulating Slots in Structures
Defining Arrays
C-Type Utilities
Listing C Types
Examining C Types
Using FF Types
Defining New FF Types
FF Type Utilities
Managing Strings
Defining Foreign Functions
Example:
General Issues With Foreign Functions
Watch out for Bignums & C Pointers
When to Recompile Your Lisp Code
.SO Load Order
.SO Files Cannot Reference External Definitions
Converting N·World 2.1 Foreign Functions

5 Building Interfaces with the UI-Toolkit

Types of Windows
Applications Windows
Pop-up menus
Menu Object Hierarchy
Creating Application Windows
Application Window field properties
Defining Pop-up Windows
Pop-up Window field properties
Example
General Window field properties
Using Defaults to Control Window Appearance
Adding Fields to Applications Windows
How Fields Work
Expose Tests
Fields and Data
Field Types
Field Properties
Mouse Documentation
Defining Fields
Container Fields
Creating Container Fields
Container Field Properties
Label Fields
Creating Label Fields
Field properties
Example
Spacer Fields
Creating Spacer Fields
Field properties
Example
Number Fields
Creating Number Fields
Field properties
Examples
Text Fields
Creating Text Fields
Field Properties
Example
Pathname-String Fields
Creating Pathname Fields
Field Properties
Example
Directory Fields
Creating Directory Fields
Field Properties
Examples
File-name Fields
Creating Filename Fields
Field Properties
Examples
Command Fields
Creating Command Fields
Field Properties
Example
Do It Fields
Creating Do it Fields
Abort Fields
Creating Abort Fields
Field Properties
Slider Fields
Creating Slider Fields
Field Properties
Slider Field Defaults
Examples
Multiple Choice Fields
Creating Multiple Choice Toggle Fields
Subfield Field Properties
Examples
Pop-Up Fields
Field Properties
Object Fields
Color Fields
Colors
Graphic Contexts
Value-Objects
Returning Values from Value-Objects
Traversing Menu Objects
Finding Superfields
Finding Subfields
Finding Select Methods
Returning Field Values
Controlling Fields
Defining Select-Methods
Determining Which Mouse Buttons are Pressed
Expose Tests
Field Utilities
Menu Choose
Field Properties
Menu Notify
Menu Confirm

6 Introduction to N·World Objects

N·World Object Structure
Changing Transformation Matrices

7 Creating, Manipulating, and Traversing
Bodies and Objects

A Quick Review of Bodies and Objects
Getting Started
Creating Simple Objects
Make Functions for Polyhedra
Binding Bodies to Variables
Creating Objects
Naming Objects
Viewing Objects
Selecting Items
Selecting Bodies Interactively
Referencing Elements Symbolically
Referencing Objects by Name
Selecting Objects From a Menu
Choosing Multiple Objects
Working with Lists of Multiple Objects
Finding Out about Objects with Describe
Traversing Elements of Polyhedra
Traversing Vertices
Traversing Faces
Traversing Elements of a Face
Collecting the Elements of Polyhedra
Collecting Faces Given a Body
Collecting Faces GIven an Edge
Collecting Vertices
Traversing Grids
Traversing Wireframes and Skeletons
More Ways to Collect Elements
Manipulating Objects
Basic Object Hierarchy Concepts
Determining Position in a Hierarchy
Finding Superior and Inferior Objects
Finding the Body of an Object
Finding Objects of a Body
Finding BDIs of a Body
Finding the Body Referenced by a BDI
Finding the Object Referenced by a BDI
Finding Top-Level Objects of a BDI
Traversing Object Hierarchies
Getting the Objects of a Compound Object
Getting the Terminal Objects of a Hierarchy
Getting the Bodies of Objects in a Hierarchy
Getting the BDIs in a Hierarchy
Loop Paths for Object Hierarchies Summarized
Non-Standard Loop Paths
Getting Superior Objects of a Body
Getting Top Level Objects of a Body

8 Exporting Object Data

Exporting Geometry
Determining Element Order
Avoiding Printed Representations
Formatting Output to a File
A Sample Exporter
Exporting UV Coordinates
Getting the UVs of a Vertex
Examples and Templates
Seams and Edges
Transformations
Transformation Matrices
Unit Direction Vectors
Normalizing Vectors
Transformation Notation
Creating Scratch Matrices
Transformations and Object Hierarchies
Obtaining the Local Transformation
Calculating the Current Transformation
Calculating Current Transformations With Respect to Other Objects
Additional Transformation Matrices
Body-Matrix
Init-matrix
Manipulating Transformations
Transforming Objects
Altering Matrices
Altering Matrices: Examples
Rotating
Decomposing Matrices
Rotations
Obtaining Rotations
Obtaining Scalings, Shearings, and Translations
Obtaining Positions
Obtaining Up, Direction, and Position from Matrices
Converting Matrices to Quaternions

9 Rendering Operations

A Conceptual Overview of Rendering
Attributes
Attribute Domains
Attribute Domain Hierarchy
Attribute Values for Bodies
Attribute Values for Face Parts
Surface Contexts
Derived Attribute Values: an Example
Defining Attributes and Attribute Domains
Example
Defining Attributes
Example
Understanding Element-Types
Adding Your Domain to the Materials Editor
Creating Attributes Editor Menus
Defining the Parameters Menu
Creating Attribute Fields
Defining Command Fields
Saving Parameters to a Preference File
Manipulating Attributes, Sets, and Domains
Retrieving Attribute Domains
Finding a specific domain
Returning the Current Domain
Changing the Current Domain
Retrieving materials
Retrieving a Specific material
Retrieving the Current material
Defining materials
Retrieving and Setting Attribute Values
Deriving A Local Attribute Value
Changing a Local Attribute Value
Which Objects have Attributes
Assigning a Base material to an Object

10 Extending Applications

Extending Dynamics
The Dynamics Philosophy
Inheritance, Dynamic, and Static Values
Dynamics Operations
Preparing To Define Dynamics Operations
Anatomy of a Dynamics Operation
Defining Dynamics Operations Classes
Dynamics Classes Utilities
Controlling Input with Parameters
Built-in Dynamics Parameter Field Types
Setting Parameter Type Defaults
Parameter Type Slider Defaults
Defining Parameters
Controlling Program Flow
Extending Geometry
Understanding Editor Methods
GeoClasses
Geoclass Utilities
The Editor Menu Interface
Editor Menu Items (edmenu-items)
Edmenu-item Utilities
Defining Editor Methods (edmethods)
Understanding bdis&elements
Using the bdis&elements List
A Sample Edmethod
Geometry User Interface Utilities

11 Traversing Elements

Loop Iteration Paths vs. Short Forms
Traversing Elements of a Polyhedron through
Element Rings
Equivalent Short Forms
Traversing Elements of a Face
Equivalent Short Forms
Traversing Neighboring Elements of a Vertex
Equivalent Short Forms
Traversing Elements of a Wire
Equivalent Short Forms
Traversing Object Hierarchy

12 Optimizing Code

Optimizing Math with Anti-Generic Functions
NCL Anti-Generic Functions
Declarations
Relational Operators
Predicates
Arithmetic Operators
Trigonometric Functions
Math Utilities
Multiple Values Bind Utilities
Optimization with Floating Point Vectors
Ftriplets
Creating Ftriplets
Reading Ftriplets
Modifying Ftriplets

A ASCII Object File Format

The File Attribute Header
Readin Information
Object Specification
Object Description
Body Identifiers
The Symbolic Body Identifier
String Body Identifier
List Body Identifier
Optional Object Information
Body Keywords
Polyhedron Keywords
Saving Objects
Saving a Sample Object

B N·World 2.1 - 3.0 Renamed Functions

Function Names Preceded by $
Anti-Generic Functions (! Suffixes)
Functions Which have been Deleted
Renamed Functions
Functions with Changed Argument Lists
View-Related Camera Methods

Index



[N-World Contents] [Book Contents] [Prev] [Next] [Index]

Another fine product from Nichimen documentation!

Copyright © 1996, Nichimen Graphics Corporation. All rights reserved.