title: shapely polygon_.buffer(0) "loses" half my bowtie
body: <p>I've seen online that buffer(0) should "fix" bowties. Shapely finds the intersection point of the bowtie, but only keeps the top-right portion. Looking for a workaround, I tried reversing the order of my points. Surprisingly (to me), the same top-right portion of the bowtie was still the one kept. I don't understand. Any help appreciated.</p>
  
  <p>I would like to retain the entire bowtie as two triangles (ore one six-sided polygon--either would be useful). Looking for a workaround for this "problem."</p>
  
  <pre><code>#!/usr/bin/env python3
  
  from shapely.geometry.polygon import Polygon
  
  bowtie_plot = [(1, 0), (0, 1), (0, -1), (-1, 0)]
  
  bowties = [
          Polygon(bowtie_plot),
          Polygon(bowtie_plot[::-1])
          ]
  
  cleaned = [
          bowties[0].buffer(0),
          bowties[1].buffer(0)
          ]
  
  print('cleaned[0] exterior = {}'.format(list(cleaned[0].exterior.coords)))
  # cleaned[0] exterior = [(0.0, 0.0), (-1.0, 1.0), (1.0, 1.0), (0.0, 0.0)]
  
  print('cleaned[1] exterior = {}'.format(list(cleaned[1].exterior.coords)))
  # cleaned[1] exterior = [(0.0, 0.0), (-1.0, 1.0), (1.0, 1.0), (0.0, 0.0)]
  
  # ADDITIONAL INFORMATION BELOW
  # here's what shapely *can* do with intersecting lines:
  # a star shape made of five intersecting lines and five points
  
  from math import sin, cos, pi
  
  star = Polygon(
          [(cos(x*pi*4/5), sin(x*pi*4/5)) for x in range(5)]
          ).buffer(0)
  
  # after buffering, becomes a star shape made out of ten lines and ten points
  # shapely found all intersections and corrected the polygon.
  print('list exterior = {}'.format(list(star.exterior.coords)))
  </code></pre>
  
  <p>After thinking about it, I can understand <em>why</em> a bowtie is treated differently than a star, but I'm interested in finding a workaround.</p>