(self)
| 2855 | yield a, b, c, d |
| 2856 | |
| 2857 | def all_perps(self) -> Generator[tuple[Point, ...], None, None]: |
| 2858 | for ang in self.vhalfpi.neighbors(Angle): |
| 2859 | d1, d2 = ang.directions |
| 2860 | if d1 is None or d2 is None: |
| 2861 | continue |
| 2862 | if d1 == d2: |
| 2863 | continue |
| 2864 | for l1, l2 in utils.cross(d1.neighbors(Line), d2.neighbors(Line)): |
| 2865 | for a, b, c, d in utils.all_4points(l1, l2): |
| 2866 | yield a, b, c, d |
| 2867 | |
| 2868 | def all_congs(self) -> Generator[tuple[Point, ...], None, None]: |
| 2869 | for l in self.type2nodes[Length]: |