CS679 - Zheng-Ball Surface Patches, 2001


Daniel Benson

The goal of this project is to implement Zheg-Ball patches with 3, 5 and 6 sides.

Zheng-Ball surfaces patches are designed to fill odd shaped gaps between tensor-product bezier patch. They are are defined by weighting functions over the net of control points. The nice property they have is that they have is their edges are bezier curves and their cross boundry derivatives are easily found (and set).

Zheng-Ball patches are based on symmetric domains. Symetric domains have many nice properties, but many very bad properties as well. Speaking from experience it can be quite difficult to calculate all values of the domain from the two given ones, and in many
cases impossible. For example, for the five and size element domains described in the paper, one cannot compute all elements of the domain from the adjacent pair, [1,1].

I have writeen two programs, whose usage is described below
 

 makeiv



a program which takes in files describing Zheng-Ball patches and outputs iv files of the tesselated patch. Works for 3,5 and 6 sided patches. Tested only on cubic patches.
 file format:

    numSides degree numberOfControlPoints
    control points specified in concentric, counter-clockwise circles  from outside in.

 command line usage
  makeiv [filename [tesselation]]

 tesselation is an integer, with larger numbers giving more dense tesselations. writes to filename.iv
 if no filename is specified defaults to default5
 tesselation defaults to 4.
 

editor


 usage:
  left mouse (no selection) x,y translation of patch
  middle mouse (no selection) z translation of patch
  right mouse    rotation of patch
  left mouse (with shift)  select control point
  left mouse (with selection) translate CV in view frame
  middle mouse (with selection) translate CV in perpindicular to view frame

    Use the file menu to load and save files (only one saved file is supported at this time, because of the lack of an easy TK file selection widget.
    Use the mode menu to load default patches of different numbers of sides. Currently only cubic patches are supported.

References