Linear equality and inequality constraints arise naturally in specifying many aspects of user interfaces, such as requiring that one window be to the left of another, requiring that a pane occupy the leftmost 1/3 of a window, or preferring that an object be contained within a rectangle if possible. Current constraint solvers designed for UI applications cannot efficiently handle simultaneous linear equations and inequalities. This is a major limitation. We describe Cassowary—an incremental algorithm based on the dual simplex method that can solve such systems of constraints efficiently. This informal technical report describes the latest version of the Cassowary algorithm. It is derived from the paper “Solving Linear Arithmetic Constraints for User Interface Applications” by Alan Borning, Kim Marriott, Peter Stuckey, and Yi Xiao [7], published in the UIST’97 Proceedings. The UIST paper also contains a description of QOCA, a closely related solver that finds least-squares solu...
Alan Borning, Kim Marriott, Peter J. Stuckey, Yi X