ファイル:Domain coloring x2-1 x-2-i x-2-i d x2+2+2i.xcf
ページのコンテンツが他言語でサポートされていません。
表示
この XCF ファイルのこの PNG プレビューのサイズ: 600 × 600 ピクセル. その他の解像度: 240 × 240 ピクセル | 480 × 480 ピクセル | 768 × 768 ピクセル | 1,024 × 1,024 ピクセル | 2,000 × 2,000 ピクセル。
元のファイル (2,000 × 2,000 ピクセル、ファイルサイズ: 15.09メガバイト、MIME タイプ: image/x-xcf)
ウィキメディア・コモンズのファイルページにある説明を、以下に表示します。
|
警告: XCF files must be compatible with GIMP 2.8 in order to be displayed. Files created with GIMP 2.10 format currently are not supported by the MediaWiki software (see T196054). Furthermore, indexed images are not supported and must be converted to RGB or grayscale. |
概要
解説Domain coloring x2-1 x-2-i x-2-i d x2+2+2i.xcf |
Français : Coloration de régions de la fonction complexe sur le domaine . La couleur (teinte) représente l'argument de la fonction. Les lignes noires et blanches (saturation, valeur) représentent les valeurs de la fonction à module constant. Ce fichier comporte 4 calques : les lignes blanches indiquant les lignes iso-argument tous les pi/6, la grille transformée du plan complexe, les variations d'intensité représentant le module, la couleur représentant l'argument
English: Domain coloring of the complex function on the domain . Phase is coded by the hue and module by the value. Image generated by python script conformal.py v0.4 (Michael J Gruber and JB Cuenot) with Gimp v2.8 |
日付 | |
原典 | 投稿者自身による著作物 |
作者 | Djiboun |
その他のバージョン |
|
XCF 開発 InfoField |
ライセンス
この作品の著作権者である私は、この作品を以下のライセンスで提供します。
このファイルはクリエイティブ・コモンズ 表示-継承 4.0 国際ライセンスのもとに利用を許諾されています。
- あなたは以下の条件に従う場合に限り、自由に
- 共有 – 本作品を複製、頒布、展示、実演できます。
- 再構成 – 二次的著作物を作成できます。
- あなたの従うべき条件は以下の通りです。
- 表示 – あなたは適切なクレジットを表示し、ライセンスへのリンクを提供し、変更があったらその旨を示さなければなりません。これらは合理的であればどのような方法で行っても構いませんが、許諾者があなたやあなたの利用行為を支持していると示唆するような方法は除きます。
- 継承 – もしあなたがこの作品をリミックスしたり、改変したり、加工した場合には、あなたはあなたの貢献部分を元の作品とこれと同一または互換性があるライセンスの下に頒布しなければなりません。
Python src code
#!/usr/bin/env python
# conformal.py
# Copyright (C) 2006-2011 Michael J. Gruber <conformal@drmicha.warpmail.net>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
confversion = "0.3+"
# allow access through module and without
import math, cmath
from math import *
from cmath import *
from array import array
from gimpfu import *
# try importing typical math modules
try:
from fpconst import *
import scipy.special
except ImportError:
pass
try:
import mpmath
except ImportError:
pass
def conformal_batch(width, height, code, constraint, xl, xr, yt, yb, grid, checkboard, gradient, filename):
conformal_core(width, height, code, constraint, xl, xr, yt, yb, grid, checkboard, gradient, filename)
def conformal(width, height, code, constraint, xl, xr, yt, yb, grid, checkboard, gradient):
conformal_core(width, height, code, constraint, xl, xr, yt, yb, grid, checkboard, gradient, None)
def conformal_core(width, height, code, constraint, xl, xr, yt, yb, grid, checkboard, gradient, filename):
image = gimp.Image(width, height, RGB)
drawables = [ gimp.Layer(image, "Argument", width, height, RGBA_IMAGE, 100, NORMAL_MODE),
gimp.Layer(image, "Log. modulus", width, height, RGBA_IMAGE, 35, VALUE_MODE),
gimp.Layer(image, "Grid", width, height, RGBA_IMAGE, 10, DARKEN_ONLY_MODE)]
image.disable_undo()
l = 1
for drawable in drawables:
image.add_layer(drawable, l)
l = -1
bpp = drawables[0].bpp
gimp.tile_cache_ntiles(2 * (width + 63) / 64)
dest_rgns = [ drawable.get_pixel_rgn(0, 0, width, height, True, False) for drawable in drawables ]
progress = 0
max_progress = width * height
if filename is None:
gimp.progress_init("Conformally Mapping...")
sx = (width-1.0)/(xr-xl)
sy = (height-1.0)/(yt-yb)
w = complex(0.0)
z = complex(0.0)
cx, cy = 0, 0
mp2 = 2.0*math.pi # no need to do this 500*500 times...
ml2 = 2.0*math.log(2) # no need to do this 500*500 times...
ml = math.log(2) # no need to do this 500*500 times...
compiled=compile(code, "compiled code", "exec", 0, 1)
compiledconstraint=compile(constraint, "compiled constraint code", "exec", 0, 1)
dests = [ array("B", "\x00" * width*height*bpp) for i in range(3) ]
QUANT = 4096
args = [ i/(QUANT-1.0) for i in range(QUANT) ]
arggradsamples = list(gimp.gradient_get_custom_samples(gradient, args)) + [[0,]*bpp]
modgradsamples = list(gimp.gradient_get_custom_samples("Default", args)) + [[0,]*bpp]
sqrsamples = [ [0,]*(bpp-1) + [255,], [255,]*(bpp-1) + [255,] , [0,]*bpp ]
for col in range(QUANT+1):
arggradsamples[col] = [ ((int)(255*arggradsamples[col][i]+0.5)) for i in range(bpp)]
modgradsamples[col] = [ ((int)(255*modgradsamples[col][i]+0.5)) for i in range(bpp)]
qinf = 1.0 + 1.0/(QUANT-1) # uggely uggely
args = [0.0,] * width
mods = [0.0,] * width
sqrs = [0,] * width
for row in range(0, height):
for col in range(0, width):
z = col/sx + xl + 1j*( yt - row/sy)
p = True
try:
exec(compiledconstraint)
except (OverflowError, ValueError):
p = False
if not p:
w = 0.0
else:
try:
exec(compiled)
except (OverflowError, ValueError):
p = False
if not p or isnan(w) or isinf(w):
w = 0.0
try:
logw = cmath.log(w)
arg = logw.imag
if isnan(arg) or isinf(arg):
arg = 0.0
p = False
elif arg < 0.0:
arg = arg + mp2
mod = ( logw.real/ml ) % 1.0
if isnan(mod) or isinf(mod):
mod = 0.0
p = False
except (OverflowError, ValueError):
arg = 0.0
mod = 0.0
p = False
arg = arg/mp2
try:
sqr = int(w.imag/grid % 2.0) + int(w.real/grid % 2.0)
if isnan(sqr) or isinf(sqr):
sqr = 0
p = False
except (OverflowError, ValueError):
sqr = 0
p = False
sqr = sqr % 2
if not p:
arg = qinf
mod = qinf
sqr = 2
args[col] = arg
mods[col] = mod
sqrs[col] = sqr
dests[0][row*width*bpp : (row+1)*width*bpp] = array("B", [ arggradsamples [int((QUANT-1)*args[col]+0.5)][i] for col in range(0, width) for i in range(bpp) ] )
dests[1][row*width*bpp : (row+1)*width*bpp] = array("B", [ modgradsamples[int((QUANT-1)*mods[col]+0.5)][i] for col in range(0, width) for i in range(bpp) ] )
dests[2][row*width*bpp : (row+1)*width*bpp]= array("B", [ sqrsamples[sqrs[col]][i] for col in range(0,width) for i in range(bpp) ] )
progress = progress + width
if filename is None:
gimp.progress_update(float(progress) / max_progress)
for i in range(3):
dest_rgns[i][0:width, 0:height] = dests[i].tostring()
for drawable in drawables:
drawable.flush()
drawable.update(0,0,width,height)
if not checkboard:
pdb.plug_in_edge(image,drawables[2], 10, 0, 0) # amount, WRAP, SOBEL
pdb.plug_in_vinvert(image,drawables[2])
if image.parasite_find("gimp-comment"):
image.parasite.detach("gimp-comment")
image.attach_new_parasite("gimp-comment", PARASITE_PERSISTENT, """# conformal %s
code = \"\"\"
%s
\"\"\"
constraint = \"\"\"
%s
\"\"\"
xl = %f
xr = %f
yt = %f
yb = %f
grid = %f
checkboard = %d
gradient = "%s"
width = %d
height = %d
""" % (confversion, code, constraint, xl, xr, yt, yb, grid, checkboard, gradient, width, height))
if filename is None:
image.enable_undo()
gimp.Display(image)
gimp.displays_flush
else:
if filename.find('.xcf') > 0:
pdb.gimp_xcf_save(1, image, drawables[0], filename, filename)
else:
flat_layer = pdb.gimp_image_flatten(image)
pdb.gimp_file_save(image, flat_layer, filename, filename)
register(
"conformal_batch",
"Colour representation of a conformal map",
"Colour representation of a conformal map",
"Michael J Gruber",
"Michael J Gruber",
"2011",
"",
"",
[
(PF_INT, "width", "width", 512),
(PF_INT, "height", "height", 512),
(PF_TEXT, "code", "code", "w=z"),
(PF_TEXT, "constraint", "constraint", "p=True"),
(PF_FLOAT, "xl", "x left", -1.0),
(PF_FLOAT, "xr", "x right", 1.0),
(PF_FLOAT, "yt", "y top", 1.0),
(PF_FLOAT, "yb", "y bottom", -1.0),
(PF_FLOAT, "grid", "grid spacing", 1.0),
(PF_BOOL, "checkboard", "checker board grid", 0),
(PF_GRADIENT, "gradient", "gradient", "Full saturation spectrum CCW"),
(PF_FILE, "file", "file", "out.xcf.bz2"),
],
[],
conformal_batch)
register(
"conformal",
"Colour representation of a conformal map",
"Colour representation of a conformal map",
"Michael J Gruber",
"Michael J Gruber",
"2012",
"<Toolbox>/File/Create/_Conformal ...",
"",
[
(PF_INT, "width", "width", 512),
(PF_INT, "height", "height", 512),
(PF_TEXT, "code", "code", "w=z"),
(PF_TEXT, "constraint", "constraint", "p=True"),
(PF_FLOAT, "xl", "x left", -1.0),
(PF_FLOAT, "xr", "x right", 1.0),
(PF_FLOAT, "yt", "y top", 1.0),
(PF_FLOAT, "yb", "y bottom", -1.0),
(PF_FLOAT, "grid", "grid spacing", 1.0),
(PF_BOOL, "checkboard", "checker board grid", 0),
(PF_GRADIENT, "gradient", "gradient", "Full saturation spectrum CCW"),
],
[],
conformal)
main()
このファイルに描写されている項目
題材
ウィキデータ項目がない値
16 8 2015
image/x-xcf
ファイルの履歴
過去の版のファイルを表示するには、その版の日時をクリックしてください。
日付と時刻 | サムネイル | 寸法 | 利用者 | コメント | |
---|---|---|---|---|---|
現在の版 | 2015年8月16日 (日) 16:26 | 2,000 × 2,000 (15.09メガバイト) | Djiboun | User created page with UploadWizard |
ファイルの使用状況
以下のページがこのファイルを使用しています:
グローバルなファイル使用状況
以下に挙げる他のウィキがこの画像を使っています:
- en-two.iwiki.icu での使用状況
- es.wikipedia.org での使用状況
- ru.wikipedia.org での使用状況
- www.wikidata.org での使用状況
- zh-two.iwiki.icu での使用状況