Berkas:Symmetrical 5-set Venn diagram.svg

Konten halaman tidak didukung dalam bahasa lain.
Dari Wikipedia bahasa Indonesia, ensiklopedia bebas

Ukuran asli(Berkas SVG, secara nominal 512 × 512 piksel, besar berkas: 4 KB)

Berkas ini berasal dari Wikimedia Commons dan mungkin digunakan oleh proyek-proyek lain. Deskripsi dari halaman deskripsinya ditunjukkan di bawah ini.

 
W3C-validity not checked.

Ringkasan

Deskripsi
English: Radially-symmetrical five-set Venn diagram devised by Branko Grünbaum
Sumber Karya sendiri
Pembuat Cmglee

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()
# """

Lisensi

Saya, pemilik hak cipta dari karya ini, dengan ini menerbitkan berkas ini di bawah ketentuan berikut:
w:id:Creative Commons
atribusi berbagi serupa
Berkas on ipartandoan sian on Creative Commons Attribution-Share Alike 3.0 Unported partadoan.
Anda diizinkan:
  • untuk berbagi – untuk menyalin, mendistribusikan dan memindahkan karya ini
  • untuk menggubah – untuk mengadaptasi karya ini
Berdasarkan ketentuan berikut:
  • atribusi – Anda harus mencantumkan atribusi yang sesuai, memberikan pranala ke lisensi, dan memberi tahu bila ada perubahan. Anda dapat melakukannya melalui cara yang Anda inginkan, namun tidak menyatakan bahwa pemberi lisensi mendukung Anda atau penggunaan Anda.
  • berbagi serupa – Apabila Anda menggubah, mengubah, atau membuat turunan dari materi ini, Anda harus menyebarluaskan kontribusi Anda di bawah lisensi yang sama seperti lisensi pada materi asli.

Captions

Add a one-line explanation of what this file represents

Items portrayed in this file

menggambarkan

Riwayat berkas

Klik pada tanggal/waktu untuk melihat berkas ini pada saat tersebut.

(terbaru | terlama) Lihat (10 lebih baru | ) (10 | 20 | 50 | 100 | 250 | 500)
Tanggal/WaktuMiniaturDimensiPenggunaKomentar
terkini16 April 2019 00.17Miniatur versi sejak 16 April 2019 00.17512 × 512 (4 KB)CmgleeImprove optimisation and rendering.
14 Oktober 2016 12.47Miniatur versi sejak 14 Oktober 2016 12.47512 × 512 (4 KB)CmgleeOptimise for maximum area of the smallest regions.
11 April 2011 00.35Miniatur versi sejak 11 April 2011 00.35746 × 742 (3 KB)AnonMoosadjusting margins
11 Maret 2011 22.09Miniatur versi sejak 11 Maret 2011 22.09512 × 512 (3 KB)CmgleeUse defs to make opaque lines.
11 Maret 2011 21.49Miniatur versi sejak 11 Maret 2011 21.49512 × 512 (3 KB)CmgleeExplicitly specify font size.
11 Maret 2011 21.42Miniatur versi sejak 11 Maret 2011 21.42512 × 512 (1 KB)CmgleeMake transparent fill attribute of ellipses.
11 Maret 2011 21.40Miniatur versi sejak 11 Maret 2011 21.40512 × 512 (1 KB)CmgleeAdd opaque lines.
11 Maret 2011 21.37Miniatur versi sejak 11 Maret 2011 21.37512 × 512 (1.017 bita)CmgleeUse fill with hex codes and opacity instead of fill with rgba codes.
11 Maret 2011 21.34Miniatur versi sejak 11 Maret 2011 21.34512 × 512 (1.010 bita)CmgleeTemporarily remove text to check if ellipses work.
11 Maret 2011 21.33Miniatur versi sejak 11 Maret 2011 21.33512 × 512 (3 KB)CmgleeConvert CSS styles to attributes.
(terbaru | terlama) Lihat (10 lebih baru | ) (10 | 20 | 50 | 100 | 250 | 500)

Halaman berikut menggunakan berkas ini:

Penggunaan berkas global

Wiki lain berikut menggunakan berkas ini:

Metadata