File:Symmetrical 5-set Venn diagram.svg
Une page de Wikimedia Commons, la médiathèque libre.
Aller à la navigation
Aller à la recherche
- Fichier
- Historique du fichier
- Utilisations locales du fichier
- Utilisations du fichier sur d’autres wikis
- Métadonnées
Taille de cet aperçu PNG pour ce fichier SVG : 512 × 512 pixels. Autres résolutions : 240 × 240 pixels | 480 × 480 pixels | 768 × 768 pixels | 1 024 × 1 024 pixels | 2 048 × 2 048 pixels.
Fichier d’origine (Fichier SVG, nominalement de 512 × 512 pixels, taille : 4 kio)
Informations sur le fichier
Données structurées
Légendes
Description[modifier]
DescriptionSymmetrical 5-set Venn diagram.svg |
English: Radially-symmetrical five-set Venn diagram devised by Branko Grünbaum |
Source | Travail personnel |
Auteur | Cmglee |
Python script to optimise for maximum area of the smallest regions[modifier]
#!/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()
# """
Conditions d’utilisation[modifier]
Moi, en tant que détenteur des droits d’auteur sur cette œuvre, je la publie sous la licence suivante :
Ce fichier est disponible selon les termes de la licence Creative Commons Attribution – Partage dans les Mêmes Conditions 3.0 (non transposée).
- Vous êtes libre :
- de partager – de copier, distribuer et transmettre cette œuvre
- d’adapter – de modifier cette œuvre
- Sous les conditions suivantes :
- paternité – Vous devez donner les informations appropriées concernant l'auteur, fournir un lien vers la licence et indiquer si des modifications ont été faites. Vous pouvez faire cela par tout moyen raisonnable, mais en aucune façon suggérant que l’auteur vous soutient ou approuve l’utilisation que vous en faites.
- partage à l’identique – Si vous modifiez, transformez, ou vous basez sur cette œuvre, vous devez distribuer votre contribution sous la même licence ou une licence compatible avec celle de l’original.
Historique du fichier
Cliquer sur une date et heure pour voir le fichier tel qu'il était à ce moment-là.
(les plus récentes | les plus anciennes) Voir (10 plus récentes | 10 plus anciennes) (10 | 20 | 50 | 100 | 250 | 500)
Date et heure | Vignette | Dimensions | Utilisateur | Commentaire | |
---|---|---|---|---|---|
actuel | 16 avril 2019 à 00:17 | 512 × 512 (4 kio) | Cmglee (d | contributions) | Improve optimisation and rendering. | |
14 octobre 2016 à 12:47 | 512 × 512 (4 kio) | Cmglee (d | contributions) | Optimise for maximum area of the smallest regions. | ||
11 avril 2011 à 00:35 | 746 × 742 (3 kio) | AnonMoos (d | contributions) | adjusting margins | ||
11 mars 2011 à 22:09 | 512 × 512 (3 kio) | Cmglee (d | contributions) | Use defs to make opaque lines. | ||
11 mars 2011 à 21:49 | 512 × 512 (3 kio) | Cmglee (d | contributions) | Explicitly specify font size. | ||
11 mars 2011 à 21:42 | 512 × 512 (1 kio) | Cmglee (d | contributions) | Make transparent fill attribute of ellipses. | ||
11 mars 2011 à 21:40 | 512 × 512 (1 kio) | Cmglee (d | contributions) | Add opaque lines. | ||
11 mars 2011 à 21:37 | 512 × 512 (1 017 octet) | Cmglee (d | contributions) | Use fill with hex codes and opacity instead of fill with rgba codes. | ||
11 mars 2011 à 21:34 | 512 × 512 (1 010 octet) | Cmglee (d | contributions) | Temporarily remove text to check if ellipses work. | ||
11 mars 2011 à 21:33 | 512 × 512 (3 kio) | Cmglee (d | contributions) | Convert CSS styles to attributes. |
(les plus récentes | les plus anciennes) Voir (10 plus récentes | 10 plus anciennes) (10 | 20 | 50 | 100 | 250 | 500)
Vous ne pouvez pas remplacer ce fichier.
Utilisations locales du fichier
Les 2 pages suivantes utilisent ce fichier :
Utilisations du fichier sur d’autres wikis
Les autres wikis suivants utilisent ce fichier :
- Utilisation sur bn.wikipedia.org
- Utilisation sur de.wikipedia.org
- Utilisation sur en.wikipedia.org
- Utilisation sur en.wikiversity.org
- Utilisation sur fi.wikipedia.org
- Utilisation sur fr.wikipedia.org
- Utilisation sur id.wikipedia.org
- Utilisation sur ja.wikipedia.org
- Utilisation sur pt.wikipedia.org
- Utilisation sur uk.wikipedia.org
Métadonnées
Ce fichier contient des informations supplémentaires, probablement ajoutées par l'appareil photo numérique ou le numériseur utilisé pour le créer.
Si le fichier a été modifié depuis son état original, certains détails peuvent ne pas refléter entièrement l'image modifiée.
Titre court | Symmetrical 5-set Venn diagram |
---|---|
Titre de l’image | Radially symmetrical five-set Venn diagram originally devised by Branko Gruenbaum and optimised for maximum area of the smallest regions and rendered by CMG Lee. |
Largeur | 100% |
Hauteur | 100% |