[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex
From: |
Janne V. Kujala |
Subject: |
[Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex |
Date: |
Wed, 13 Nov 2002 02:57:14 -0500 |
CVSROOT: /cvsroot/gzz
Module name: gzz
Changes by: Janne V. Kujala <address@hidden> 02/11/13 02:57:13
Modified files:
Documentation/Manuscripts/Irregu: irregu.tex
Log message:
explain outer surfaces
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/Documentation/Manuscripts/Irregu/irregu.tex.diff?tr1=1.32&tr2=1.33&r1=text&r2=text
Patches:
Index: gzz/Documentation/Manuscripts/Irregu/irregu.tex
diff -u gzz/Documentation/Manuscripts/Irregu/irregu.tex:1.32
gzz/Documentation/Manuscripts/Irregu/irregu.tex:1.33
--- gzz/Documentation/Manuscripts/Irregu/irregu.tex:1.32 Tue Nov 12
11:33:08 2002
+++ gzz/Documentation/Manuscripts/Irregu/irregu.tex Wed Nov 13 02:57:13 2002
@@ -299,7 +299,7 @@
\subsection{Drawing the shape}
Recall that the torn shape is defined as the intersection
-of a surface $(x,y,f(x))$ and a cutting plane, rotated and
+of a surface $(x,y,f(x,y))$ and a cutting plane, rotated and
stretched around the tearing line to match desired bounds on the paper.
Because the rotation and stretching are affine operations,
@@ -379,10 +379,48 @@
Pre-computed edge width: interpolated between
3 or 4 stored angles.
+A circle (or ellipse, depending on how much the cutting plane is
+stretched on screen) is moved inside the cutting plane so that
+it always touches the surface, but never crosses it.
+The center of the circle draws the outer edge of the border.
+The radius of the circle determines the line width.
+
+If the cutting plane is then moved (without rotating it)
+around the surface, the outer edges corresponding to each
+position of the cutting plane draw a complete surface over
+the original surface.
+The same algorithm that draws the inner edge can then be
+used to draw the outer edge by using a texture storing the new surface.
+However, the outer edge surface is different for different
+orientations of the cutting plane and for different line widths.
+
+An application generally uses only one or a few different
+slopes of the cutting plane so there is no problem in storing
+these discrete choices in different textures.
+However, the tearout shape can rotate, requiring surfaces
+for all tearing directions in the paper.
+We compute the outer surfaces for a small number of different
+tearing directions (45 or 60 degress apart) and store them
+in the components of a texture.
+The surface corresponding to a a tearing direction between
+two stored angles is computed
+by linearly interpolating between the two components of the
+texture using a dot product with GL\_NV\_register\_combiners.
+
+The interpolation works better for non-vertical cutting planes.
+For a vertical cutting plane, the circle may fit in a narrow valley
+only in a certain angle, making large changes in the outer surface
+over small changes of angle. On the other hand, when the cutting
+plane is closer to horizontal, there can be no such gaps,
+because the surface is defined as a displacement from a horizontal plane.
+
+
Non-photorealistic line-width through mip-mapping.
%Pyramidal parametrics, Lance Williams (mipmap) ref.
cite rip-maps
+
+
Magnification
@@ -408,8 +446,12 @@
Curved lines: \\
- dicing \\
- projective texture mapping (may need to increase dicing to
- prevent discontinuities between segments)
-
+ prevent discontinuities between segments).
+ XXX: if curvature is not continuous (e.g., a quarter circle corner
+ on straight edges) dicing the tearing line does not prevent discontinuities:
+ straight lines have no perspective, but all circle sections have
+ perspective distortion relative to the ratio of outer and inner radii.
+
\section{Example applications}
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, (continued)
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, Tuomas J. Lukka, 2002/11/12
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, Tuomas J. Lukka, 2002/11/12
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, Tuomas J. Lukka, 2002/11/12
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, Tuomas J. Lukka, 2002/11/12
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, Tuomas J. Lukka, 2002/11/12
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, Tuomas J. Lukka, 2002/11/12
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, Tuomas J. Lukka, 2002/11/12
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, Janne V. Kujala, 2002/11/12
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, Janne V. Kujala, 2002/11/12
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, Janne V. Kujala, 2002/11/12
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex,
Janne V. Kujala <=
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, Janne V. Kujala, 2002/11/13
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, Tuomas J. Lukka, 2002/11/13
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, Janne V. Kujala, 2002/11/13
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, Janne V. Kujala, 2002/11/13
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, Tuomas J. Lukka, 2002/11/13
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, Tuomas J. Lukka, 2002/11/13
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, Tuomas J. Lukka, 2002/11/13
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, Tuomas J. Lukka, 2002/11/13
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, Janne V. Kujala, 2002/11/14
- [Gzz-commits] gzz/Documentation/Manuscripts/Irregu irregu.tex, Tuomas J. Lukka, 2002/11/15