Tiedosto:Symmetrical 5-set Venn diagram.svg
testwikistä
Siirry navigaatioon
Siirry hakuun
Tämän PNG-esikatselun koko koskien SVG-tiedostoa: 512 × 512 kuvapistettä. Muut resoluutiot: 240 × 240 kuvapistettä | 480 × 480 kuvapistettä | 768 × 768 kuvapistettä | 1 024 × 1 024 kuvapistettä | 2 048 × 2 048 kuvapistettä.
Alkuperäinen tiedosto (SVG-tiedosto; oletustarkkuus 512 × 512 kuvapistettä; tiedostokoko 4 KiB)
Tämä tiedosto on jaettu Wikimedia Commonsista ja muut hankkeet saattavat käyttää sitä. Tiedot tiedoston kuvaussivulta näkyvät alla.
Yhteenveto
| KuvausSymmetrical 5-set Venn diagram.svg |
English: Radially-symmetrical five-set Venn diagram devised by Branko Grünbaum |
| Päiväys | |
| Lähde | Oma teos |
| Tekijä | Cmglee |
| SVG kehittely InfoField |
Python script to optimise for maximum area of the smallest regions
#!/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()
# """
Lisenssi
Minä, tämän teoksen tekijänoikeuksien haltija, julkaisen täten tämän teoksen seuraavalla lisenssillä:
Tämä tiedosto on lisensoitu Creative Commons Nimeä-JaaSamoin 3.0 Ei sovitettu -lisenssillä.
- Voit:
- jakaa – kopioida, levittää ja esittää teosta
- remiksata – valmistaa muutettuja teoksia
- Seuraavilla ehdoilla:
- nimeäminen – Sinun on mainittava lähde asianmukaisesti, tarjottava linkki lisenssiin sekä merkittävä, mikäli olet tehnyt muutoksia. Voit tehdä yllä olevan millä tahansa kohtuullisella tavalla, mutta et siten, että annat ymmärtää lisenssinantajan suosittelevan sinua tai teoksen käyttöäsi.
- jaa samoin – Jos muutat tai perustat tähän työhön, voit jakaa tuloksena syntyvää työtä vain tällä tai tämän kaltaisella lisenssillä.
Kuvatekstit
Lisää yhden rivin pituinen kuvaus tästä tiedostosta
Kohteet, joita tässä tiedostossa esitetään
esittää
Tuntematon arvo ilman Wikidata-kohdetta
3 783 tavu
image/svg+xml
1923f53c5107a980952aed5109955ad64aaee627
Tiedoston historia
Päiväystä napsauttamalla näet, millainen tiedosto oli kyseisellä hetkellä.
| Päiväys | Pienoiskuva | Koko | Käyttäjä | Kommentti | |
|---|---|---|---|---|---|
| nykyinen | 16. huhtikuuta 2019 kello 01.17 | 512 × 512 (4 KiB) | wikimediacommons>Cmglee | Improve optimisation and rendering. |
Tiedoston käyttö
Seuraava sivu käyttää tätä tiedostoa: