File:Frounhofer02.webm
来自testwiki
跳转到导航
跳转到搜索
Frounhofer02.webm (文件大小:913 KB,MIME类型:video/webm)
本文件来自维基共享资源并可能被其他项目使用。 其文件描述页上的描述显示在下面。
摘要
| 描述Frounhofer02.webm |
English: Far field diffraction patterns for a few aperture shapes. |
| 日期 | |
| 来源 | https://twitter.com/j_bertolotti/status/1486354083799834628 |
| 作者 | Jacopo Bertolotti |
| 授权 (二次使用本文件) |
https://twitter.com/j_bertolotti/status/1030470604418428929 |
Mathematica 12.0 code
dim = 512;
size = 30;
sinstep[t_] := Sin[\[Pi]/2 t]^2;
stopstep[t_] := t (2 - t);
split[t_] := Round[80*stopstep[t] ];
\[Theta][t_] := \[Pi]*sinstep[t];
framerate = 1/30;
plottolo[ar_] := GraphicsRow[{
ArrayPlot[ar[[1/4 dim ;; 3/4 dim, dim/4 ;; 3/4 dim]], ColorFunction -> "AvocadoColors", PlotLabel -> "Aperture", LabelStyle -> {White, Bold}, Frame -> False],
ArrayPlot[ RotateRight[ Abs[Fourier[PadRight[ar(*-Mean[Flatten@ar]*), {8 dim, 8 dim}]]]^2, {dim/2, dim/2}][[1 ;; dim, 1 ;; dim]](*[[2/8dim;;6/8dim,2/8dim;;6/8dim]]*), ColorFunction -> "AvocadoColors", PlotRange -> {0, 0.5}, ClippingStyle -> White, PlotLabel -> "Far field diffraction", LabelStyle -> {White, Bold}, Frame -> False]
}, Background -> Black]
frames1 = Table[
ar = Clip[ RotateRight[DiskMatrix[size, dim], {0, split[t]}] + RotateRight[DiskMatrix[size, dim], {0, -split[t]}], {0, 1}];
plottolo[ar]
, {t, 0, 1, framerate}];
frames2 = Table[
ar = Clip[ DiskMatrix[size, dim] + RotateRight[DiskMatrix[size, dim], {0, split[t]}] + RotateRight[DiskMatrix[size, dim], {0, -split[t]}], {0, 1}];
plottolo[ar]
, {t, 0, 1, framerate}];
frames3 = Table[
ar = Clip[ RotateRight[ DiskMatrix[size, dim], {Round[split[1]*Sin[\[Theta][t]]], Round[split[1]*Cos[\[Theta][t]]]}] + RotateRight[ DiskMatrix[size, dim], {-Round[split[1]*Sin[\[Theta][t]]], -Round[split[1]*Cos[\[Theta][t]]]}], {0, 1}];
plottolo[ar]
, {t, 0, 1, framerate}];
frames4 = Table[
ar = Clip[ RotateRight[DiskMatrix[size, dim], {split[t], split[1]}] + RotateRight[DiskMatrix[size, dim], {-split[t], split[1]}] + RotateRight[DiskMatrix[size, dim], {split[t], -split[1]}] + RotateRight[DiskMatrix[size, dim], {-split[t], -split[1]}], {0, 1}];
plottolo[ar]
, {t, 0, 1, framerate}];
frames5 = Table[
ar = Clip[DiskMatrix[size + 3*size*stopstep[t], dim], {0, 1}];
plottolo[ar]
, {t, 0, 1, framerate}];
frames5bis = Table[
ar = Clip[ DiskMatrix[size + 3*size, dim] - DiskMatrix[3*size*stopstep[t], dim], {0, 1}];
plottolo[ar]
, {t, 0, 1, framerate}];
frames5tris = Table[
ar = Clip[ DiskMatrix[size + 3*size*(1 - stopstep[t]), dim] - DiskMatrix[3*size*(1 - stopstep[t]), dim], {0, 1}];
plottolo[ar]
, {t, 0, 1, framerate}];
frames5quater = Table[
trianglesize = 100*stopstep[t] + 10;
ar = Abs[ Rasterize[Graphics[Triangle[{{-1/2, -Tan[\[Pi]/6]/2}, {1/2, -Tan[\[Pi]/6]/2}, {0, Cos[\[Pi]/6]/2}}]], "Data", RasterSize -> {2*trianglesize, 2*trianglesize}][[All, All, 1]] - 255]/255;
ar = PadRight[ ArrayPad[ar, Round[(dim - Dimensions[ar][[1]])/2]], {dim, dim}];
ar = Clip[DiskMatrix[size*(1 - stopstep[t]), dim] + ar, {0, 1}];
plottolo[ar]
, {t, 0, 1, framerate}];
frames5penta = Table[
trianglesize = 100*(1 - stopstep[t]) + 10;
ar = Abs[ Rasterize[ Graphics[ Triangle[{{-1/2, -Tan[\[Pi]/6]/2}, {1/2, -Tan[\[Pi]/6]/2}, {0, Cos[\[Pi]/6]/2}}]], "Data", RasterSize -> {2*trianglesize, 2*trianglesize}][[All, All, 1]] - 255]/255;
ar = PadRight[ ArrayPad[ar, Round[(dim - Dimensions[ar][[1]])/2]], {dim, dim}];
ar = Clip[BoxMatrix[size*3*(stopstep[t]), dim] + ar, {0, 1}];
plottolo[ar]
, {t, 0, 1, framerate}];
frames5esa = Table[
ar = Clip[ BoxMatrix[size/2 + size*2.5*(1 - stopstep[t]), dim], {0, 1}];
plottolo[ar]
, {t, 0, 1, framerate}];
frames6 = Table[
ar = Clip[ BoxMatrix[{size/2, size/2 + Round[(100 - size/2)*sinstep[t]]}, dim], {0, 1}];
plottolo[ar]
, {t, 0, 1, framerate}];
frames7 = Table[
ar = Clip[ BoxMatrix[{size/2, 100}, dim] + BoxMatrix[{size/2 + Round[(100 - size/2)*sinstep[t]], size/2}, dim], {0, 1}];
plottolo[ar]
, {t, 0, 1, framerate}];
frames8 = Table[
ar = Clip[ RotateRight[ BoxMatrix[{size/2, 100}, dim], {-Round[(100 - size/2)*sinstep[t] ], 0}] + BoxMatrix[{100, size/2}, dim], {0, 1}];
plottolo[ar]
, {t, 0, 1, framerate}];
frames9 = Table[
ar = Clip[ RotateRight[ BoxMatrix[{size/2, 100}, dim], {-(100 - size/2), 0}] + RotateRight[BoxMatrix[{100, size/2}, dim], {0, -Round[(100 - size/2)*sinstep[t] ]}], {0, 1}];
plottolo[ar]
, {t, 0, 1, framerate}];
frames10 = Table[
ar = Clip[ BoxMatrix[size/2*(1 - stopstep[t]), dim] + DiskMatrix[size*stopstep[t], dim], {0, 1}];
plottolo[ar]
, {t, 0, 1, framerate}];
ListAnimate[Join[
frames1, Reverse@frames1, frames2, Reverse@frames2, frames1, frames3, frames4, Reverse@frames4, Reverse@frames1, frames5, frames5bis, frames5tris, frames5quater, frames5penta, frames5esa, frames6, frames7, frames8, frames9, Reverse@frames9, Reverse@frames8, Reverse@frames7, Reverse@frames6, frames10
]]
许可协议
我,本作品著作权人,特此采用以下许可协议发表本作品:
| 本作品采用知识共享CC0 1.0 通用公有领域贡献许可协议授权。 | |
| 采用本宣告发表本作品的人,已在法律允许的范围内,通过在全世界放弃其对本作品拥有的著作权法规定的所有权利(包括所有相关权利),将本作品贡献至公有领域。您可以复制、修改、传播和表演本作品,将其用于商业目的,无需要求授权。
http://creativecommons.org/publicdomain/zero/1.0/deed.enCC0Creative Commons Zero, Public Domain Dedicationfalsefalse |
说明
添加一行文字以描述该文件所表现的内容
此文件中描述的项目
描繪內容
26 1 2022
934,415 字节
49.6 秒
418 像素
800 像素
video/webm
文件历史
点击某个日期/时间查看对应时刻的文件。
| 日期/时间 | 大小 | 用户 | 备注 | |
|---|---|---|---|---|
| 当前 | 2022年1月27日 (四) 10:48 | (913 KB) | wikimediacommons>Berto | Imported media from uploads:f201658a-7f54-11ec-be16-56dbdb266599 |
文件用途
以下页面使用本文件: