File:Symmetrical 5-set Venn diagram.svg

Aus Wikimedia Commons, dem freien Medienarchiv
Zur Navigation springen Zur Suche springen

Originaldatei(SVG-Datei, Basisgröße: 512 × 512 Pixel, Dateigröße: 4 KB)

Bildtexte

Kurzbeschreibungen

Ergänze eine einzeilige Erklärung, was diese Datei darstellt.
 
W3C-validity not checked.

Beschreibung

[Bearbeiten]
Beschreibung
English: Radially-symmetrical five-set Venn diagram devised by Branko Grünbaum
Quelle Eigenes Werk
Urheber Cmglee

Python script to optimise for maximum area of the smallest regions

[Bearbeiten]
#!/usr/bin/env python
import math

class Ellipse:
 def __init__(self, x,y, rx,ry):
  self.x  = x
  self.y  = y
  self.rx = rx
  self.ry = ry

class Matrix:
 def __init__(self, ellipse):
  self.half_width  = max(int(math.ceil(ellipse.rx + ellipse.x) + 1),
                         int(math.ceil(ellipse.ry + ellipse.y) + 1))
  self.half_height = self.half_width
  self.width       = self.half_width * 2
  self.height      = self.half_height * 2
  self.cells       = [[0 for x in range(self.width)] for y in range(self.height)]
 def display(self):
  codes = '0123456789abcdefghijklmnopqrstuvwxyz'
  print('\n'.join([''.join([codes[self.cells[y][x]] for x in range(self.width)])
                                                    for y in range(self.height)]))
 def draw_ellipse(self, i_bit, ellipse, angle):
  mask_bit  = (1 << i_bit)
  sin_angle = math.sin(math.radians(angle))
  cos_angle = math.cos(math.radians(angle))
  for matrix_y in range(self.height):
   for matrix_x in range(self.width):
    cell_x_unrotated = matrix_x - self.half_width
    cell_y_unrotated = matrix_y - self.half_height
    cell_x = sin_angle * cell_y_unrotated + cos_angle * cell_x_unrotated
    cell_y = cos_angle * cell_y_unrotated - sin_angle * cell_x_unrotated
    cell_dx = float(cell_x - ellipse.x) / ellipse.rx
    cell_dy = float(cell_y - ellipse.y) / ellipse.ry
    # print('%3d%3d | %4d%4d | %6.2f%6.2f | %6.2f %d' %
    #       (matrix_x,matrix_y, cell_x,cell_y, cell_dx,cell_dy,
    #        cell_dx * cell_dx + cell_dy * cell_dy,cell_dx * cell_dx + cell_dy * cell_dy > 1))
    if (cell_dx * cell_dx + cell_dy * cell_dy <= 1): self.cells[matrix_y][matrix_x] |= mask_bit
 def draw_ellipses(self, ellipse):
  for i_ellipse in range(5): self.draw_ellipse(i_ellipse, ellipse, i_ellipse * 72)
 def count_regions(self):
  counts = [0 for code in range(1 << 5)]
  for matrix_y in range(self.height):
   for matrix_x in range(self.width):
    counts[self.cells[matrix_y][matrix_x]] += 1
  area_all  = self.width * self.height
  area_min  = area_all
  area_non0 = area_all - counts[0]
  for i_count in range(len(counts)):
   if (area_min > counts[i_count]): area_min = counts[i_count]
  if (True):
   # if (area_min > 0):
    bar = ''.join(['%-5d+----' % i for i in range(99)]).replace(' ','-')[1:]
    ppm = 1e6 * area_min / area_non0
    print('x:%2d y:%2d rx:%2d ry:%2d ppm:%4.0f %s' %
          (ellipse.x,ellipse.y, ellipse.rx,ellipse.ry, ppm, bar[:int(ppm / 100 + 0.5)]))
"""
ellipse = Ellipse(9,14, 40,80)
ellipse = Ellipse(7,16, 42,78)
ellipse = Ellipse(5,12, 46,70)
ellipse = Ellipse(5,14, 37,64)
ellipse = Ellipse(5,12, 40,65)
ellipse = Ellipse(5,12, 41,66)
ellipse = Ellipse(10,24, 82,132)
matrix  = Matrix(ellipse)
matrix.draw_ellipses(ellipse)
matrix.display()
matrix.count_regions()
"""
model_x  =  20; half_range_x  = 1; step_x  = 1
model_y  =  46; half_range_y  = 1; step_y  = 1
model_rx = 166; half_range_rx = 1; step_rx = 1
model_ry = 264; half_range_ry = 1; step_ry = 1
for    x  in range(-half_range_x , half_range_x  + 1, step_x ):
 for   y  in range(-half_range_y , half_range_y  + 1, step_y ):
  for  rx in range(-half_range_rx, half_range_rx + 1, step_rx):
   for ry in range(-half_range_ry, half_range_ry + 1, step_ry):
    ellipse = Ellipse(model_x + x,model_y + y, model_rx + rx,model_ry + ry)
    matrix  = Matrix(ellipse)
    matrix.draw_ellipses(ellipse)
    matrix.count_regions()
# """

Lizenz

[Bearbeiten]
Ich, der Urheber dieses Werkes, veröffentliche es unter der folgenden Lizenz:
w:de:Creative Commons
Namensnennung Weitergabe unter gleichen Bedingungen
Dieses Werk darf von dir
  • verbreitet werden – vervielfältigt, verbreitet und öffentlich zugänglich gemacht werden
  • neu zusammengestellt werden – abgewandelt und bearbeitet werden
Zu den folgenden Bedingungen:
  • Namensnennung – Du musst angemessene Urheber- und Rechteangaben machen, einen Link zur Lizenz beifügen und angeben, ob Änderungen vorgenommen wurden. Diese Angaben dürfen in jeder angemessenen Art und Weise gemacht werden, allerdings nicht so, dass der Eindruck entsteht, der Lizenzgeber unterstütze gerade dich oder deine Nutzung besonders.
  • Weitergabe unter gleichen Bedingungen – Wenn du das Material wiedermischst, transformierst oder darauf aufbaust, musst du deine Beiträge unter der gleichen oder einer kompatiblen Lizenz wie das Original verbreiten.

Dateiversionen

Klicke auf einen Zeitpunkt, um diese Version zu laden.

(neueste | älteste) Zeige (jüngere 10 | ) (10 | 20 | 50 | 100 | 250 | 500)
Version vomVorschaubildMaßeBenutzerKommentar
aktuell00:17, 16. Apr. 2019Vorschaubild der Version vom 00:17, 16. Apr. 2019512 × 512 (4 KB)Cmglee (Diskussion | Beiträge)Improve optimisation and rendering.
12:47, 14. Okt. 2016Vorschaubild der Version vom 12:47, 14. Okt. 2016512 × 512 (4 KB)Cmglee (Diskussion | Beiträge)Optimise for maximum area of the smallest regions.
00:35, 11. Apr. 2011Vorschaubild der Version vom 00:35, 11. Apr. 2011746 × 742 (3 KB)AnonMoos (Diskussion | Beiträge)adjusting margins
22:09, 11. Mär. 2011Vorschaubild der Version vom 22:09, 11. Mär. 2011512 × 512 (3 KB)Cmglee (Diskussion | Beiträge)Use defs to make opaque lines.
21:49, 11. Mär. 2011Vorschaubild der Version vom 21:49, 11. Mär. 2011512 × 512 (3 KB)Cmglee (Diskussion | Beiträge)Explicitly specify font size.
21:42, 11. Mär. 2011Vorschaubild der Version vom 21:42, 11. Mär. 2011512 × 512 (1 KB)Cmglee (Diskussion | Beiträge)Make transparent fill attribute of ellipses.
21:40, 11. Mär. 2011Vorschaubild der Version vom 21:40, 11. Mär. 2011512 × 512 (1 KB)Cmglee (Diskussion | Beiträge)Add opaque lines.
21:37, 11. Mär. 2011Vorschaubild der Version vom 21:37, 11. Mär. 2011512 × 512 (1.017 Bytes)Cmglee (Diskussion | Beiträge)Use fill with hex codes and opacity instead of fill with rgba codes.
21:34, 11. Mär. 2011Vorschaubild der Version vom 21:34, 11. Mär. 2011512 × 512 (1.010 Bytes)Cmglee (Diskussion | Beiträge)Temporarily remove text to check if ellipses work.
21:33, 11. Mär. 2011Vorschaubild der Version vom 21:33, 11. Mär. 2011512 × 512 (3 KB)Cmglee (Diskussion | Beiträge)Convert CSS styles to attributes.
(neueste | älteste) Zeige (jüngere 10 | ) (10 | 20 | 50 | 100 | 250 | 500)

Die folgenden 2 Seiten verwenden diese Datei:

Globale Dateiverwendung

Die nachfolgenden anderen Wikis verwenden diese Datei:

Metadaten