VideHoc: A Visualizer for Homogeneous Coordinates
Robert R. Lewis
University of British Columbia
Department of Computer Science
7 March, 1995
VideHoc is an interactive graphical program that visualizes two-dimensional homogeneous coordinates. Users manipulate data in one of four views and all views are dynamically updated to reflect the change.
The program is a re-implementation of the program Etch developed by Snoeyink [snoe88]. Hanrahan [hanr84] describes a non-graphical tool with a similar purpose. XYZ (Nievergelt, et al. [niev91]) is a similar and in manyways more powerful tool, but without VideHoc's intrinsic support for homogeneous coordinates.
VideHoc is intended to serve two roles: as an instructive tool for classes in computational geometry and as a research framework for testing new algorithms in computational geometry, particularly those exploiting homogeneous duality.
2 A VideHoc Overview
Figure 1 shows a typical VideHoc session. The canvas, or drawing area, shows the data the user has entered as elements: points, lines, chains (of line segments), and wedges (swept angles). The canvas can show several views: primal flat (Cartesian), primal fisheye (projection of the entire Cartesian plane onto a hemisphere), dual flat, and dual fisheye, either individually or all at the same time. When all views are shown, the same data appears in all of them: any change made to one window is reflected immediately in the other three.
Figure 1: A typical VideHoc session
The control bar above the canvas lets the user see and change VideHoc's current state, including:
mouse mode This is what the mouse is currently being used for: enter for entering points and lines, view for altering the what the canvas is displaying, or select for selecting points and lines for use in more complicated commands.
dual mapping This defines the kind of dual mapping that takes place: (classical) homogeneous, Edelsbrunner, or Brown.
gridding Whether or not points and lines (the two points defining them, actually) entered are to be constrained to lie on integer grid points.