Bestand:Sphere (parameters r, d).svg
Pagina-inhoud wordt niet ondersteund in andere talen.
Uiterlijk
Afmetingen van deze voorvertoning van het type PNG van dit SVG-bestand: 600 × 600 pixels Andere resoluties: 240 × 240 pixels | 480 × 480 pixels | 768 × 768 pixels | 1.024 × 1.024 pixels | 2.048 × 2.048 pixels.
Oorspronkelijk bestand (SVG-bestand, nominaal 600 × 600 pixels, bestandsgrootte: 7 kB)
Dit is een bestand van Wikimedia Commons.
Onderstaande beschrijving komt van de beschrijving van het bestand daar.
Onderstaande beschrijving komt van de beschrijving van het bestand daar.
Beschrijving
BeschrijvingSphere (parameters r, d).svg |
English: A figure showing radius and diameter of a sphere. |
Datum | 2019-08-26T05:42Z |
Bron |
Dit bestand is afgeleid van: Poincare-sphere stokes.svg van Geek3 |
Auteur | Steven Baltakatei Sandoval |
Source Code
The image is created by the following source-code. Requirements:
python3 source code:
# -*- coding: utf-8 -*-
# This python3 code uses `svgwrite` to create an `svg` (Scalable
# Vector Graphics) file illustrating a sphere with radius and diameter
# depicted. The code was adapted from code available at
# https://commons.wikimedia.org/wiki/File:Poincare-sphere_stokes.svg
# to illustrate a Poincaré sphere, a geometric model important to
# describe polarisations of electromagnetic waves.
# This code is a derivative of Poincare-sphere stokes.svg ([[:File:Poincare-sphere_stokes.svg]]) by Geek3 (https://commons.wikimedia.org/wiki/User:Geek3) used under the CC BY 3.0 license ([[:File:Poincare-sphere_stokes.svg]]). This code is licensed under CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/) by Steven Baltakatei Sandoval.
try:
import svgwrite as svg
except ImportError:
print('You need to install svgwrite: https://pypi.org/project/svgwrite/')
# documentation at https://svgwrite.readthedocs.io/en/master/
exit(1)
from math import *
# define function to convert spherical coordinates (theta,phi,radius) into cartesian coordinates (x,y,z)
def to_xyz(theta, phi, r=1):
return r * sin(theta) * cos(phi), r * sin(theta) * sin(phi), r * cos(theta)
# define function to convert cartesian coordinates (x,y,z) into spherical coordinates (theta,phi,radius)
def to_theta_phi_r(x, y, z):
return atan2(z, sqrt(x**2 + y**2)), atan2(x, y), sqrt(x**2+y**2+z**2)
# define function to rotate (?) given cartesian coordinates (x,y,z) by angle (a) in radians.
def rotx(x, y, z, a):
y, z = cos(a) * y + sin(a) * z, cos(a) * z - sin(a) * y
return x, y, z
def ellipse_path(theta, phi, tilt, flip=False):
t, p, r2 = to_theta_phi_r(*rotx(*(to_xyz(theta, phi, 1) + (tilt,))))
a = abs(r)
b = abs(r * sin(t))
# Construct Path Command string. Commands include `M` ('moveto') and `A` ('elliptical-arc'.
# reference: https://svgwrite.readthedocs.io/en/master/classes/path.html
return 'M %f,%f A %f,%f %f %i,%i %f,%f' % (-r*cos(p), -r*sin(p),
a, b, p*180/pi, 0, {True:1, False:0}[flip], r*cos(p), r*sin(p))
# document
size = 600, 600 #600px = 450pt
doc = svg.Drawing('sphere_(param_r,d).svg', profile='full', size=size)
doc.set_desc('sphere_(param_r,d).svg', '''Drawing of a sphere with radius r and diameter d.
rights: GNU Free Documentation license,
Creative Commons Attribution ShareAlike 4.0 license''')
# settings
dash = '8,6'
col = 'black'
r = 220
tilt = radians(-70)
phi = radians(-25)
cp, sp = cos(phi), sin(phi)
# background
doc.add(doc.rect(id='background', profile='full', insert=(0, 0), size=size, fill='white', stroke='none'))
# arrow markers
arrow_e = 'M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z'
arrow3 = doc.marker(id='arrow3', orient='auto', overflow='visible')
arrow3.add(doc.path(d=arrow_e, fill=col, stroke='none',
transform='scale(0.8) rotate(180)'))
doc.defs.add(arrow3)
arrow4 = doc.marker(id='arrow4', orient='auto', overflow='visible')
arrow4.add(doc.path(d=arrow_e, fill=col, stroke='none',
transform='scale(0.8)'))
doc.defs.add(arrow4)
# make a group for the sphere and define SVG Presentation Attributes (See 'https://svgwrite.readthedocs.io/en/master/attributes/presentation.html')
sphere = doc.g(transform='translate(300, 300)', fill='none', stroke=col, stroke_width='2')
#sphere['font-family'] = 'DejaVu Sans'
sphere['font-family'] = 'Linux Libertine O'
sphere['font-size'] = '80px'
sphere['font-style'] = 'italic'
doc.add(sphere)
# back ellipses
sphere.add(doc.path(d=ellipse_path(0, 0, tilt),
stroke_dasharray=dash, stroke=col)) # horizontal back
sphere.add(doc.path(d=ellipse_path(pi/2, phi, tilt, True),
stroke_dasharray=dash, stroke=col)) # vertical back 1
sphere.add(doc.path(d=ellipse_path(pi/2, phi+pi/2, tilt),
stroke_dasharray=dash, stroke=col)) # vertical back 2
# draw center point
sphere.add(doc.circle(center=(0, 0), r=5, fill=col, stroke='none'))
# draw radius line
radius_angle = radians(-227)
radius_line = doc.line(start=(0, 0), end=(0.99*r*cos(radius_angle),0.99*r*sin(radius_angle)), stroke=col)
radius_line['marker-end'] = arrow3.get_funciri()
sphere.add(radius_line)
# draw radius label, r
radius_label_pos_x = str(-0.25*r)
radius_label_pos_y = str(0.22*r)
radius_label_transform_str = "translate(" + radius_label_pos_x + ", " + radius_label_pos_y + ")"
sphere.add(doc.text('r', text_anchor='middle',
transform=radius_label_transform_str, stroke='none', fill=col))
# sphere surface
grad1 = doc.defs.add(doc.radialGradient(id='grad1',
center=(0.375, 0.15), r=0.75, gradientUnits='objectBoundingBox'))
grad1.add_stop_color(offset=0, color='#ffffff', opacity=0.3)
grad1.add_stop_color(offset=1, color='#dddddd', opacity=0.3)
sphere.add(doc.circle(center=(0, 0), r=str(r),
fill='url(#grad1)', stroke='none'))
grad2 = doc.defs.add(doc.radialGradient(id='grad2',
center=(0.45, 0.45), r=0.575, gradientUnits='objectBoundingBox'))
grad2.add_stop_color(offset=0.6, color='#cccccc', opacity=0)
grad2.add_stop_color(offset=0.8, color='#cccccc', opacity=0.2)
grad2.add_stop_color(offset=1, color='#333333', opacity=0.2)
sphere.add(doc.circle(center=(0, 0), r=str(r),
fill='url(#grad2)', stroke='none'))
# front ellipses
sphere.add(doc.path(d=ellipse_path(0, 0, tilt, True))) #horizontal front
sphere.add(doc.path(d=ellipse_path(pi/2, phi, tilt))) #vertical front 1
sphere.add(doc.path(d=ellipse_path(pi/2, phi+pi/2, tilt, True))) #vertical front 2
# circle edge
sphere.add(doc.circle(center=(0, 0), r=str(r)))
# diameter line
diam_line = doc.line(start=(-0.995*r, -r*1.05), end=(0.995*r,-r*1.05), stroke=col)
diam_line['marker-start'] = arrow4.get_funciri()
diam_line['marker-end'] = arrow3.get_funciri()
sphere.add(diam_line)
# left diameter line limit
diam_line_llim = doc.line(start=(-1.005*r, -0.15*r), end=(-1.005*r,-1.20*r), stroke=col)
sphere.add(diam_line_llim)
# right diameter line limit
diam_line_rlim = doc.line(start=(1.005*r, -0.15*r), end=(1.005*r,-1.20*r), stroke=col)
sphere.add(diam_line_rlim)
# draw diameter label, d
diameter_label_pos_x = str(-0.00*r)
diameter_label_pos_y = str(-1.075*r)
diameter_label_transform_str = "translate(" + diameter_label_pos_x + ", " + diameter_label_pos_y + ")"
sphere.add(doc.text('d', text_anchor='middle',
transform=diameter_label_transform_str, stroke='none', fill=col))
doc.save()
Licentie
Ik, de auteursrechthebbende van dit werk, maak het hierbij onder de volgende licentie beschikbaar:
Dit bestand is gelicenseerd onder de Creative Commons Naamsvermelding-GelijkDelen 4.0 Internationaal licentie.
- De gebruiker mag:
- Delen – het werk kopiëren, verspreiden en doorgeven
- Remixen – afgeleide werken maken
- Onder de volgende voorwaarden:
- naamsvermelding – U moet op een gepaste manier aan naamsvermelding doen, een link naar de licentie geven, en aangeven of er wijzigingen in het werk zijn aangebracht. U mag dit op elke redelijke manier doen, maar niet zodanig dat de indruk wordt gewekt dat de licentiegever instemt met uw werk of uw gebruik van zijn werk.
- Gelijk delen – Als u het werk heeft geremixt, veranderd, of erop heeft voortgebouwd, moet u het gewijzigde materiaal verspreiden onder dezelfde licentie als het oorspronkelijke werk, of een daarmee compatibele licentie.
Bijschriften
Beschrijf in één regel wat dit bestand voorstelt
Sphere (parameters r, d)
bol<\/a>"}},"text\/plain":{"nl":{"P180":"bol"}}},"{\"value\":{\"entity-type\":\"item\",\"numeric-id\":173817,\"id\":\"Q173817\"},\"type\":\"wikibase-entityid\"}":{"text\/html":{"nl":{"P180":"straal<\/a>"}},"text\/plain":{"nl":{"P180":"straal"}}},"{\"value\":{\"entity-type\":\"item\",\"numeric-id\":37221,\"id\":\"Q37221\"},\"type\":\"wikibase-entityid\"}":{"text\/html":{"nl":{"P180":"diameter<\/a>"}},"text\/plain":{"nl":{"P180":"diameter"}}}}" class="wbmi-entityview-statementsGroup wbmi-entityview-statementsGroup-P180 oo-ui-layout oo-ui-panelLayout oo-ui-panelLayout-framed">
Wikimedia-gebruikersnaam<\/a>"}},"text\/plain":{"nl":{"":"Wikimedia-gebruikersnaam"}}},"{\"value\":\"Baltakatei\",\"type\":\"string\"}":{"text\/html":{"nl":{"P4174":"Baltakatei<\/a>"}},"text\/plain":{"nl":{"P4174":"Baltakatei"}}},"{\"value\":{\"entity-type\":\"property\",\"numeric-id\":2093,\"id\":\"P2093\"},\"type\":\"wikibase-entityid\"}":{"text\/html":{"nl":{"":"auteur (als tekenreeks)<\/a>"}},"text\/plain":{"nl":{"":"auteur (als tekenreeks)"}}},"{\"value\":\"Steven Baltakatei Sandoval\",\"type\":\"string\"}":{"text\/html":{"nl":{"P2093":"Steven Baltakatei Sandoval"}},"text\/plain":{"nl":{"P2093":"Steven Baltakatei Sandoval"}}},"{\"value\":{\"entity-type\":\"property\",\"numeric-id\":2699,\"id\":\"P2699\"},\"type\":\"wikibase-entityid\"}":{"text\/html":{"nl":{"":"URL<\/a>"}},"text\/plain":{"nl":{"":"URL"}}},"{\"value\":\"https:\\\/\\\/commons.wikimedia.org\\\/wiki\\\/user:Baltakatei\",\"type\":\"string\"}":{"text\/html":{"nl":{"P2699":"https:\/\/commons.wikimedia.org\/wiki\/user:Baltakatei<\/a>"}},"text\/plain":{"nl":{"P2699":"https:\/\/commons.wikimedia.org\/wiki\/user:Baltakatei"}}}}" class="wbmi-entityview-statementsGroup wbmi-entityview-statementsGroup-P170 oo-ui-layout oo-ui-panelLayout oo-ui-panelLayout-framed">
Waarde zonder Wikidata-item
auteursrechtelijk beschermd<\/a>"}},"text\/plain":{"nl":{"P6216":"auteursrechtelijk beschermd"}}}}" class="wbmi-entityview-statementsGroup wbmi-entityview-statementsGroup-P6216 oo-ui-layout oo-ui-panelLayout oo-ui-panelLayout-framed">
CC-BY-SA 4.0<\/a>"}},"text\/plain":{"nl":{"P275":"CC-BY-SA 4.0"}}}}" class="wbmi-entityview-statementsGroup wbmi-entityview-statementsGroup-P275 oo-ui-layout oo-ui-panelLayout oo-ui-panelLayout-framed">
image/svg+xml
Bestandsgeschiedenis
Klik op een datum/tijd om het bestand te zien zoals het destijds was.
Datum/tijd | Miniatuur | Afmetingen | Gebruiker | Opmerking | |
---|---|---|---|---|---|
huidige versie | 26 aug 2019 07:57 | 600 × 600 (7 kB) | Baltakatei | User created page with UploadWizard |
Bestandsgebruik
Dit bestand wordt op de volgende pagina gebruikt:
Globaal bestandsgebruik
De volgende andere wiki's gebruiken dit bestand:
- Gebruikt op bg.wikipedia.org
- Gebruikt op de.wikiversity.org
- Gebruikt op eu.wikipedia.org
- Gebruikt op fr.wikipedia.org
- Gebruikt op it.wikipedia.org
- Gebruikt op lij.wikipedia.org
- Gebruikt op ru.wiktionary.org
- Gebruikt op sv.wiktionary.org
Metadata
Dit bestand bevat metadata met EXIF-informatie, die door een fotocamera, scanner of fotobewerkingsprogramma toegevoegd kan zijn.
Korte naam | Sphere (parameters r, d) |
---|---|
Omschrijving afbeelding | Drawing of a sphere with radius r and diameter d.
rights: GNU Free Documentation license, Creative Commons Attribution ShareAlike 4.0 license |
Breedte | 600 |
Hoogte | 600 |
Overgenomen van "https://nl.wikipedia.org/wiki/Bestand:Sphere_(parameters_r,_d).svg"