From e50b2facb441d96febf17a6210370489bbcb9dbf Mon Sep 17 00:00:00 2001 From: Danielle Bolan <n02702451@hawkmail.newpaltz.edu> Date: Wed, 30 Jul 2014 15:31:27 +0200 Subject: [PATCH] Need to merge --- doc/domain.rst | 21 ++++++-------- doc/examples.rst | 65 +++++++++++++++++++++++++++++++++++++------- doc/images/cube.jpg | Bin 0 -> 36839 bytes doc/polyhedra.rst | 2 +- 4 files changed, 64 insertions(+), 24 deletions(-) create mode 100644 doc/images/cube.jpg diff --git a/doc/domain.rst b/doc/domain.rst index 91b96f8..7098c32 100644 --- a/doc/domain.rst +++ b/doc/domain.rst @@ -3,12 +3,8 @@ Domains Module .. py:class :: Domain - .. py:method:: polyhedra(self) - - Return . - -Domain Properties ------------------ + The properties of a domain can be are found using the following + .. py:method:: symbols Returns a tuple of the symbols that exsist in a domain. @@ -29,8 +25,8 @@ Domain Properties Returns ``True`` if a domain depends on the given dimensions. -Unary Properties ----------------- + The unary properties of a domain can be inspected using the following methods. + .. py:method:: isempty(self) Return ``True`` is a domain is empty. @@ -41,14 +37,13 @@ Unary Properties .. py:method:: isbounded(self) - Return ``True`` if a domain is bounded + Return ``True`` if a domain is bounded. .. py:method:: disjoint(self) - Returns a domain as disjoint. + It is not guarenteed that a domain is disjoint. If it is necessary, this method will return a domain as disjoint. -Binary Properties ------------------ + The following methods compare two domains to find the binary properties. .. py:method:: isdisjoint(self, other) @@ -144,7 +139,7 @@ Binary Properties .. py:method:: points(self) - Return a list of the points contained in a domain. + Return a list of the points contained in a domain as :class:`Points` objects. .. py:method:: vertices(self) diff --git a/doc/examples.rst b/doc/examples.rst index 793ecbe..f3fbfb3 100644 --- a/doc/examples.rst +++ b/doc/examples.rst @@ -1,22 +1,67 @@ Pypol Examples ============== -Creating a Square +Creating a Polyhedron ----------------- - To create any polyhedron, first define the symbols used. Then use the polyhedron functions to define the constraints for the polyhedron. This example creates a square:: + To create any polyhedron, first define the symbols used. Then use the polyhedron functions to define the constraints for the polyhedron. This example creates a square. + >>> from pypol import * >>> x, y = symbols('x y') >>> # define the constraints of the polyhedron - >>> square = Le(0, x) & Le(x, 2) & Le(0, y) & Le(y, 2) - >>> print(square) - >>> And(Ge(x, 0), Ge(-x + 2, 0), Ge(y, 0), Ge(-y + 2, 0)) + >>> square1 = Le(0, x) & Le(x, 2) & Le(0, y) & Le(y, 2) + >>> print(square1) + And(Ge(x, 0), Ge(-x + 2, 0), Ge(y, 0), Ge(-y + 2, 0)) - Several unary operations can be performed on a polyhedron. For example: :: +Urnary Operations +----------------- - >>> ¬square - + >>> square1.isempty() + False + >>> square1.isbounded() + True + +Binary Operations +----------------- + + >>> square2 = Le(2, x) & Le(x, 4) & Le(2, y) & Le(y, 4) + >>> square1 + square2 + Or(And(Ge(x, 0), Ge(-x + 2, 0), Ge(y, 0), Ge(-y + 2, 0)), And(Ge(x - 2, 0), Ge(-x + 4, 0), Ge(y - 2, 0), Ge(-y + 4, 0))) + >>> # check if square1 and square2 are disjoint + >>> square1.disjoint(square2) + False Plot Examples ------------- - - + + Linpy uses matplotlib plotting library to plot 2D and 3D polygons. The user has the option to pass subplots to the :meth:`plot` method. This can be a useful tool to compare polygons. Also, key word arguments can be passed such as color and the degree of transparency of a polygon. + + >>> import matplotlib.pyplot as plt + >>> from matplotlib import pylab + >>> from mpl_toolkits.mplot3d import Axes3D + >>> from pypol import * + >>> # define the symbols + >>> x, y, z = symbols('x y z') + >>> fig = plt.figure() + >>> cham_plot = fig.add_subplot(2, 2, 3, projection='3d') + >>> cham_plot.set_title('Chamfered cube') + >>> cham = Le(0, x) & Le(x, 3) & Le(0, y) & Le(y, 3) & Le(0, z) & Le(z, 3) & Le(z - 2, x) & Le(x, z + 2) & Le(1 - z, x) & Le(x, 5 - z) & Le(z - 2, y) & Le(y, z + 2) & Le(1 - z, y) & Le(y, 5 - z) & Le(y - 2, x) & Le(x, y + 2) & Le(1 - y, x) & Le(x, 5 - y) + >>> cham.plot(cham_plot, facecolors=(1, 0, 0, 0.75)) + >>> pylab.show() + + .. figure:: images/cube.jpg + :align: center + + The user can also inspect a polygon's vertices and the integer points included in the polygon. + + >>> diamond = Ge(y, x - 1) & Le(y, x + 1) & Ge(y, -x - 1) & Le(y, -x + 1) + >>> diamond.vertices() + [Point({x: Fraction(0, 1), y: Fraction(1, 1)}), Point({x: Fraction(-1, 1), y: Fraction(0, 1)}), Point({x: Fraction(1, 1), y: Fraction(0, 1)}), Point({x: Fraction(0, 1), y: Fraction(-1, 1)})] + >>> diamond.points() + [Point({x: -1, y: 0}), Point({x: 0, y: -1}), Point({x: 0, y: 0}), Point({x: 0, y: 1}), Point({x: 1, y: 0})] + + + + + + + diff --git a/doc/images/cube.jpg b/doc/images/cube.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d10cdaa2e0e42d245252f873dae7a39bf6eefe1e GIT binary patch literal 36839 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 literal 0 HcmV?d00001 diff --git a/doc/polyhedra.rst b/doc/polyhedra.rst index 779be46..de0dfd5 100644 --- a/doc/polyhedra.rst +++ b/doc/polyhedra.rst @@ -31,7 +31,7 @@ Polyhedra Module Subsitutes an expression into a polyhedron and returns the result. -To create a polyhedron, the user must use the folloing functions to define the equalities and inequalities which are the contraints of a polyhedron. +To create a polyhedron, the user must use the folloing functions to define equalities and inequalities as the contraints. .. py:function:: Eq(left, right) -- 2.20.1