def test_midpoint(): f = FiniteField f.base = 11 X0 = Point(f(0), f(0), blue(f)) X1 = Point(f(2), f(2), blue(f)) X2 = Point(f(10), f(0), blue(f)) for (x0, x1) in [(X0, X1), (X1, X0), (X0, X2), (X2, X0), (X1, X2), (X2, X1)]: m = LineSegment(x0, x1).midpoint() assert LineSegment(x0, m).quadrance() == LineSegment(x1, m).quadrance() m = LineSegment(x1, x0).midpoint() assert LineSegment(x0, m).quadrance() == LineSegment(x1, m).quadrance() X0 = Point(Rational(1), Rational(7), red(Rational)) X1 = Point(Rational(3), Rational(2), red(Rational)) X2 = Point(Rational(10), Rational(1), red(Rational)) for (x0, x1) in [(X0, X1), (X1, X0), (X0, X2), (X2, X0), (X1, X2), (X2, X1)]: m = LineSegment(x0, x1).midpoint() assert LineSegment(x0, m).quadrance() == LineSegment(x1, m).quadrance() m = LineSegment(x1, x0).midpoint() assert LineSegment(x0, m).quadrance() == LineSegment(x1, m).quadrance() X0 = Point(Rational(3), Rational(0), green(Rational)) X1 = Point(Rational(2), Rational(5), green(Rational)) X2 = Point(Rational(10), Rational(1), green(Rational)) for (x0, x1) in [(X0, X1), (X1, X0), (X0, X2), (X2, X0), (X1, X2), (X2, X1)]: m = LineSegment(x0, x1).midpoint() assert LineSegment(x0, m).quadrance() == LineSegment(x1, m).quadrance() m = LineSegment(x1, x0).midpoint() assert LineSegment(x0, m).quadrance() == LineSegment(x1, m).quadrance()
def test_quadrance(): f = FiniteField f.base = 11 p0 = Point(f(0), f(0)) p0b = Point(f(0), f(0), blue(f)) p0r = Point(f(0), f(0), red(f)) p0g = Point(f(0), f(0), green(f)) # FIXME: These should move to a LineSegment constructor test # FIXME: This test should move into some kind of test_line_segment assert_raises(GeometryError, LineSegment, p0, p0b) assert_raises(GeometryError, LineSegment, p0, p0r) assert_raises(GeometryError, LineSegment, p0, p0g) assert_raises(GeometryError, LineSegment, p0r, p0) assert_raises(GeometryError, LineSegment, p0r, p0b) assert_raises(GeometryError, LineSegment, p0r, p0g) assert_raises(GeometryError, LineSegment, p0b, p0) assert_raises(GeometryError, LineSegment, p0b, p0r) assert_raises(GeometryError, LineSegment, p0b, p0g) assert_raises(GeometryError, LineSegment, p0g, p0) assert_raises(GeometryError, LineSegment, p0g, p0r) assert_raises(GeometryError, LineSegment, p0g, p0b) p1 = Point(f(1), f(1)) p1b = Point(f(1), f(1), blue(f)) p1r = Point(f(1), f(1), red(f)) p1g = Point(f(1), f(1), green(f)) assert LineSegment(p1b, p0b).quadrance() == LineSegment( p0b, p1b).quadrance() == 2 assert LineSegment(p1r, p0r).quadrance() == LineSegment( p0r, p1r).quadrance() == 0 assert LineSegment(p1g, p0g).quadrance() == LineSegment( p0g, p1g).quadrance() == 2 p1 = Point(f(0), f(1)) p1b = Point(f(0), f(1), blue(f)) p1r = Point(f(0), f(1), red(f)) p1g = Point(f(0), f(1), green(f)) assert LineSegment(p1b, p0b).quadrance() == LineSegment( p0b, p1b).quadrance() == 1 assert LineSegment(p1r, p0r).quadrance() == LineSegment( p0r, p1r).quadrance() == -1 assert LineSegment(p1g, p0g).quadrance() == LineSegment( p0g, p1g).quadrance() == 0
def _get_colour(self): colour = self.colours.GetValue() return { "blue": blue(self.field), "red": red(self.field), "green": green(self.field) }[colour]
def test_quadrance(): f = FiniteField f.base = 11 p0 = Point(f(0), f(0)) p0b = Point(f(0), f(0), blue(f)) p0r = Point(f(0), f(0), red(f)) p0g = Point(f(0), f(0), green(f)) # FIXME: These should move to a LineSegment constructor test # FIXME: This test should move into some kind of test_line_segment assert_raises(GeometryError, LineSegment, p0, p0b) assert_raises(GeometryError, LineSegment, p0, p0r) assert_raises(GeometryError, LineSegment, p0, p0g) assert_raises(GeometryError, LineSegment, p0r, p0) assert_raises(GeometryError, LineSegment, p0r, p0b) assert_raises(GeometryError, LineSegment, p0r, p0g) assert_raises(GeometryError, LineSegment, p0b, p0) assert_raises(GeometryError, LineSegment, p0b, p0r) assert_raises(GeometryError, LineSegment, p0b, p0g) assert_raises(GeometryError, LineSegment, p0g, p0) assert_raises(GeometryError, LineSegment, p0g, p0r) assert_raises(GeometryError, LineSegment, p0g, p0b) p1 = Point(f(1), f(1)) p1b = Point(f(1), f(1), blue(f)) p1r = Point(f(1), f(1), red(f)) p1g = Point(f(1), f(1), green(f)) assert LineSegment(p1b, p0b).quadrance() == LineSegment(p0b, p1b).quadrance() == 2 assert LineSegment(p1r, p0r).quadrance() == LineSegment(p0r, p1r).quadrance() == 0 assert LineSegment(p1g, p0g).quadrance() == LineSegment(p0g, p1g).quadrance() == 2 p1 = Point(f(0), f(1)) p1b = Point(f(0), f(1), blue(f)) p1r = Point(f(0), f(1), red(f)) p1g = Point(f(0), f(1), green(f)) assert LineSegment(p1b, p0b).quadrance() == LineSegment(p0b, p1b).quadrance() == 1 assert LineSegment(p1r, p0r).quadrance() == LineSegment(p0r, p1r).quadrance() == -1 assert LineSegment(p1g, p0g).quadrance() == LineSegment(p0g, p1g).quadrance() == 0
def test_repr(): f = Rational blue_ = blue(Rational) red_ = red(Rational) green_ = green(Rational) print blue_, red_, green_ print Point(f(1), f(2), None) print Point(f(1), f(2), blue_) print Line(f(1), f(2), f(3), None) print Line(f(1), f(2), f(3), blue_) print Conic(f(1), f(2), f(3), f(4), f(5), f(6), None) print Conic(f(1), f(2), f(3), f(4), f(5), f(6), blue_)
def test_null(): f = Rational blue_ = blue(Rational) red_ = red(Rational) green_ = green(Rational) p0 = Point(f(0), f(0)) p0b = Point(f(0), f(0), blue_) p0r = Point(f(0), f(0), red_) p0g = Point(f(0), f(0), green_) assert_raises(GeometryError, p0.null) assert p0b.null() assert p0r.null() assert p0g.null() p1b = Point(f(1), f(1), blue_) p1r = Point(f(1), f(1), red_) p1g = Point(f(1), f(1), green_) assert not p1b.null() assert p1r.null() assert not p1g.null() p1b = Point(f(1), f(0), blue_) p1r = Point(f(1), f(0), red_) p1g = Point(f(1), f(0), green_) assert not p1b.null() assert not p1r.null() assert p1g.null() p1b = Point(f(0), f(1), blue_) p1r = Point(f(0), f(1), red_) p1g = Point(f(0), f(1), green_) assert not p1b.null() assert not p1r.null() assert p1g.null()
def test_eq(): f = Rational blue_ = blue(Rational) red_ = red(Rational) green_ = green(Rational) p0 = Point(f(0), f(0)) p0b = Point(f(0), f(0), blue_) p0r = Point(f(0), f(0), red_) p0g = Point(f(0), f(0), green_) assert p0 == p0 assert p0b == p0b assert p0r == p0r assert p0g == p0g assert p0 != p0b assert p0 != p0r assert p0 != p0g assert p0b != p0r assert p0b != p0g assert p0r != p0g p1 = Point(f(1), f(0)) p1b = Point(f(1), f(0), blue_) p1r = Point(f(1), f(0), red_) p1g = Point(f(1), f(0), green_) assert p1b == p1b assert p1r == p1r assert p1g == p1g assert p0 != p1 assert p0r != p1r assert p0g != p1g assert p0b != p1b
from pygeom.field import FiniteField from pygeom.geometry import red from pygeom.core import Point from pygeom.pairs import LineSegment, PointLine, Vertex # Set up the field f = FiniteField f.base = 13 geometry = red(f) # Create the points A = Point(f(3), f(7), geometry) B = Point(f(4), f(12), geometry) C = Point(f(9), f(2), geometry) # Create the lines of the triangle AB = LineSegment(A, B) AC = LineSegment(A, C) BC = LineSegment(B, C) # Create the altitudes alt_a = PointLine(A, BC.line).altitude().line alt_b = PointLine(B, AC.line).altitude().line alt_c = PointLine(C, AB.line).altitude().line # Calculate the points of intersection of the altitudes O_ab = Vertex(alt_a, alt_b).point O_bc = Vertex(alt_b, alt_c).point O_ca = Vertex(alt_c, alt_a).point
def _get_colour(self): colour = self.colours.GetValue() return {"blue": blue(self.field), "red": red(self.field), "green": green(self.field)}[colour]