SourceForge.net Logo
Logo Unipa

UNIVERSITY OF PALERMO

INFORMATICS ENGINEERING DEPARTMENT (DINFO)

2003


JVClifford Project v1.0

Support This Project

by Pietro Brignola


Supervisory Comitee:

Prof. Eng. Filippo Sorbello


Eng. Giovanni Pilato

Dr.   Giorgio Vassallo


This page covers the essential of JV Clifford Project This project was realized by Pietro Brignola as final work for Informatic Engineering degree, University of Palermo, 2003.


In apprecciation of the time, effort and patience extended to me in the pursuit of this thesis I would like to thank Dr. Giorgio Vassallo and Eng. Giovanni Pilato for their guidance in the topic of this research.


JVClifford Project is composed of the following parts:



This project is distributed under the MIT License:


The MIT License

Copyright (c) 2002-2013 Pietro Brignola Giorgio Vassallo

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


By following the links from this page you should be able to install and obtain all necessary documentation on JVCliffordProject .


Features of this project are contained in my thesis (2,6 MB ita):


"Studio e sviluppo
di un
ambiente per la definizione di scene geometriche N-dimensionali
mediante
l'algebra di Clifford"



It's recommended the following step by step process to learning  jclifford , jndclifford , JVClifford and JV CliffParser .

Starting with Clifford Algebra

Installing J2SE runtime environment

Installing Java 3D OpenGL runtime environment

jclifford package

jndclifford package

JVClifford scripting language

JVCliffParser

Main Developing tools

Sources and examples


If you have further questions or you believe to have found a bug please do not hesitate to contact me.




Starting with Clifford AlgebraW. K. Clifford

For introductions to Clifford Algebra and its applications please refer to:


Clifford/Geometric Algebra sites:


Interesting papers:

  1. Leo Dorst. Honing geometric algebra for its use in the computer sciences. In G. Sommer, editor, Geometric Computing with Clifford Algebra. Springer-Verlag, 2000 to be published.
  2. John E. Gilbert and Margaret A. M. Murray. Clifford algebras and Dirac operators in harmonic analysis. Cambridge University Press, 1991.
  3. S. F. Gull, A. N. Lasenby, and C. J. L. Doran. Imaginary numbers are not real – the geometric algebra of space time. Found. Phys., 23(9):1175, 1993.
  4. D. Hestenes. New Foundations for Classical Mechanics. Dordrecht, 1986.
  5. D. Hestenes and G. Sobczyk. Clifford Algebra to Geometric Calculus: A Unified Language for Mathematics and Physics. Dordrecht, 1984.
  6. David Hestenes and Renatus Ziegler. Projective Geometry with Clifford Algebra. Acta Applicandae Mathematicae, 23:25–63, 1991.
  7. Pertti Lounesto. Clifford Algebras and Spinors. Cambridge University Press, 1997.
  8. Ian R. Porteous. Clifford Algebras and the Classical Groups. Cambridge University Press, 1995.
  9. Marcel Riesz. Clifford Numbers and Spinors. Kluwer Academic Publishers, 1993.
  10. G. Sommer, editor. Geometric Computing with Clifford Algebra. Springer-Verlag, 2000.


A really brief introduction to Geometric algebra's basic concepts is also contained in my Thesis.





Java 2 Platform, Standard Edition (J2SE)   JavaLogo

JV Clifford Project  is composed of 100% pure Java applications and packages so it run on countless different machines with no special porting effort, a testimonial to the "Write Once, Run Everywhere" aspect of Java.

You have to install the Java 2 JRE SE (Runtime Environment) in order to use JV Clifford  Project applications. You can download and install the latest release of the runtime enviroment directly from:


SunLogo

http://www.java.sun.com/j2se/


Java 3D   Java3DLogo

JV Clifford  Project  uses the Java 3D API (OpenGL version) for the creations of tridimensional interactive geometric scenes.

With Java 3D it easily possible to incorporate high-quality, scalable, platform-independent 3D graphics into Java technology-based applications and applets.

The Java 3D application programming interface (API) provides a set of object-oriented interfaces that support a simple, high-level programming model. This enables developer to build, render, and control the behavior of 3D objects and visual environments.

You have to install the Java 3D API (OpenGL version) runtime environment in order to use JV Clifford  Project applications. You can download and install the latest release of the runtime enviroment from:


Windows   if you are a Microsoft Windows user

http://www.java.sun.com/products/java-media/3D/ 

Linux   if you are a Linux user

http://www.blackdown.org/java-linux/jdk1.2-status/java-3d-status.html


Package jclifford AnimatedDuke1.gif

This package provides for Clifford element definition and algebra operations.

In this package all the implementation of the Clifford element are blade-value treemap based. Wrapper classes are used for blade and value manipulation and storing.

Specific implementations differ on blade wrapper class basis, in particular:


Click here for the complete jclifford package API specifications.


You need to install jclifford package in order to use other components of JV Clifford  Project , it is single a jar file so it's suggested to deploy it as an "installed optional package".


Click here to download and install the latest release of jclifford package.


Realized by Pietro Brignola , Giorgio Vassallo , September 2002.

Current version is: 0.9



Package jndclifford  jndclifford_logo

This package allows user to adoperate the powerfull and general geometric algebra affine model for n-dimensional geometric scene definition, handling n-dimensional rotations, intersections, projections, etc.

Specially interesting is the possibility of projecting geometric construction in 3d using Clifford n-dimensional wireframe technique.

For example the following is the 3d projection of a pentacube rotating in different planes of 5d space:

animated_pentacube_200x200_white.gif

Pentacube 3d projection - PB 2003

(fluid motion with Mozilla and Opera)


Click here for the complete jndclifford package API specifications.


jndclifford package is single a jar file so it's suggested to deploy it as an "installed optional package".


Click here to download and install the latest release of jndclifford package.


Realized by Pietro Brignola , Giorgio Vassallo , May 2003.

Current version is: 0.2


JVClifford scripting language AnimatedDuke2

JVClifford  is a scripting language that allows user to do calculations with multivectors in the Clifford algebra and to easily visualize the possible geometric meaning of the results.

JVClifford  is an algebric interpreted language with a strict syntax checking (scripts that don't respect this syntax produce a detailed error message).


Complete JVClifford language specifications are contained in Appendix B of  my Thesis.


Realized by Pietro Brignola , September 2002.

Current version is: 0.9.3



JVCliffParser application JVCliffParser logo

This application is the JVClifford scripting language IDE. It offers to the user the way to edit, parse and execute JVClifford scripts.

Click here to download and install the latest rtelease of JVCliffParser , it's a single jar file containing all the classes that implements the parser, the IDE and the Projective multivector interactive viewer.

Deploy it were you want and simply run it with the java command, for example on a Unix system:


[user@localhost home]$ java -jar JVCliffParser.jar

or:

    [user@localhost home]$ java -Xmx256M -Xms256M -jar JVCliffParser.jar


for JVM maximum and starting heap size setting.


Realized by Pietro Brignola , November 2002.

Current version is: 0.9.2



Appendix

Main Developing tools Duke3

This application was realized on a RedHatLogo 8.0 system using the following tools:

JavaLogo

  • J2SE SDK v1.4.1 as general developing environment.
  • FCS version of the Blackdown Java-Linux implementation of the Java3D v1.3 for geometric package's and 3D multivector interactive viewer's development.


JNetLogo

  • Java Compiler Compiler (JavaCC) v2.1 for CS scripting language grammar definition and parser development.

The Java Parser Generator Java Compiler Compiler (JavaCC) is the most popular parser generator for use with Java applications. A parser generator is a tool that reads a grammar specification and converts it to a Java program that can recognize matches to the grammar. In addition to the parser generator itself, JavaCC provides other standard capabilities related to parser generation such as tree building (via a tool called JJTree included with JavaCC), actions, debugging and doc generation (via a tool called JJDoc included with JavaCC).



Sources and examples  Duke4

Click here for the BNF productions of JVClifford language.

Click here to download all the sources for the packages presented.

Click here   for many JVCliffParser scripts and interesting  jndclifford usage examples.



About "installed optional package"

Optional packages are packages of Java classes and associated native code that application developers can use to extend the functionality of the core platform. The extension mechanism allows the Java virtual machine (VM) to use the optional-package classes in much the same way as the VM uses bootstrap classes.

(Bootstrap classes are those implementing the core platform, contained in jre/lib/rt.jar and jre/lib/i18n.jar. These include classes of the public API such as java.lang, java.io, etc., and classes supporting the platform's internationalization/localization features.).

Like bootstrap classes, classes in optional packages do not have to be placed on the class path. The extension mechanism also provides a way for needed optional packages to be retrieved from specified URLs when they are not already installed in the Java 2 Runtime Environment or Java 2 SDK.

Installed optional packages are JAR files in the directory:

Classes within JAR files in this directory can be used by applets and applications much as if they were part of the set of bootstrap classes, without having to explicitly include them in the class path.


Line Bar

This page has been realized by Pietro Brignola, 2003 using:

MozzilaLogo Mozilla 1.0.1  Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20020830