You can subscribe to this list here.
2004 
_{Jan}

_{Feb}

_{Mar}

_{Apr}

_{May}

_{Jun}

_{Jul}
(13) 
_{Aug}
(65) 
_{Sep}
(8) 
_{Oct}
(102) 
_{Nov}
(22) 
_{Dec}
(23) 

2005 
_{Jan}
(45) 
_{Feb}
(73) 
_{Mar}
(49) 
_{Apr}
(23) 
_{May}
(1) 
_{Jun}
(64) 
_{Jul}
(178) 
_{Aug}
(78) 
_{Sep}
(155) 
_{Oct}
(16) 
_{Nov}
(3) 
_{Dec}
(5) 
2006 
_{Jan}
(3) 
_{Feb}
(48) 
_{Mar}
(10) 
_{Apr}
(48) 
_{May}
(178) 
_{Jun}
(19) 
_{Jul}
(11) 
_{Aug}
(5) 
_{Sep}
(5) 
_{Oct}

_{Nov}
(1) 
_{Dec}

2007 
_{Jan}
(1) 
_{Feb}
(3) 
_{Mar}
(2) 
_{Apr}
(7) 
_{May}

_{Jun}

_{Jul}
(10) 
_{Aug}
(3) 
_{Sep}
(4) 
_{Oct}
(67) 
_{Nov}
(4) 
_{Dec}
(1) 
2008 
_{Jan}
(2) 
_{Feb}
(2) 
_{Mar}
(19) 
_{Apr}
(3) 
_{May}
(12) 
_{Jun}
(2) 
_{Jul}

_{Aug}

_{Sep}
(2) 
_{Oct}

_{Nov}
(3) 
_{Dec}

2009 
_{Jan}

_{Feb}

_{Mar}
(2) 
_{Apr}

_{May}
(1) 
_{Jun}
(1) 
_{Jul}
(1) 
_{Aug}

_{Sep}

_{Oct}
(1) 
_{Nov}

_{Dec}
(6) 
2010 
_{Jan}
(3) 
_{Feb}

_{Mar}

_{Apr}

_{May}

_{Jun}
(10) 
_{Jul}
(5) 
_{Aug}

_{Sep}

_{Oct}

_{Nov}

_{Dec}
(3) 
2011 
_{Jan}

_{Feb}

_{Mar}

_{Apr}
(14) 
_{May}
(112) 
_{Jun}
(11) 
_{Jul}
(48) 
_{Aug}

_{Sep}
(2) 
_{Oct}
(11) 
_{Nov}

_{Dec}
(5) 
2012 
_{Jan}

_{Feb}
(9) 
_{Mar}
(1) 
_{Apr}

_{May}
(2) 
_{Jun}

_{Jul}

_{Aug}

_{Sep}

_{Oct}
(82) 
_{Nov}
(1) 
_{Dec}
(5) 
2013 
_{Jan}
(3) 
_{Feb}

_{Mar}

_{Apr}
(1) 
_{May}
(6) 
_{Jun}

_{Jul}
(109) 
_{Aug}
(34) 
_{Sep}
(21) 
_{Oct}
(45) 
_{Nov}

_{Dec}
(34) 
2014 
_{Jan}

_{Feb}
(2) 
_{Mar}
(5) 
_{Apr}

_{May}

_{Jun}

_{Jul}

_{Aug}
(2) 
_{Sep}
(1) 
_{Oct}

_{Nov}
(3) 
_{Dec}

2015 
_{Jan}

_{Feb}
(1) 
_{Mar}
(1) 
_{Apr}
(45) 
_{May}
(2) 
_{Jun}
(2) 
_{Jul}

_{Aug}

_{Sep}

_{Oct}
(2) 
_{Nov}
(10) 
_{Dec}

2016 
_{Jan}
(1) 
_{Feb}
(4) 
_{Mar}

_{Apr}

_{May}
(1) 
_{Jun}

_{Jul}
(5) 
_{Aug}

_{Sep}

_{Oct}

_{Nov}

_{Dec}

S  M  T  W  T  F  S 



1

2

3

4
(1) 
5

6

7

8
(2) 
9
(4) 
10
(3) 
11
(6) 
12

13

14
(3) 
15

16

17

18
(5) 
19

20

21
(3) 
22
(1) 
23

24
(2) 
25

26
(3) 
27

28
(7) 
29

30

31
(5) 


From: <wobsta@us...>  20131014 22:06:41

Revision: 3536 https://sourceforge.net/p/pyx/code/3536/ Author: wobsta Date: 20131014 22:06:38 +0000 (Mon, 14 Oct 2013) Log Message:  line intersection determinate is signed, improve the colinear criteria docstring Modified Paths:  trunk/pyx/pyx/normpath.py Modified: trunk/pyx/pyx/normpath.py ===================================================================  trunk/pyx/pyx/normpath.py 20131014 10:50:18 UTC (rev 3535) +++ trunk/pyx/pyx/normpath.py 20131014 22:06:38 UTC (rev 3536) @@ 259,10 +259,11 @@ invdet = b_deltax_pt * a_deltay_pt  b_deltay_pt * a_deltax_pt  if invdet < epsilon * epsilon:  # At least one of the lines is either very short or the lines  # are almost parallel. In both cases, a proper colinear check  # is adequate, already. Let's first check for short lines. + if abs(invdet) < epsilon * epsilon: + # As invdet measures the area spanned by the two lines, least + # one of the lines is either very short or the lines are almost + # parallel. In both cases, a proper colinear check is adequate, + # already. Let's first check for short lines. short_self = math.hypot(self.x1_pt  self.x0_pt, self.y1_pt  self.y0_pt) < epsilon short_other = math.hypot(other.x1_pt  other.x0_pt, @@ 277,8 +278,6 @@ ox_pt = 0.5*(other.x0_pt + other.x1_pt) oy_pt = 0.5*(other.y0_pt + other.y1_pt)  # We define a helper function returning a valid parameter of a  # point on a line given a point close to this line. def closepoint(x_pt, y_pt, x0_pt, y0_pt, x1_pt, y1_pt): """Returns the line parameter p in range [0, 1] for which 
From: <wobsta@us...>  20131014 10:50:21

Revision: 3535 https://sourceforge.net/p/pyx/code/3535/ Author: wobsta Date: 20131014 10:50:18 +0000 (Mon, 14 Oct 2013) Log Message:  for two long colinear lines, we need to test the beginning and end point of each line against the other Modified Paths:  trunk/pyx/pyx/normpath.py Modified: trunk/pyx/pyx/normpath.py ===================================================================  trunk/pyx/pyx/normpath.py 20131014 10:31:45 UTC (rev 3534) +++ trunk/pyx/pyx/normpath.py 20131014 10:50:18 UTC (rev 3535) @@ 277,8 +277,8 @@ ox_pt = 0.5*(other.x0_pt + other.x1_pt) oy_pt = 0.5*(other.y0_pt + other.y1_pt)  # We define two helper functions returning a valid parameter of  # a point on a line given a point close to this line. + # We define a helper function returning a valid parameter of a + # point on a line given a point close to this line. def closepoint(x_pt, y_pt, x0_pt, y0_pt, x1_pt, y1_pt): """Returns the line parameter p in range [0, 1] for which @@ 297,18 +297,6 @@ return p return None # just be explicit in returning None here  def closepoint2(x_pt, y_pt,  x0_pt, y0_pt, x1_pt, y1_pt,  X0_pt, Y0_pt, X1_pt, Y1_pt):  """Same as closepoint but for two lines ((x0_pt, y0_pt),  (x1_pt, y1_pt) and ((X0_pt, Y0_pt), (X1_pt, Y1_pt))  returning a tuple of parameters."""  p = closepoint(x_pt, y_pt, x0_pt, y0_pt, x1_pt, y1_pt)  if p is None:  return None, None  P = closepoint(x_pt, y_pt, X0_pt, Y0_pt, X1_pt, Y1_pt)  return p, P  if short_self and short_other: # If both lines are short, we just measure the distance of # the middle points. @@ 325,20 +313,22 @@ if p is not None: return [(p, 0.5)] else:  # For two long colinear lines, we need to test the middle  # points constructed from a beginning and an end point of  # the two lines, in both combinations. We return just one + # For two long colinear lines, we need to test the + # beginning and end point of the two lines with respect to + # the other line, in all combinations. We return just one # solution even when the lines intersect for a whole range.  sp, so = closepoint2(0.5*(self.x0_pt + other.x1_pt), 0.5*(self.y0_pt + other.y1_pt),  self.x0_pt, self.y0_pt, self.x1_pt, self.y1_pt,  other.x0_pt, other.y0_pt, other.x1_pt, other.y1_pt)  if sp is not None and so is not None:  return [(sp, so)]  sp, so = closepoint2(0.5*(self.x1_pt + other.x0_pt), 0.5*(self.y1_pt + other.y0_pt),  self.x0_pt, self.y0_pt, self.x1_pt, self.y1_pt,  other.x0_pt, other.y0_pt, other.x1_pt, other.y1_pt)  if sp is not None and so is not None:  return [(sp, so)] + p = closepoint(self.x0_pt, self.y0_pt, other.x0_pt, other.y0_pt, other.x1_pt, other.y1_pt) + if p is not None: + return [(0, p)] + p = closepoint(self.x1_pt, self.y1_pt, other.x0_pt, other.y0_pt, other.x1_pt, other.y1_pt) + if p is not None: + return [(1, p)] + p = closepoint(other.x0_pt, other.y0_pt, self.x0_pt, self.y0_pt, self.x1_pt, self.y1_pt) + if p is not None: + return [(p, 0)] + p = closepoint(other.x1_pt, other.y1_pt, self.x0_pt, self.y0_pt, self.x1_pt, self.y1_pt) + if p is not None: + return [(p, 1)] return [] det = 1.0 / invdet 
From: <wobsta@us...>  20131014 10:31:48

Revision: 3534 https://sourceforge.net/p/pyx/code/3534/ Author: wobsta Date: 20131014 10:31:45 +0000 (Mon, 14 Oct 2013) Log Message:  fix closepoint function, which was rather incomplete/broken Modified Paths:  trunk/pyx/pyx/normpath.py Modified: trunk/pyx/pyx/normpath.py ===================================================================  trunk/pyx/pyx/normpath.py 20131011 22:32:18 UTC (rev 3533) +++ trunk/pyx/pyx/normpath.py 20131014 10:31:45 UTC (rev 3534) @@ 292,8 +292,10 @@ ((x1_pt  x0_pt)**2 + (y1_pt  y0_pt)**2)) p = min(1, max(0, p)) xs_pt = x0_pt + p*(x1_pt  x0_pt)  xs_pt = x0_pt + p*(x1_pt  x0_pt)  return p + ys_pt = y0_pt + p*(y1_pt  y0_pt) + if math.hypot(xs_pt  x_pt, ys_pt  y_pt) < epsilon: + return p + return None # just be explicit in returning None here def closepoint2(x_pt, y_pt, x0_pt, y0_pt, x1_pt, y1_pt, 