Smooth Two-Dimensional Interpolations: A Recipe for All Polygons
Elisabeth Anna Malsch, John Jeffy Lin, and Gautam Dasgupta
Columbia University
This paper appears in issue Volume 10, Number 2.
An electronic version of this article is available.
Abstract
This paper presents a method for constructing smooth and bounded interpolations on any polygon, whether convex or concave in shape, or even one containing holes or isolated points in its interior. The resulting two-dimensional function distributes the value at any given vertex or internal node over the remaining portion of the domain. The representation depends only on simple geometrical properties such as lengths and areas. Accordingly, it is invariant with respect to any chosen coordinate system. The resulting set of interpolations is smooth within the domain. Within a triangle, the behavior is akin to a lnear color gradient. If necessary, linear boundary behavior can also be assured. A Java implementation is available online.
Author Information
Elisabeth Anna Malsch, Columbia University, Dept of Civil Engineering & Engineering Mechanics, 500 West 120th street, New York, NY 10027 eam27@columbia.edu
John Jeffy Lin, Columbia University, Dept of Civil Engineering and Engineering Mechanics, 500 West 120th Street, New York, NY 10027 jeffy@acm.org
Gautam Dasgupta, Columbia University, Dept of Civil Engineering and Engineering Mechanics, 500 West 120th Street, New York, NY 10027 dasgupta@columbia.edu
Java Demo
Source Code
Here is the Java source code for the implementation of the algorithm:
Additional Java files required to create the Java applet above:
- smoothInterpolation.java
- myFill.java
- drawPoly.java
- helper.java
- clippt.java
- ButtonPanel.java
- GradientPanel.java
Here is an archive of all source files, a Makefile and the button icons: concaveColoring.tgz (12K gzipped tar)
BibTeX Entry
@article{MalschEtAl05,
author = "Elisabeth Anna Malsch and John Jeffy Lin and Gautam Dasgupta",
title = "Smooth Two-Dimensional Interpolations: A Recipe for All Polygons",
journal = "journal of graphics, gpu, and game tools",
volume = "10",
number = "2",
pages = "27-39",
year = "2005",
}
