aboutsummaryrefslogtreecommitdiff
path: root/src/algebra/invrender.as.pamphlet
diff options
context:
space:
mode:
Diffstat (limited to 'src/algebra/invrender.as.pamphlet')
-rw-r--r--src/algebra/invrender.as.pamphlet172
1 files changed, 0 insertions, 172 deletions
diff --git a/src/algebra/invrender.as.pamphlet b/src/algebra/invrender.as.pamphlet
deleted file mode 100644
index 924d1a39..00000000
--- a/src/algebra/invrender.as.pamphlet
+++ /dev/null
@@ -1,172 +0,0 @@
-\documentclass{article}
-\usepackage{open-axiom}
-\begin{document}
-\title{\$SPAD/src/algebra invrender.as}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{RenderTools}
-<<RenderTools>>=
-#include "axiom"
-
-POINT ==> Point DoubleFloat;
-NNI ==> NonNegativeInteger;
-SI ==> SingleInteger;
-
-RenderTools: with {
- renderToFile!: (FileName, ThreeSpace DoubleFloat) -> ();
- makeSceneGraph: (ThreeSpace DoubleFloat) -> IVNodeObject;
-} == add {
- import from IVUtilities;
-
- renderToFile!(f: FileName, space: ThreeSpace DoubleFloat): () == {
- root := makeSceneGraph(space);
- write!(f, root);
- }
-
- local makePts: (lpts: List POINT,
- indicies: List List List NonNegativeInteger) ->
- (List POINT, List DoubleFloat);
-
- local makePts(lp: List POINT, indicies: List List List NonNegativeInteger):
- (List POINT, List DoubleFloat) == {
- local colorIdx: Integer;
- indexList := concat concat indicies;
- coordpts := lp;
- if (# first lp = 4) then colorIdx := 4 else colorIdx := 3;
- colors := [pt.colorIdx for pt in lp];
- (coordpts, colors)
- }
-
- local makeBaseColor(l: List DoubleFloat): IVBaseColor == {
- -- This works by interpolating between blue and green (via cyan).
- -- There may well be better ways...
- import from POINT;
- import from List POINT;
- import from DoubleFloat;
- import from List DoubleFloat;
- low := 10000.0;
- high := -10000.0;
- for df in l repeat {
- if low > df then low := df;
- if high < df then high := df;
- }
- if (high = low) then high := high + 1.0;
- new [ point([0, (df - low)/(high - low), (high - df)/(high - low)])
- for df in l]
- }
- makeSceneGraph(space: ThreeSpace DoubleFloat): IVNodeObject == {
- import from List ThreeSpace DoubleFloat;
- import from List List List NNI;
- import from Integer;
- import from Symbol;
- import from IVValue;
- check(space);
- lpts := lp(space);
- indicies := lllip(space);
- root: IVSeparator := new();
- (coordpts, colorvalues) := makePts(lpts, indicies);
- coords: IVCoordinate3 := new coordpts;
- colors: IVBaseColor := makeBaseColor(colorvalues);
- addChild!(root, coerce coords);
- addChild!(root, coerce colors);
- binding: IVBasicNode := make "MaterialBinding";
- addField!(binding, "value", symbol "PER__VERTEX");
- addChild!(root, coerce binding);
- offset: NNI := 0;
- for ss in components space
- for index in indicies repeat {
- local coordIndex: List NNI;
- default i: Integer;
- closedCurve? ss => {
- n: Integer := (#(index.1))::Integer;
- coordIndex :=
- [offset+coerce(i) for i in 0..n::Integer];
- -- Close the curve
- setlast!(coordIndex,offset);
- curve : IVIndexedLineSet := new coordIndex;
- addChild!(root, coerce curve);
- offset := offset+n::NNI;
- }
- curve? ss => {
- n := (#(index.1))::Integer;
- coordIndex :=
- [offset+coerce(i) for i in 0..(n-1)];
- curve : IVIndexedLineSet := new coordIndex;
- addChild!(root, coerce curve);
- offset := offset+n::NNI;
- }
- polygon? ss => {
- vertices := #(index.1) + #(index.2);
- face : IVFaceSet := new(vertices::SI,offset::SI);
- addChild!(root, coerce face);
- offset := offset+vertices;
- }
- mesh? ss => {
- xStep: SingleInteger := (#index)::SingleInteger;
- yStep: SingleInteger := (#(first index))::SingleInteger;
- quadMesh : IVQuadMesh :=
- new(xStep,yStep,offset::SingleInteger);
- addChild!(root, coerce quadMesh);
- offset := offset+coerce(xStep*yStep);
- }
- point? ss => {
- pt : IVPointSet := new(offset::SingleInteger,
- 1$SingleInteger);
- addChild!(root, coerce pt);
- offset := offset+1;
- }
- error "Unrecognised SubSpace component";
- }
- coerce root;
- }
-}
-
-@
-\section{License}
-<<license>>=
---Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
---All rights reserved.
---
---Redistribution and use in source and binary forms, with or without
---modification, are permitted provided that the following conditions are
---met:
---
--- - Redistributions of source code must retain the above copyright
--- notice, this list of conditions and the following disclaimer.
---
--- - Redistributions in binary form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in
--- the documentation and/or other materials provided with the
--- distribution.
---
--- - Neither the name of The Numerical ALgorithms Group Ltd. nor the
--- names of its contributors may be used to endorse or promote products
--- derived from this software without specific prior written permission.
---
---THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
---IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
---TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
---PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
---OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
---EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
---PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
---PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
---LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
---NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
---SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
-
-<<RenderTools>>
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}