
分类: 技術博客
Nonstandard FDTD 笔记 (Updating)
Nonstandard FDTD 笔记 前言
该笔记分为初级、中级和高级三个部分。
初级篇主要介绍一维的标准和非标准 FDTD 理论。
中级篇会介绍二维 FDTD 理论。其中二维的 NS-FDTD 理论通过组合不同的有限差分模型来提高求解 Maxwell 方程的精度,是该方法的核心之一。
高级篇会介绍三维 FDTD 理论,将其应用到导电介质(例如金属、等离子体等)中,以研究电磁波在这些材料中的传播特性。
NS-FDTD 算法的优势
有限差分时域法(FDTD) 是计算电磁波传播最著名的数值算法之一。FDTD 方法可以模拟任意形状的结构、非线性介质,并且能够计算宽频带电磁波的传播。NS-FDTD 通过对单一频率波计算的优化减少了计算资源,使得在相同资源消耗的情况下可以计算更高精度的结构。利用 NS-FDTD 方法,研究者们已经成功准确模拟了一类特殊的电磁模式——耳语回廊模式(Whispering Gallery Modes, WGM)。
耳语回廊模式指的是电磁波或声波在一个圆形、球形或环形结构的内壁附近传播,并在其周围绕行多次而不易散射到外部的现象。
一个直观的例子是,在伦敦圣保罗大教堂的圆形穹顶下,如果一个人在一侧轻声耳语,另一个人在远离数十米的另一侧仍然可以听到。这是因为声音波沿着圆形墙壁传播,并保持在特定的路径上,从而减少了能量损失。
传统的 FDTD 方法在计算 WGM 的时候往往误差较大,但是NS-FDTD 方法精度更高,因此计算结果更接近于理论值,如上图所示。
(a) 图:Mie 理论的解析解,作为参考标准。
(b) 图:使用 传统 FDTD 方法在粗网格上进行的模拟,结果与理论值偏差较大。
(c) 图:使用 NS-FDTD 方法在相同粗网格上的模拟,结果与 Mie 理论 高度吻合,明显优于传统 FDTD 计算结果。
初级篇
首先介绍一维的标准/非标准 FDTD 理论。在计算机模拟中,需要额外考虑的是数值稳定和边界条件。
1. 有限差分模型(Finite Difference Model)
很多偏微分方程(PDEs)没有解析解,因此只能依赖数值模拟。有限差分(FDM)是最常见的数值计算方法,基本思想是用差分表达式来近似求解微分方程。
1.1 前向差分(Forward Finite Difference, FFD)
求解一个一维函数的导数,首先使用泰勒展开(Taylor Series Expansion),对函数 $f(x)$ 在 $x+\Delta x$ 处的展开:
$$
f(x + \Delta x) = f(x) + \Delta x \frac{df(x)}{dx} + \frac{\Delta x^2}{2!} \frac{d^2 f(x)}{dx^2} + \cdots ,
\tag{1}
$$
当 $\Delta x$ 足够小的时候,可以忽略高阶项(即 $ \frac{\Delta x^2}{2!} \frac{d^2 f(x)}{dx^2} + \cdots $ ),只保留第一阶导数项,最后整理可以得到:
$$
\frac{df(x)}{dx} \approx \frac{f(x+\Delta x) – f(x)}{\Delta x} .
\tag{2}
$$
公式(2)称为前向有限差分(Forward Finite Difference, FFD)近似。在泰勒展开中忽略了 $\frac{\Delta x^2}{2!} \frac{d^2 f(x)}{dx^2} + \cdots$ 这一项,因此截断误差为一阶误差,即 $O(\Delta x) $ 。
1.2 后向差分(Backward Finite Difference, BFD)
类似地,对函数 $f(x)$ 在 $x – \Delta x$ 处的展开:
$$
f(x – \Delta x) = f(x) – \Delta x \frac{df(x)}{dx} + \frac{\Delta x^2}{2!} \frac{d^2 f(x)}{dx^2} + \cdots .
\tag{3}
$$
易得:
$$
\frac{df(x)}{dx} \approx \frac{f(x) – f(x- \Delta x)}{\Delta x} .
\tag{4}
$$
误差同上。1.3 中心差分(Central Finite Difference, CFD)
前面两个算法都只用了当前点与一个相邻点计算,因此精度较低。中心差分则是使用前后两个相邻点,提高了精度。
对于函数 $f(x)$ ,将公式(1)与公式(3)相减,消去二阶导数项,得到:
$$
f(x + \Delta x) – f(x – \Delta x) = 2\Delta x \frac{df}{dx} + O(\Delta x^3) .
\tag{5}
$$
进一步整理得到:
$$
\frac{df}{dx} \approx \frac{f(x + \Delta x) – f(x – \Delta x)}{2\Delta x} .
\tag{6}
$$
有些教材会用 $ \Delta x/2 $ 替换 $ \Delta x $ 得到公式(7),两者其实是等价的。
$$
\frac{df}{dx} \approx \frac{f(x + \Delta x/2) – f(x – \Delta x/2)}{\Delta x} .
\tag{7}
$$
上面两个公式都被称为二阶中心有限差分(central finite difference)公式。另外,对于函数 $f(x)$ ,将公式(1)与公式(3)相加,消去一阶导数项后得到:
$$
f(x+ \Delta) + f(x- \Delta) = 2f(x) + \Delta x^2 \frac{d^2 f}{dx^2} + O(\Delta x^4).
\tag{8}
$$
整理后得到:
$$
\frac{d^2 f}{dx^2} \approx \frac{f(x + \Delta x) – 2f(x) + f(x – \Delta x)}{\Delta x^2}
\tag{9}
$$1.4 高阶有限差分(Higher-Order Finite Difference)
在有限差分法中,通过增加采样点数的方法提高计算精度进而得到更高阶的差分公式。
为了提高精度,这里在二阶中心有限差分法的基础上额外增加两个采样点 $x + 2\Delta x, x – 2\Delta x$ ,并在此处进行泰勒展开:
对于右侧点,泰勒展开为:
$$
f(x+2\Delta x) = f(x) + 2\Delta x\frac{df(x)}{dx} + 2\Delta x^2 \frac{d^2f(x)}{dx^2}+O(\Delta x^3) ,
\tag{10}
$$
类似地,
$$
f(x – 2\Delta x) = f(x) – 2\Delta x \frac{df(x)}{dx} + 2\Delta x^2 \frac{d^2 f(x)}{dx^2} + O(\Delta x^3) .
\tag{11}
$$
通过线性组合(比如将公式(11)取反再取半,上面两式相加),消除高阶误差项,得到:
$$
\frac{d^2 f(x)}{dx^2} \approx \frac{1}{\Delta x^2} \left[ \frac{4}{3} (f(x + \Delta x) + f(x – \Delta x)) – \frac{1}{12} (f(x + 2\Delta x) + f(x – 2\Delta x)) – \frac{5}{2} f(x) + \cdots \right] .
\tag{12}
$$
这个模型使用了四个点,并且通过加权平均减少了误差。但是会带来数值不稳定等潜在问题。当我们用高阶有限差分来取代微分方程时,会引入额外的数值解,即虚假解(spurious solutions)。这些解实际并不存在,是由于高阶差分方程的离散化特性导致的。
比如一阶微分方程如 $ \frac{df}{dx} = f(x) $ 通常有一个独立解,二阶微分方程如波动方程 $\frac{d^2f}{dx^2}=k^2f(x)$ 通常会有两个独立解(两个自由参数),四阶微分方程会有四个独立解等等。
在数值计算中,若使用四阶有限差分方法来近似一个原本为二阶的微分方程,那么差分方程的结束就会强行提高了,进而导致额外的虚假解。这些多出来的解并不对应原本的物理系统。
尤其是描述电磁波传播的二阶微分波动方程,应该使用二阶中心有限差分法,而不是更高阶的方法。
2. 一维波动方程
在计算机上模拟波的传播,需要用到数值方法近似计算。其中,有限差分时域法则发挥强大的作用。
一维波动方程的数学表达为:
$$
\frac{\partial^2 \psi}{\partial t^2} = v^2 \frac{\partial^2 \psi}{\partial x^2} ,
\tag{1}
$$
其中 $\psi(x,t)$ 表示波的振幅, $v$ 是波的传播速度(光在真空中是 $3 \times 10^8$ 米/秒)。这个方程的物理意义是:波的变化与时间、空间变化有关。
对于一个无限长的波动介质,解通常是一个形式非常简单的行波:
$$
\psi(x,t) = A \cos(kx – \omega t) + B \sin(kx – \omega t) .
\tag{2}
$$
这种情况适用于自由空间传播的电磁波。比如固定边界,行波可以用正弦函数展开:
$$
\psi(x,t) = \sum_{n} A_n \sin(k_n x) \cos(\omega_n t).
\tag{3}
$$
但是如果边界不规则,例如电磁波在地面上反射、水波冲击海岸线、声波在多个房间传播等情景,则无法简单地展开成正弦或者指数的形式,解析求解将极其复杂。比如声波接触不同介质的墙面会有不同的反射路径,导致声波的传播路径变得无法直接求解。解析解通常会假设波速 $v$ 是恒定的,也就是波在均匀介质中传播。但是实际上波会穿过非均匀介质,如声波在不同温度的房间具有不同的传播速度。在这些情况下,波动方程会变成变系数偏微分方程,如:
$$
\frac{\partial^2 \psi}{\partial t^2} = v(x)^2 \frac{\partial^2 \psi}{\partial x^2} ,
\tag{4}
$$
其中速度 $v$ 会随着位置 $x$ 变化,导致无法直接使用傅立叶变换求出解析值。又或者是波动方程右侧有激励源,即多个波形都有可能不同的源相互干涉,这种情况也很难求出解析解。
并且在真实世界中,能量的传播会有损耗,因此需要对波动方程引入损耗项,此时波动方程就会变成非线性方程或者高阶微分方程,使得无法直接求解。
因此我们引入有限差分时域法来解决这些问题。
2.1 标准 FDTD 算法
由于计算机不能直接计算连续的数学方程,因此需要离散化,即将空间与时间划分为网格,然后让计算机逐步计算每个格子的波动情况。
在连续的形式下,一维波动方程
$$
\frac{\partial^2 \psi}{\partial t^2} = v^2 \frac{\partial^2 \psi}{\partial x^2} ,
\tag{1*}
$$
的等价形式是
$$
\left( \frac{\partial^2}{\partial t^2} – v^2 \frac{\partial^2}{\partial x^2} \right) \psi(x,t) = 0.
\tag{5}
$$
因此,用间隔 $\Delta x$ 离散空间,每个点用索引 $i$ 来表示 $x = i\Delta x$ ;用间隔 $\Delta t$ 离散时间,每个时刻用缩影 $n$ 来表示 $t = n\Delta t$ ,其中 $n$ 均为整数。所以把波函数写为:
$$
\psi_i^n = \psi(i\Delta x, n\Delta t) .
\tag{6}
$$
然后用中心有限差分(central finite difference)方法计算波函数的微分。时间与空间方向的二阶偏导函数的中心有限差分近似分别是
$$
\frac{\partial^2 \psi}{\partial t^2} \approx \frac{\psi_i^{n+1} – 2\psi_i^n + \psi_i^{n-1}}{\Delta t^2} ,
\tag{7}
$$$$
\frac{\partial^2 \psi}{\partial x^2} \approx \frac{\psi_{i+1}^{n} – 2\psi_i^n + \psi_{i-1}^{n}}{\Delta x^2} .
\tag{8}
$$其中 $\psi_{i+1}^{n}$ 是右侧相邻网格点的波动值。
将公式(7)和公式(8)代入波动方程(公式(1)),得到公式(9)。
$$
\frac{\psi_i^{n+1} – 2\psi_i^n + \psi_i^{n-1}}{\Delta t^2} = v^2 \frac{\psi_{i+1}^{n} – 2\psi_i^n + \psi_{i-1}^{n}}{\Delta x^2} ,
\tag{9}
$$
整理后便得到标准的1D FDTD计算公式,1D standard finite difference time domain (FDTD) algorithm:
$$
\psi_i^{n+1} = 2\psi_i^n – \psi_i^{n-1} + \left( \frac{v^2 \Delta t^2}{\Delta x^2} \right) (\psi_{i+1}^{n} – 2\psi_i^n + \psi_{i-1}^{n}) .
\tag{10}
$$
这个公式的依赖时间、空间中前后两个步进点计算的。也就是说当前点的状态收到相邻点的影响。2.2 非标准 FDTD 算法
在标准 FDTD 方法中,使用中心差分近似离散波动方程。但是这个方法存在数值色散(numerical dispersion)问题。在较粗网格的时候会有很大的误差。
非标准 FDTD 算法则解决了上述问题。NS-FDTD 对单色波做特别处理,即使数值离散也能确保精度。
首先假设我们研究的是某种单色波
$$
\psi(x,t) \;=\; e^{\,i(kx – \omega t)},
\tag{11}
$$
其中 $k$ 为波数($k = 2\pi / \lambda$), $\omega$ 为角频率($\omega = 2\pi f$)。公式(11)连续情况下的空间微分是
$$
\frac{\partial \psi}{\partial x} \;=\; i\,k\, \psi(x,t).
\tag{12}
$$
举个例子,如果直接用标准差分来算 $\Delta_x \psi(x,t)$ ,会得到
$$
\Delta_x \psi(x,t)
= \psi(x+\Delta x,t) – \psi(x,t)
= e^{\,i(kx – \omega t)}\bigl(e^{\,i\,k\,\Delta x} – 1\bigr) ,
\tag{13}
$$
和真实的微分并不一致。只有当 $\Delta x$ 足够小时,才能近似。也就是说,如果网格较粗,那么就会产生所谓的误差。NS-FDTD 引入修正因子 $s(\Delta x)$ 让离散的算符尽可能减少误差
$$
\Delta_x \psi(x,t)
\approx
s(\Delta x)\,\frac{\partial \psi(x,t)}{\partial x}.
\tag{14}
$$
这个 $s(\Delta x)$ 由 $\Delta x$ 处的相位变化量决定。例如,我们的目标是
$$
\Delta_x \psi(x,t) = \psi(x+\Delta x,t) – \psi(x,t) .
\tag{15}
$$
那么误差因子的大小由公式(12)(13)(14)(15)共同推导出
$$
s(\Delta x)=\frac{\Delta_x \psi(x,t)}{\partial_x \psi(x,t)}
\frac{e^{\,i\,k\,\Delta x} – 1}{i\,k\,\Delta x}
\times \Delta x
\frac{e^{ik\Delta x} – 1}{ik}.
\tag{16}
$$
通过欧拉公式,将误差因子简化为
$$
s(\Delta x)
= \frac{2}{k}\,\sin!\Bigl(\frac{k\,\Delta x}{2}\Bigr)\,e^{\,i\,\frac{k\,\Delta x}{2}} .
\tag{17}
$$
注意到,当 $\Delta x \to 0$ 时,非标准差分就退化回“标准中心差分”的情形,与真正的导数近似几乎一致。其实,公式(17)包含了相位因子和幅度两个部分,前者对应指数部分。类似地,推导出时间方向的修正函数
$$
s(\Delta t)
= \frac{2}{\omega}\,\sin\Bigl(\frac{\omega\,\Delta t}{2}\Bigr)e^{-\,i\omega\,\Delta t/2}.
\tag{18}
$$
总结一下,我们从波动方程开始,将空间和时间的离散化之后用中心差分近似,然后引入修正函数(关于修正函数的指数项其实被隐含地处理了)
$$
\frac{\psi_i^{n+1} – 2\psi_i^n + \psi_i^{n-1}}{\left(\frac{2}{\omega} \sin(\omega \Delta t / 2)\right)^2} =
v^2 \frac{\psi_{i+1}^{n} – 2\psi_i^n + \psi_{i-1}^{n}}{\left(\frac{2}{k} \sin(k \Delta x / 2)\right)^2}.
\tag{19}
$$
整理后得到
$$
\psi_i^{n+1} = -\psi_i^{n-1} + \left(2 + u_{\text{NS}}^2 d_x^2 \right) \psi_i^n ,
\tag{20}
$$
其中
$$
u_{\text{NS}} = \frac{\sin(\omega \Delta t / 2)}{\sin(k \Delta x / 2)} .
\tag{21}
$$3. 一维 FDTD 稳定性
在做数值模拟时,我们希望时间步长 $\Delta t$ 尽量大,从而减少总的计算步数,但又不能超过某个极限,否则数值解会发散。这个极限究竟是怎么推导出来的?
Hair Rendering with Mitsuba 3 (English) Unfinished…
Mitsuba3 provides SOTA for pbr. This article focuses on using Mitsuba’s
principled_hair
BSDF and custom adjustments for high-fidelity hair rendering.Firstly, defining the scene and hair BSDF.
Pythonimport mitsuba as mi mi.set_variant('cuda_rgb') # Define the hair scene with a principled hair BSDF scene_dict = { "type": "scene", "integrator": {"type": "volpath"}, "sensor": { "type": "perspective", "film": {"type": "hdrfilm", "width": 1024, "height": 768} }, "hair_object": { "type": "ply", "filename": "../scenes/hair_model.ply", "bsdf": { "type": "principled_hair", "melanin_concentration": 0.6, "sigma_a": [0.1, 0.05, 0.02], "roughness": 0.3, "azimuthal_roughness": 0.2 } }, "light": { "type": "point", "intensity": {"type": "spectrum", "value": 150.0}, "position": [2.0, 2.0, 2.0] } } # Load and render the scene scene = mi.load_dict(scene_dict) image = mi.render(scene, spp=512) # Display the rendered image import matplotlib.pyplot as plt plt.axis('off') plt.imshow(image ** (1.0 / 2.2)) plt.show()
在WSL中使用本地Clash代理
首先查看Clash的端口, 我这里是
7890
.本机PowerShell中, 输入 ipconfig ,
找到最下面的 vEthernet (WSL (Hyper-V firewall)), 记住这里的IPv4地址. 我这里是 172.20.0.1 .
接下来在WSL中, ~/.bashrc 里面添加如下代码:
alias proxy='export all_proxy=http://172.20.0.1:7890' alias unproxy='unset all_proxy'
保存, 然后执行下面的代码激活:
source ~/.bashrc
日语初级下-语法笔记
动词的敬体及动词的ます形 <V ます形>
ウ段变为イ段假名,再接“ます”。
“る”去掉,再接“ます”。
去掉“ます”后所剩下的动词词干部分即为“动词的ます形”,也称为:动词第一连用形。
N(时间)に <时间点>
强调动作或事件发生的具体时间。
时间点可以是具体的时刻、日期、星期等。
表示大致的时间。
但是不能表示持续时间,不能说
『3時間ごろ』,这个时候要用『くらい/ぐらい』。大约···。···左右。
大约的数量、时间、程度或范围。
前面音为清音时用「くらい」,而前面音为浊音或拗音时用「ぐらい」
- リンゴを三つくらい買いました。买了大约三个苹果。
- 買う→買います→買いました。
- 発表は全部で2時間ぐらいでした。报告一共两个小时左右。
- 食費は毎月三万円ぐらいです。餐费每月 3 万日元左右。
- 教室には学生が五人ぐらいいます。
成为。变成。
描述从一种状态变化为另一种状态。
名词 + に + なる
い形容词去「い」+ く + なる
な形容词 + に + なる
N+になる表示身份、地位或角色的变化。
A+〜なる表示性质、状态的变化。
- 十一月の初めから寒くなります。从 11 月初开始变冷。
- 体調がだいぶよくなりました。身体状况好很多了。
- 日本語がかなり上手になりました。日语变得相当好了。
- 今週末のイベントは中止になりました。这周末的活动暂停了。
- でも、午後から眠くなるから、何もできなくなります。但是, 从下午开始就特别困了,什么都做不了。
- できる→できない,可以、能够。(17课)
V ましょう。/V ましょうか。 <劝诱(V ましょう-Ⅰ)>
我们···吧。
动词的「ます形」(去掉「ます」),加上「ましょう」。
用于提出建议、邀约或表达一种确定的意向,常用于提议一起做某事。
- そろそろ帰りましょう。差不多回去吧。
- 帰る→帰ります→帰りましょう。
- 昼休みは、あそこの店へ行きましょうか。午休我们去那家店吧。
- 今晩、家(いえ)でゲームしましょうか。
- する→します→しましょうか。
最好···。应该···。
···(做)比较好。
名词+のほうがいい。
- 車のほうがいい → 车更好(建议选择车)
い形容词:直接加「ほうがいい」。
- 安い(やすい)ほうがいい → (东西)便宜点比较好
な形容词:加「なほうがいい」。
- 便利なほうがいい → (生活)方便点比较好
动词的过去形+「ほうがいい」,表示最好做某事。
- 食べたほうがいい → 最好吃
动词的未然形+「ないほうがいい」,表示“最好不要做某事”。
- 食べないほうがいい → 最好不要吃
常用来劝告对方采取某种行动。提出建议或表达主观评价。
- 毎日の食材(しょくざい)は安全(あんぜん)なほうがいいです。每日的食材安全一点比较好。
- 新しいアパートは会社に近いほうがいいです。新的公寓离公司近一点比较好。
- もっと効率的(こうりつてき)なもののほうがいいです。更有效率的做法比较好。
小时(じかん):小时数时,「時」后面加「かん」表示时间段,例如「いちじかん」。
分钟(ふん/ぷん):表示分钟的读音有「ふん」和「ぷん」,具体根据数字变化。例如「いっぷん」(1分钟)、「にふん」(2分钟)。
小时 读音 分钟 读音 1小时 いちじかん 1分钟 いっぷん 2小时 にじかん 2分钟 にふん 3小时 さんじかん 3分钟 さんぷん 4小时 よじかん 4分钟 よんぷん 5小时 ごじかん 5分钟 ごふん 6小时 ろくじかん 6分钟 ろっぷん 7小时 しちじかん 7分钟 ななふん 8小时 はちじかん 8分钟 はっぷん 9小时 くじかん 9分钟 きゅうふん 10小时 じゅうじかん 10分钟 じゅっぷん 11小时 じゅういちじかん 11分钟 じゅういっぷん 12小时 じゅうにじかん 12分钟 じゅうにふん 20分钟 – 20分钟 にじゅっぷん 30分钟 – 30分钟 さんじゅっぷん 40分钟 – 40分钟 よんじゅっぷん 50分钟 – 50分钟 ごじゅっぷん 特别读音提示:
- 4小时:よじかん(不是「しじかん」)。
- 7小时:しちじかん或ななじかん(一般读作しちじかん)。
- 9小时:くじかん(不是「きゅうじかん」)。
- 1、6、8、10、20、30分钟等特殊读法:いっぷん、ろっぷん、はっぷん、じゅっぷん等。
日期(日にち):表示某一天的日期,用于标记具体的日子。例如「1月1日」读作「いちがつついたち」。
天数(ていすう):表示经过的天数,用于描述时间长度。例如,「1天」表示为「いちにち」。
日期(日にち) 读音 天数(ていすう) 读音 1日(1号) ついたち 1天 いちにち 2日(2号) ふつか 2天 ふつか 3日(3号) みっか 3天 みっか 4日(4号) よっか 4天 よっか 5日(5号) いつか 5天 いつか 6日(6号) むいか 6天 むいか 7日(7号) なのか 7天 なのか 8日(8号) ようか 8天 ようか 9日(9号) ここのか 9天 ここのか 10日(10号) とおか 10天 とおか 11日(11号) じゅういちにち 11天 じゅういちにち 12日(12号) じゅうににち 12天 じゅうににち 13日(13号) じゅうさんにち 13天 じゅうさんにち 14日(14号) じゅうよっか 14天 じゅうよっか 15日(15号) じゅうごにち 15天 じゅうごにち 16日(16号) じゅうろくにち 16天 じゅうろくにち 17日(17号) じゅうしちにち 17天 じゅうしちにち 18日(18号) じゅうはちにち 18天 じゅうはちにち 19日(19号) じゅうくにち 19天 じゅうくにち 20日(20号) はつか 20天 はつか 21日(21号) にじゅういちにち 21天 にじゅういちにち 22日(22号) にじゅうににち 22天 にじゅうににち 23日(23号) にじゅうさんにち 23天 にじゅうさんにち 24日(24号) にじゅうよっか 24天 にじゅうよっか 25日(25号) にじゅうごにち 25天 にじゅうごにち 26日(26号) にじゅうろくにち 26天 にじゅうろくにち 27日(27号) にじゅうしちにち 27天 にじゅうしちにち 28日(28号) にじゅうはちにち 28天 にじゅうはちにち 29日(29号) にじゅうくにち 29天 にじゅうくにち 30日(30号) さんじゅうにち 30天 さんじゅうにち 31日(31号) さんじゅういちにち 31天 さんじゅういちにち 特别读音:
日语的自他动词与助词“を” <“を”:提示宾语>
自动词表示状态或动作的自然发生,而他动词则需要宾语。
助词「を」在句子中用于提示他动词的宾语。
在···(地点)。
N(场所) + で + 动作,表示动作或事件发生的场所。
- 学校で勉強します。在学校学习。
- 伊藤先生のゼミでデータを集め(あつめ)ました。在伊藤老师的讨论课上收集了数据。
- 私はよく喫茶店で小説(しょうせつ)を読みます。我经常在咖啡馆看小说。
- 日本では、口頭試験(こうとうしけん)はどんな準備(じゅんび)をしますか。在日本,面试要做哪些准备?
- どんな,表示“什么样的”。
用···(工具/方式)。
N(工具/手段) + で + 动作,表示动作的工具或手段。
因为···。
N(原因/理由) + で + 状态/结果,表示事件或状态的原因、理由。
- 中村さんは毎日、試験勉強で大変なんですよ。中村每天因为准备考试很辛苦呢。
- 病気で学校を休みました。因生病,请假没有去学校。
- 地震で電車が止まりました(とまりました)。因为地震,电车停了。
- 地震で家が壊れました(こわれました)。因为地震,房子倒塌了。
给···。对···。
“に”接在名词后,表示传达、给予等动作的对象。
如果是···。至于···。要是···(N)···的话,···。
接在名词后,表示条件或假设,限定语境和表达更具体的意思。
- 東京なら、有名(ゆうめい)な観光地(かんこうち)がたくさんあります。如果是东京的话,有很多有名的旅游景点。
- 日本語の小説なら、家には何冊かありますよ。提到日语的小说,我家里有好几本呢。
- パソコンなら、こちらがいいですよ。电脑的话,这个很好。
- この問題なら、専門家でならわかるかもしれません。
- でなら,在···方面,在某个范围领域。
- かもしれません,表示推测,相当于“可能”,和『かもしれない』意思相近。
关于···。
关于……的(某物)。
N(名词) + について + 动词,表示谈论、描述、调查、询问的主题表示。
- 経済(けいざい)のグローバリゼーションについてです。是关于经济全球化的。
- 先週の旅行について作文を書きました。关于上周的旅行写了篇作文。
- 今日の授業について、何か質問はありますか。关于今天的课程内容,有什么问题吗?
N についての 后接名词,表示「关于……的(某物)」。具体跳转至17课。
去/来/回去···(某地)···做···(某事)···。
V(ます形)+に+行く/来る/帰る,「去/来/回」为了完成某个动作。
动词一般是带目的的动词,比如说:『買う』、『見る』、『勉強する』等等。
- 映画を見に行きます。去看电影。
- 日本へ勉強しに来(き)ました。来日本学习。
- 両親に会いに帰ります。回家见父母。
- 教室に忘れ物をとりに行きます。去教室取遗落的东西。
- サークルの仲間(なかま)たちとお花見に行きます。和社团的朋友去赏花。
- 散歩に出(で)かけましょうか。出去散散步吧。
一边···,一边···。
V(ます形)+ながら、〜,表示主语在同一时间内做两个动作。后面的才是主要动作。
- 考えながら、パワーポイントを作ります。一边想,一边制作 PPT。
- コーヒーを飲みながら、勉強します。一边喝咖啡,一边学习。
- 弟はいつも音楽を聞きながら、宿題(しゅくだい)をします。弟弟总是边听音乐边写作业。
- お茶をしながら、話しましょうか。(我们)一边喝东西一边聊吧。
足足···。竟然有···。
数量词+も,表示说话人主观认为数量很多,带有惊讶、强调的语气。
- 教室に学生が三人もいます。教室里有足足三个人。
- 議論(ぎろん)は三日(みっか)も続きました(つずきました)。讨论持续了三天。
- 日系企業(にっけいきぎょう)を五社も訪問(ほうもん)しました。访问了五家日企。
···吧?不是···吗?
名词/形容词+でしょ(う),表示和对方确认某件事情的真实性或表达带有怀疑、推测的语气。
为了···。以便···。
N(名词) + の + ため
V 辞书形 + ため
表示某人做某事的目的或原因。后面通常接「に」来表明目的的方向或行为。
目的一般是积极的。
- ここは小学生のための教室です。这里是为小学生设置的教室。
- 海外旅行のためのタオルを買いました。买了条海外旅行用的毛巾。
- 期末試験のための勉強計画を考えます。想一个为了准备期末考试的学习计划。
- 試験に合格するために勉強しています。为了通过考试而在学习。
- 彼女に会うために駅に行きます。为了见她,去车站。
- 留学するために日本語を勉強しています。为了留学而学习日语。
- 試験に合格するために勉強しています。为了通过考试而学习。
- 試験『に』表示目标或对象,在···方面。
是为了···。因为···。
动词普通形+のです / んです,用于解释说明,进一步补充。
一般有如下使用情况:
- 解释原因,回答、解释对方的疑问。
- 补充说明,让听者更好地理解当前情况。
- 强调,强调某个动作的正当性或不可避免性。
- 遅れたのです。因为迟到了。
- 来週、日本に行くんです。下周要去日本(所以……)。
- 止めたくないんです。我不想放弃。
要不要···?可以一起···吗?
V(ます形)+ませんか,用于劝诱或邀请对方一起做某事。
以礼貌的否定形式表达,显得比较委婉客气。
- 一緒にご飯を食べませんか。要不要一起吃饭?
- 来週のサークル活動に一緒に参加しませんか。要不要一起参加下周的社团活动?
- 明日、映画を見に行きませんか。明天一起去看电影吗?
- ここで写真を撮りませんか。要不要在这里拍照?
日语中的动词有敬体和简体两种形式。在动词句中,敬体主要用于正式或礼貌的场合,而简体则用于随意或日常对话。
动词敬体、简体四象限对照表
肯定 否定 现在/将来 敬体:〜ます 敬体:〜ません 简体:辞书形 简体:〜ない 过去 敬体:〜ました 敬体:〜ませんでした 简体:〜た形 简体:〜なかった 例子:
「読む」 肯定 否定 现在/将来 敬体:読みます 敬体:読みません 简体:読む 简体:読まない 过去 敬体:読みました 敬体:読みませんでした 简体:読んだ 简体:読まなかった 「来る」 肯定 否定 现在/将来 敬体:来ます(きます) 敬体:来ません(きません) 简体:来る(くる) 简体:来ない(こない) 过去 敬体:来ました(きました) 敬体:来ませんでした(きませんでした) 简体:来た(きた) 简体:来なかった(こなかった) 动词字典形(辞书形),也称为「Vる」形,相当于动词的原形。表示一般现在时和将来时。
用于陈述事实、描述习惯、表达将来的动作等:
用于简单、随意的陈述:
与其他语法组合:
不做某事。不会发生某事。不要···。
动词的未然形或否定形,用于表示否定。
「う段」→「あ段」+「ない」。
特别注意:「ある」变成「ない」,表示“没有”。
「る」去掉,加上「ない」。
“V ませんでした”的简体形式是“V ない”的过去时,即“V なかった”。
···的。···时候的。
与动词的辞书形(字典形)相同。用于修饰名词或在句子中充当定语。
- 授業(じゅぎょう)の予習や復習、課題をやる時間。上课前的预习、复习以及完成作业的时间。
- 明日行く場所はどこですか。明天要去的地方是哪?
- 雨なので、飛行機が飛ばない可能性があります。因为下雨,飞机存在不飞的可能性。
每···(时间)···几次。
N1(周期)+ に + N2(数量)+ V,表示某个动作或行为的频率。
关于…(名词 1)…的…(名词 2)…。
N について,表示「关于···」。具体跳转至15课。
N についての后接名词,表示「关于……的(某物)」。
- 日本の歴史についての本を読みました。读了一本关于日本历史的书。
- 健康についての意見を聞かせてください。请告诉我关于健康的看法。
- こちらは大学生のライフスタイルについてのアンケートです。这个是关于大学生生活方式的调查问卷。
- このウェブサイトには、来週の口頭試験についての情報はない。这个网站上没有关于下周口试的信息。
- 来週は期末試験なので、明日から経済学についての本を読む。因为下周是期末考试, (我)从明天开始读关于经济学的书。
几乎不···。差不多不···。(不太)···。
ほとんど + V ない,强调某个动作几乎不发生,或者数量极少,接近于没有。
- インターネットやSNSはほとんど利用しません。几乎不使用互联网或社交媒体。
- 漫画はときどき読みますが、アニメはほとんど見ません。我有时候会看漫画,但动画几乎不看。
- 『ときどき』表示“偶尔”或“时不时”,表明动作的频率不高。
- 『が』连接两个句子,表示“但是”。
あまり + V ない,表示“不是很……”,不太频繁或数量不多,语气上比「ほとんど」稍弱。
助词「の」通常用于表示所属关系或修饰关系,即“···的···”。
「の」还可以连接一些带有具体意义的助词(如「で」「と」「から」「へ」「まで」等),形成「N+助词+の+N」的结构。
「N で」表示动作或事件发生的场所、手段:
「N と」表示动作的共同参与者或关系:
「N から」表示动作的起点或来源:
「N へ」表示方向或目的地:
「N まで」表示动作的终点或时间的截止:
注意,没有“NにのN”。要用“へ”来替换。“NへのN”来表示方向或目标。
···呀···之类的。例如···和···等。
N1+や+N2+など,列举多个名词中的几个,但不包括所有的内容。
- 本や雑誌などを読みます。看书、杂志等。
- りんごやみかんなどの果物が好きです。喜欢苹果、橘子等水果。
- 数学や科学など勉強します。学习数学、科学等。
- 日本や韓国などの国を旅行したいです。想去日本、韩国等国家旅游。
在日语中,需要根据不同主语区分“给”。这一系列动词用于表达物品的授受关系,成为“授受动词”。
给予他人。N1把物品N给予N2。
N1(给予者/わたし)+ は + N2(接受者)+ に + N(物品)+ を + あげる,N1将物品或帮助给予N2。
通常是我(说话人)将某物给予他人。
但当N1(给予者)和N2(接受者)都不是“我”时,具体分为下面两种情况:
N1 和 N2 在说话人心理上的距离相同。
说话人心理上比较倾向于N1。
注意事项,使用「あげる」时需考虑说话人的心理倾向,心理距离上有显著差异,则可能无法使用「あげる」。
除“あげる”之外, “やる”也是“给”的意思,与“あげる”的用法基本相同。
给“我”或“我们”。N1把物品N给予“我”或“我们”。
N1(给予者/わたし)+ は + N2(接受者)+ に + N(物品)+ を + あげる,接受者是“我”或“我们”。接受者默认是“我”。
N1 和 N2 都不是“我”,但说话人心理上更倾向 N2 时:
从别人那里得到。N1从N2那里得到物品N。
N1(接受者/わたし)+ は + N2(给予者)+ に/から + N(物品)+ を + もらう,主语是接受者,用「から」强调来源。「もらう」表示得到。
- (私は)妹にプレゼントのアドバイスをもらいました。我从妹妹哪里得到了礼物的建议。
- 私たちは先生にアドバイスをもらいました。我们从老师那里得到了建议。
- (私は)由佳ちゃんから可愛いハンカチをもらいました。由佳给了我很可爱的手帕。
N1 和 N2 都不是“我”,但说话人心理上更倾向 N1。
「いただく」是「もらう」的敬语形式,并带有自谦的意思。
我想···。想要做某事。
V(ます形)+ たい,表示愿望或想做某事。
「たい」的活用(变化)遵循Ⅰ类形容词的规则。
- あの会社で働きたいです。我想在那个公司工作。
- 今日はあまり出かけたくないです。今天不太想出门。
- 遊びに行きたかったのですが、台風でやめました。很想去玩,但因为台风不去了。
- 本を読みたくなかった。曾经不想看书。
当动词是他动词且表达愿望时,宾语通常由助词「を」来提示。但是,用「たい」形的时候,助词可以用「が」。
一般来说,「V ます形+たいです」用于第一人称。用「V ます形+たがっています」来间接询问或描述他人(通常是第三人称)的意愿是比较礼貌的。
不知道···。
动词(简体)+ か分かりません。 い形容词(简体)+ か分かりません。 な形容词(简体)+ か分かりません。 名词(简体)+ か分かりません。
「〜か分かりません」用于表达不确定或不知道某事。
- 新幹線の切符をどこで買うかわかりません。我不知道在哪里买新干线的车票。
- 何時(いつ)雨が降る(ふる)かわかりません。不知道雨什么时候下。
- この料理が美味しいかわかりません。不知道这道菜好不好吃。
- 彼が元気かわかりません。不知道他身体是否健康。
- 中村さんの傘は何れ(どれ)かわかりません。我不知道哪个是中村的伞。
数量词、程度副词+ずつ,表示某个动作以一定分量、数量反复进行。
选择···。决定···。
N + にする,表示在众多选项中选择某一事物。常用于点餐、购物等场合。
い形容词将词尾的「い」变成「く」+动词。
な形容词在词干后加「に」+ 动词。
“形容词连用形”是指形容词后续用言(即动词)的形式。
也就是形容词修饰动词。
动词(简体)+ ので い形容词(简体)+ ので な形容词(简体) 去掉「だ」 + な + ので
名词(简体)去掉「だ」 + な + ので「ので」用于表示因果关系,即用于陈述原因。语气比「から」更为礼貌、温和。
- 頭が痛いので、早く帰りたいです。因为头疼,想早点回家。
- 海外にいるので、参加ができません。因为在国外,无法参加。
- 発音があまり綺麗じゃないので、たくさん練習したいです。因为发音不太好,想多练习一下。
- ここは、今人気のお店なので、予約が難しいです。这里是现在非常有人气的店,所以很难预约。
可以表示动作的连续、因果关系、请求、状态的进行等。
词尾为「う、つ、る」 → 变成「って」
词尾为「む、ぶ、ぬ」 → 变成「んで」
词尾为「く」 → 变成「いて」
词尾为「ぐ」 → 变成「いで」
词尾为「す」 → 变成「して」「る」去掉,加上「て」
「する」 → 变成「して」
「来る(くる)」 → 变成「来て(きて)」「V た」的变化规则与动词的て形相同。
词尾为「う、つ、る」 → 变成「った」
词尾为「む、ぶ、ぬ」 → 变成「んだ」
词尾为「く」 → 变成「いた」
词尾为「ぐ」 → 变成「いだ」
词尾为「す」 → 变成「した」「る」去掉,加上「た」。
- 漢字の読み方を間違えた(まちがえた)。搞错了汉字的读法。
- 鈴木さんはスマホをどこかに落とした(おとした)。铃木先生把手机落在不知道哪里了。
- あっちこっち探した(さがした)が、見つからなかった。四处都找了, 但没找到。
···然后···,最后···。
V1 て、V2 て、V3 ます。表示一连串的动作依次发生或连续进行,通常最后一个动作使用「ます」形,表示整个动作序列的完成。只有最后一处能体现时态。
- 3時に起きて、勉強しました。早上 3 点起床学习。
- 私は東京に行って、東京タワーとスカイツリーを見たいです。我想去东京,看东京塔和晴空塔。
- 朝起きて、顔(かお)を洗って(あらって)、朝ごはんを食べます。早上起床,洗脸,然后吃早饭。
- インターネットで資料を調べて、パワーポイントを作ります(つくります)。在网上找资料,制作 PPT。
- 電車に乗って(のって)、駅に着いて(ついて)、友達と会いました。坐电车,到达车站,然后见到朋友。
- 野菜を切って(きって)、鍋(なべ)に入れて(いれて)、煮ます(にます)。切菜,放入锅中,然后煮。
请···(做某事)。
V(て形)+ ください,表示请求对方做某事。日常会话、服务场所和与上司、长辈的交流中都可以使用。
- 今日はお疲れ様でした。ゆっくり休んでください。今天辛苦啦。请好好休息。
- 電話番号を教えて(おしえて)ください。请告诉我你的电话号码。
- 明日の10時半に来てください。请明天 10 点半到。
- これは中国のお土産(おみやげ)です。どうぞ、食べてください。这是中国的特产。请品尝。
(我)打算···。计划···。
肯定形式:V る + つもりだ
否定形式:V ない + つもりだ说话人打算做某事或不打算做某事。
- この夏休み(なつやすみ)はノーベル賞(しょう)の受賞作品(じゅしょうさくひん)を読むつもりです。我打算这个暑假读读诺贝尔获奖作品。
- 明日からお酒(おさけ)をやめるつもりです。我打算从明天开始戒酒。
- ジョージさん、レポートは何について書くつもりですか。乔治,你打算写关于什么的报告呢?
- 今日は出かけないつもりです。今天打算不出门。
- もう一度(いちど)試験を受けない(うけない)つもりだ。不打算再参加一次考试。
动词接续:V る + 予定だ,用于表示计划做某事。
名词接续:N + の + 予定だ,表示某个事件或事项的预定计划。比「〜つもりだ」更正式、客观,多用于已经确定的安排或计划。
- 来月、日本に行く予定です。下个月计划去日本。
- 明日、会議が始まる予定だ。明天计划召开会议。
- 李さんはジョージさんと一緒に村上夏樹の講演会に参加する予定です。小李和乔治计划一起去听村上夏树先生的演讲。
- 今週の土曜日(どようび)、歌舞伎(かぶき)を見に行く予定です。这周六, 我准备去看歌舞伎。
- 明日は朝6時の飛行機(ひこうき)に乗る予定です。我准备坐明早 6 点的飞机。
- 今回のプロジェクトは二週間の予定です。这次的项目预计两周完成。
- パーティーの予定です。计划举办派对。
「中(ちゅう)」多接在带有动作意义的汉语词后,表示动作正在进行中。比如,“会議中(かいぎちゅう)”、“勉強中(べんきょうちゅう)”、”仕事中(しごとちゅう)”、”営業中(えいぎょうちゅう)”、”移動中(いどうちゅう)”、”準備中(じゅんびちゅう)” 等。
动词的体(アスペクト)用于表示动作的状态。体的表达包括动词的持续、完成和否定等状态。
以「V ている」为基础,可以构成其他的动词体形式,如「V ていない」(否定形式)、「V ていた」(过去进行)和「V ていなかった」(过去否定)。
敬体:『Vています。』、『Vていません』、『Vていました』、『Vていませんでした』。
正在···。
用于描述当前正在发生的动作(动态动词)。
- 歩いて(あるいて)いる。正在吃。
- 今、何をしていますか。你现在在干什么?
- ピアノを弾いています。我正在弹钢琴。
- 実は、私もこの問題について、ちょうど考えているんですよ。一緒に考えましょう。其实,我也正在思考这个问题呢。我们一起想吧。
- 今、運転(うんてん)しながら、音楽を聴いています。我现在在一边开车一边听音乐。
表示状态的持续(静态动词),用于描述某种状态的持续,即动作已经完成,但状态保持不变。
表示反复或习惯性动作。
- 毎朝ジョギングをしている。每天早晨跑步。
- 本をよく読んでいる。经常看书。
- 弟は、大学のサークルでジャーナリストをやっています。我弟弟在大学的社团里做记者。
- 今、パリでフランス料理を習っています。现在在巴黎学习做法国菜。
- 彼と毎週会っています。每周都和他见面。
还没有···。尚未···。
まだ + V ていない(简体) まだ + V ていません(敬体)
表示某个动作尚未发生或尚未完成。
敬体形式多用于回答询问某个动作是否已经完成的句型「もう V ましたか。」(是否已经……了?)。
- A:講演会(こうえんかい)はもう始まりましたか。演讲会已经开始了吗?
B:まだはじまっていませんよ。急い(いそい)でください。还没开始呢。你快一点。- 始める→初めて,他动词,主动去“开始”某件事。
- A:部長に電話しましたか。你给部长打电话了吗?
B:いいえ、まだしていません。还没有。 - 論文(ろんぶん)のテーマをまだ決めて(きめて)いません。论文的题目还没有定。
- まだ宿題をしていない。还没做作业。
- 彼はまだ帰っていません。他还没回来。
在···之前。
Vる(动词基本形/辞书形)+ 前(に),在做某事之前。通常表示需要在主要动作发生之前,先完成另一动作。
- 食事をする前に、手を洗い(あらい)ましょう。吃饭前,先洗手。
- 寝る前に、本を読みます。在睡觉之前读书。
- 出かける前に、鍵(かぎ)を確認(かくにん)してください。在出门之前请确认钥匙。
- この質問に答える前に、ちゃんと考えてください。在回答这个问题之前,请先好好思考。
···之后。···完了之后。
V(动词て形)+ から,表示动作的先后顺序,即在完成某个动作之后,再进行下一个动作。
- 朝ごはんを食べてから、仕事に行きます。吃完早饭后去上班。
- 口(くち)コミ情報をチェックしてから、商品(しょうひん)を買います。先看看网上的口碑,再购买商品。
- 手を洗ってから、食べてください。请洗完手后再吃。
- 日本でお風呂(おふろ)に入るときは、体(からだ)を洗ってから、入ります。在日本泡澡时,先洗净身体再入浴。
- 上司に報告してから、レポートを書きます。向领导汇报之后,再写报告。
(第三者)想做某事。/(第三者)想要某物。
第三人称 + V(动词ます形)+ たがる,表示第三人称“想要做某事”。
「-たがる」是「-たい」的派生动词形式,专门用于第三人称。需要注意的是,在「V たがる」结构中,动词的宾语需要用「を」来提示,不能改为「が」。
并且,日本人比较常用的是『たがる』的て形,也就是『たがる→たがっています』。
第三人称 + N(名词)+ をほしがる,于表示第三人称“想要某物”。
看得见···。
N(名词)+ が見える,表示“能看到……”或“看得见……”。描述视觉上可以看见的情况,常用于表达自然景色、建筑物、特定场所等的可视性。与表示主动去看某物的「N を見る」不同,「N が見える」更多是描述自然映入眼帘的情况。
- ここから富士山が見える。从这里能看到富士山。
- 窓(まど)の外(そと)に海が見えます。窗外能看到大海。
- 駅からそのビルが見える。从车站能看到那栋大楼。
- あそこの赤い(あかい)看板(かんばん)が見えますか。能看到那里的红色招牌吗?
- 今夜(こんや)は星がよく見える。今晚的星星可以看得很清楚。
- 外はうるさくて、先生の話がよく聞こえません(きこえません)。外面很吵, 老师讲的话我不太听得清。
- 後ろ(うしろ)の方は聞こえますか
请勿···。
V(动词ない形)+ でください,是「V てください」的否定形式,通常用来委婉地请求他人不要做某事。
- ここではタバコを吸わない(すわない)でください。请勿在此吸烟。
- 危ないですから、椅子に登らない(のぼらない)でください。危险,请不要爬上椅子。
- 写真を撮らないでください。请不要拍照。
- 授業中(じゅぎょうちゅう)におしゃべりしないでください。上课时请不要讲话。
- 夜(よる)遅く(おそく)帰らないでください。请不要太晚回家。
- ここにゴミを捨てない(すつない)でください。请不要在这里丢垃圾。
(我)可以···吗?
V(动词て形)+ もいい,表示允许或许可。
- ここで写真を撮ってもいいです。在这里拍照也可以。
- 窓を開けて(あけて)もいいですか。(我)可以开窗吗?
- この本を借りて(かりて)もいいですか。(我)可以借这本书吗?
- 来週のパーチィーに彼女を連れて(つれて)きてもいいですよ。下周的party,可以带你女朋友来哦。
- A:こちらの資料(しりょう)を印刷(いんさつ)しても大丈夫ですか。我可以打印这个资料吗?
B:はい、大丈夫です。可以的,没问题。
可以不···。不必···。
V(动词ない形)+ なくてもいい,表示非必要,允许对方不做某事。
- 返さなく(かえさなく)てもいいです。可以不用还。
- 重い本は明日、持ってこなくてもいいですよ。明天太重的书不用带过来。
- 急ぎません(いそぎません)ので、今日は決めなく(きめなく)てもいいですよ。不着急,今天可以不用确定下来。
- 資料(しりょう)は今すぐ提出(ていしゅつ)しなくてもいいです。资料不必马上提交。
禁止···。不可以···。
V(动词て形)+ てはいけない,表示禁止或不允许做某事。适合用于传达纪律、规章制度或上下级关系中的命令。
- 授業中(じゅぎょうちゅう)にスマホを使って(つかって)はいけません。上课时禁止使用手机。
- 子供は夜(よる)遅く(おそく)まで、外で遊んではいけないよ。朋友不可以晚上在外面玩到很晚哦。
- 図書館では飲み物を机(つくえ)の上(うえ)に置いて(おいて)はいけません。在图书馆, 不可以将饮料放在桌子上。
- 食べ物を図書館に持ち込んで(もちこんで)はいけません。禁止将食物带入图书馆。
- 冷蔵庫(れいぞうこ)の中(なか)のケーキを食べてはいけないよ。不可以吃冰箱里的蛋糕。
必须···。不得不···。
V(动词ない形)+ なければならない,强调某个行为的必要性或义务性。
如果不 + 禁止 = 不得不、义务、必须
なくては+ならない
なくては+いけない
なければ+ならない
なければ+いけない
なくちゃ(口语)+ならない
なくちゃ(口语)+いけない
なきゃ(口语)+ならない
なきゃ(口语)+いけない- 毎日、日本語を勉強しなければならない。每天必须学习日语。
- お仕事を終わらせなくてはいけない。必须完成工作。
- 終わる→終わらせる,表示“让…结束”或“完成某事”。
- 明日までにこのレポートを提出しなくちゃいけない。必须在明天前提交这份报告。
- 子供たちを世話(せわ)しなければならない。必须照顾孩子们。
- 日本では後ろ(うしろ)の座席(ざせき)もシートベルトを締め(しめ)なければいけません。在日本,汽车后排座位也必须系紧安全带。
- 日本人の家(いえ)に入る時、靴を脱がなければいけません。
- せっかくの休みですが、仕事が終わらないので、残業(ざんぎょう)しなければならないんです。虽然是难得的假期, 但因为工作没有做完,所以不得不加班。
能够···。可以···。
Vる形 + ことができる,表示“能够”或“可以”。
ことができる→ことができない,表示“不能够”或“不可以”。- ドイツ語を話すことができますか。你会说德语吗?
- レポートを書いたので、明日みんなに報告(ほうこく)することができます。因为写了报告,明天就可以向大家汇报了。
- 私は泳ぐ(およぐ)ことができる。我会游泳。
- ここで写真を撮ることができる。这里可以拍照。
- おかげさまで、無事に退院することができました。托您的福,可以平安出院了。
只···。仅仅···。
N+だけ+で、に、は、を、が等助词。当 “だけ” 后接 “を” 或 “が” 时,这两个助词通常可以省略。强调只限于某个对象或范围。
だけで:表示仅凭某个条件就足够。“只用···。”
だけに:表示原因或背景,强调“正因为……所以……”
だけは:强调限定对象。
だけを:表示只限定于特定的对象,を 常省略。
- この本だけを読みました。只读了这本书。
- 这里的“を”可以省略
在……的时候
动词字典形(V る)+ 時
动词た形(V た)+ 時分别用于描述 动作尚未发生或正在进行中 和 动作已经完成 的时间点。
- 家を来る時、傘を持っていきます。出门时带上伞走。
- 家を来た時、雨が降っていました。出门时在下雨。
- 駅に着く時、電話をしてきださい。到站时请打电话。
- 駅に着いた時、電話をもらいました。到站时收到了电话。
- 勉強する時、静かな場所(ばしょ)を探します。学习时找一个安静的地方。
- 勉強した時、友達が手伝ってくれました。学习时朋友帮了我。
- 友達の家に遊びに行く時、お土産(おみやげ)を買いました。在要去朋友家里玩的时候,买了伴手礼。
- 友達の家に遊びに行った時、みんなで餃子を作りました。去朋友家玩的时候,大家一起包了饺子。
(曾经)···过···。
V(动词た形)+ ことがある,表示曾经有过某种经历,相当于“曾经……过……”
V(动词た形)+ ことがない,否定形式,表示没有过某种经历。用于描述个人的过去经历或体验,通常指曾经做过某事,或在某时间之前有过该经历。
- 日本に行ったことがあります。去过日本。
- アメリカに行ったことがありません。没去过美国。
- あの人は、確か前に会ったことがあります。那个人,我应该是以前见过。
- 日本で歌舞伎(かぶき)を見たことがありません。我在日本没看过歌舞伎。
- 体育(たいいく)の授業(じゅぎょう)で怪我(けが)をしたことがありますか。你在体育课上受过伤吗?
- 着物(きもの)を着た(きた)ことがありますか。你穿过和服吗?
主要用于描述很久以前或曾经拥有过的经历,近期发生的事情不用这个句型。
有时会···。偶尔会···。
有时候不···。偶尔不···。
V ることがある:表示“有时会……”或“偶尔会……”
V ないことがある:表示“有时不……”或“偶尔不……”- 朝ごはんを食べないことがあります。有时候不吃早饭。
- 週末に友達と出かけることがあります。周末有时候会和朋友出去。
- 仕事が忙しくて、帰りが遅くなることがあります。有时工作忙会回家晚。
- 天気が悪くて(わるくて)、試合(しあい)が中止(ちゅうし)になることがあります。
- 悪い → 悪くて,悪い 的 て形,表示原因或理由,相当于“因为……”。
- いつも寝る(ねる)前にシャワーを浴びます(あびます)が、朝起きてからシャワーを浴びることもあります。一直都是睡觉前洗澡,有时候会早上起床洗澡。
- 梅雨(つゆ)の季節(きせつ)では、一週間も晴れない(はれない)ことがある。在梅雨季, 有时会一周都没有晴天。
- 兄とは仲(なか)がいいのですが、喧嘩(けんか)することもありますよ。我和哥哥关系很好,但有时也会吵架。
- ここの地域(ちいき)は、半年以上も雨が降らないことがある。这个地区, 也有半年以上都不下雨的情况。
(做)···的方法。
V(动词ます形去掉「ます」)+ 方(かた),表示“……的方法”或“……的方式”。
- パソコンの使い方。电脑的使用方法。
- 学び(まなび)方についての本を探しています。我在找关于学习方法的书。
- このアプリの使い方がよくわかりません。我不太明白这个 app 的使用方法。
- 丁寧(ていねい)な話し方がとても大事です。礼貌的讲话方式是非常重要的。
有……的味道/声音/气味。
N(名词)+ がする,表达某种感官体验,是自然感受到的结果,而不是主动去感知。
音(おと)がする(某种环境、物体的声音)、声(こえ)がする(某种人的声音)、匂い(におい)がする(发出某种气味)、味(あじ)がする(具有某种气味)、臭い(くさい)がする(闻到异味)。。。
- 横のケーキ屋さんからとてもいい匂いがした。从旁边的蛋糕房散发出了非常好闻的味道。
- レモンは酸っぱい(すっぱい)味(あじ)がします。柠檬的味道很酸。
- スタバからいつもコーヒーのいい香り(かおり)がします。星巴克总是会散发出咖啡的香气。
N(场所)+ を + 自动词,表示从某地点出发或通过某路径移动的含义。
- 駅を来る。离开车站。
- 電車を降りる(おりる)。下电车。
- 降りる(おりる),自动词,表示“从高处往低处移动”或“从交通工具上下来”。
- 橋(はし)を渡る(わたる)。过桥。
- 公園(こうえん)を通る(とおる)。经过公园。
- 道を歩く(あるく)。沿着路走。
- 川(かわ)を泳ぐ(およぐ)。在河里游泳。
- あの人気のケーキ屋さんは駅を出てすぐです。那家受欢迎的蛋糕店出车站就到了。
- 『を出て』表示“从……出来”或“出……之后”。
- 『すぐ』表示“马上、立刻”。
- 交差点(こうさてん)を右(みぎ)に曲がって(まがって)ください。コンビニは左手(ひだりて)にあります。在十字路口处右转。便利店就在左手边。
- 香港を経由(けいゆ)してオーストリアに行く。经由香港去往澳大利亚。
···吧。应该···。可能···。
动词(V 简体)+ でしょう
Ⅰ 类形容词(简体)+ でしょう
Ⅱ 类形容词(词干)+ でしょう(去掉「だ」,直接接「でしょう」)
名词(N)+ でしょう(去掉「だ」,直接接「でしょう」)表示推测或可能性。语气上带有一定的不确定性,但基于一定的信息或判断。这个句型也可以用于询问,带有确认或探询的意味。简体形式「だろう」。
- 明日は雨が降るでしょう。明天可能会下雨吧。
- 明日は雨でしょう。明天会下雨吧。
- 今日は寒いでしょう。今天应该很冷吧。
- ご両親(ごりょうしん)もあなたの結婚(けっこん)を反対(はんたい)するでしょう。你父母也会反对你的婚事吧。
- 今頃(いまごろ)はもうホテルに着いているだろう。现在应该已经到酒店了吧。
在···期间,(一直)···。
名词 + の + 間:表示在某个时间段或期间内
V ている + 間:表示在动作或状态持续期间内发生的情况- 夏休みの間、ずっとアメリカを旅行していました。整个暑假一直在美国旅行。
- 母がご飯を作って(つくって)いる間、私ずっと横で手伝っていました。妈妈做饭的时候,我一直在旁边帮忙。
- バスを待っている間、ずっとスマホを見ていました。等公交车的时候,一直在看手机。
- 授業を受けて(うけて)いる間、携帯電話は使えません。
是不是···呢?我在想···。···吧?
动词、形容词:用简体句接「かな」
名词:直接接「かな」表达轻微感叹或不确定的自言自语,经常用于自言自语或带有猜测的场合,表示说话人对某事物的不确定或犹豫。
- かなりきつい仕事なので、あの人は一人でできるかな。这是非常辛苦的工作,他一个人能行吗。
- もうそろそろ向こう(むこう)に着くころかな。
- 向こう,名词,表示“对面”、“另一边”或“前方”,用于指代另一个方向或远处的某个地方。
就算···,也···。即使···,也···。
动词:V て形 + も
Ⅰ类形容词:形容词(い形容词去「い」+ く)+ ても
Ⅱ类形容词:形容词(な形容词词干)+ でも
名词:名词 + でも表示即使在某种情况下,结果也不改变,多用于表达某种坚定的结果或状态,即无论条件如何,结果依旧。
- 雨が降っても、試合は行われます。即使下雨,比赛也照常进行。
- 行う(おこなう)→行われる(おこなわれる),他动词被动,表示某项活动或事件“被举行”或“被进行”。
- 行く(いく)→行きます(いきます),自动词,描述“去”某个地方的动作。
(在)···之前。
名词 + までに:表示在该名词时间点之前。
动词字典形 + までに:表示在该动作或事件发生之前。表示截止时间或期限,强调时间的最后期限,要求动作在指定的时间点前完成。
- 夜(よる)の十時までに帰ります。会在晚上10点前回家。
- 会議は遅くても四時までに終わるだろう。会议再晚 4 点前也结束了吧。
- 遅い→遅くて,形容词的て形,表示“因为晚了”或“因为慢了”。
- 大学を卒業(そつぎょう)するまでに、就職先(しゅうしょくさき)を決めたい。想在大学毕业之前,把工作单位定下来。
- 三十五歳までに結婚したいと思う。我想在 35 岁之前结婚。
- 飛行機が出発するまでに荷物を預けます(あずけます)。会在飞机起飞前托运行李。
- お客様が来るまでに部屋を掃除(そうじ)しておきます。会在客人到来之前打扫房间。
『引用的句子』+ と + 言う/聞く/答える,用于引用对方的原话内容,带有较强的客观描述感。
简体句 + と + 言う/聞く/答える,将原话转换为简体句,语气更自然,适合在日常会话中使用。用于引用别人的话或表达间接引述,表示听到或得到的信息。
- 彼は『明日来ます』と言いました。他说“明天来”。
- 彼は明日来ると言いました。他说他明天来。
- 李さんは鈴木さんに『環境(かんきょう)と経済の関連性についてはいかがですか』と聞きました。小李问铃木:“写关于环境与经济的相关性如何?”
- 李さんは鈴木さんに環境と経済の関連性についてはいかがかと聞きました。小李问铃木写关于环境与经济的相关性怎么样。
- 鈴木さんは『それはいいですね』と答えました。铃木回答:“这个很好啊”。
- 鈴木さんはそれはいいねと答えました。铃木回答说很好啊。
- 李さんは『新しい会社の人はみんな親切です』と言いました。小李说:“新公司的同事都很热心”。
- 李さんは新しい会社の人はみんな親切だと言いました。小李说新公司的同事都很热心。
- これは昔(むかし)から体(からだ)に良い(よい)と言われています。这个从以前起就被认为对身体有好处
- 日本では、食事をする前に『いただきます』と言います。在日本,吃饭前说:“我开动了”。
- 佐藤さんは明日野球(やきゅう)の試合(しあい)があると言いました。佐藤说他明天有棒球比赛。
(我)认为···。(我)觉得···。(我)想···。
简体句 + と思う,用于表达自己的想法、意见或推测。助词「と」用于提示想法的内容,表示「思う」的对象。主要用于第一人称,即表达自己主观的判断或看法,一般不使用直接引语的形式,因此「と」前的内容要用简体形式来表达。无论句子的语气如何,「と」前的内容都需用简体。
- それはいいと思います。我觉得那个挺好的。
- 彼は明日来ると思います。我认为他明天会来。
- 後天(こうてん)は雨が降らないと思う。我认为后天不会下雨。
- 来年、日本に行こうと思っています。我正打算明年去日本。
- もっと勉強しようと思う。我打算更加努力学习。
- 勉強する → 勉強しよう,意志形,表示说话人主观上的意图或决心,相当于“要去……”、“打算……”。
- 彼の発言(はつげん)はちょっと失礼だったと思います。我觉得他的发言有点失礼。
- 失礼だった,过去某件事情“失礼”。
- そのやり方は効率的ではないと思います。我认为那种做法不够高效。
- では,表示“在效率方面”或“就效率而言”。
也许···。可能···。
动词简体形 + かもしれない
い形容词简体形 + かもしれない
な形容词词干だ+ かもしれない
名词 N(简体形去「だ」)+ かもしれない表示说话人对某个情况并不完全确定,但认为有可能发生的语气。语气上比「〜でしょう」更加不确定,带有一种猜测的意味。
- 明日は雨が降るかもしれない。明天可能会下雨。
- この料理は辛い(からい)かもしれない。这道菜可能很辣。
- 寒い日がずっと続いていて、ちょっと風邪かもしれないです。严寒天气一直持续,我也许有点感冒。
- 九時半の新幹線に間に合うかもしれないから、急ぎましょう。说不定能赶上 9 点半的新干线,我们快点吧。
- 有名な会社に勤めているけど、給料(きゅうりょう)は他(ほか)の会社より少ない(すくない)かもしれない。虽然在很有名的公司工作,但也许工资要比其他公司少。
- けど,表示转折,相当于“但是”或“不过”。
···之后,···。
动词过去形(V た)+ 後(で):表示在某个动作完成之后。
名词 + の + 後(で):表示在某个时间点或事件之后。- 少し練習した後で、みんなの前で発表(はっぴょう)します。经过稍加练习之后,再在大家面前展示。
- アニメを見た後で、お風呂(おふろ)に入ります。看完动画片之后洗澡。
- メールを確認した後で、すぐに返信(へんしん)しました。确认邮件后立刻回复了。
只。仅仅。
N + しか + V(否定形),表示“只有……”、“仅仅……”,强调数量少或范围有限。虽然谓语动词使用了否定形式,但整个句子的意思是肯定的,强调数量少或范围有限。
- 財布(さいふ)には千円しかありません。钱包里只有一千日元。
- 今日は一時間しか勉強しなかった。今天只学习了一个小时。
- バスは朝の 8 時しか来ない。公交车只在早上 8 点来。
- 飲み物は水しか残っていない。饮料只剩下水了。
- 冷蔵庫(れいぞうこ)には卵(たまご)しか入っていない。冰箱里只有鸡蛋。
不止···N1···,···N2(也)···。不只···,而且···。
N1 + だけでなく + N2 + も,表示不仅限于 N1,还有 N2,可以用于描述物品、人物、特征等多个方面的列举,也适合用在需要强调范围扩大的句子中。
- 彼は日本語だけでなく、中国語も話せます。他不仅会说日语,还会说中文。
- 漢字は中国人だけでなく、日本人も使います。汉字不只是中国人用,日本人也用。
- ジブリのアニメーション映画はストーリーだけでなく、音楽も最高です。吉卜力的动画电影不只是故事情节,它的音乐也很绝。
- このカフェはコーヒーだけでなく、紅茶(こうちゃ)も美味しいです。这家咖啡馆不仅咖啡好喝,红茶也很好喝。
- この本は内容(ないよう)だけでなく、表紙(ひょうし)も綺麗です。这本书不仅内容好,封面也很漂亮。
- 週末だけでなく、平日(へいじつ)も営業しています。不仅周末营业,平日也营业。
- 旅行は春だけでなく、秋も楽しめます。旅行不仅春天适合,秋天也可以享受。
- 彼はデザインだけでなく、プログラミングもできます。他不仅会设计,还会编程。
- この会社は国内(こくない)だけでなく、海外にも支社があります。这家公司不仅在国内有分公司,在海外也有分公司。
『あげる/くれる/もらう <授受动词>』 是物品的接受,而本节语法强调动作的授受。
『V てあげる』
我为别人做某事。
N1(我/给予者)は N2(接受者)に V てあげる,对对方的帮助,带有施恩之感,因此在正式场合或对不亲近的人应避免使用。
- 観光客(かんこうきゃく)に道を教えてあげます。给游客指路。
- 彼は妹に宿題を手伝ってあげた。他帮助了妹妹做作业。
- 由佳さんはクラスメートに美味しい中華料理を作ってあげました。由佳给班里的同学们做了好吃的中国菜。
- 荷物を持ってあげましょうか。我帮您拿行李吧?
『V てくれる』
他人为我做某事。
N1(给予者)は N2(我/接受者)に V てくれる,表达别人为自己(或自己一方的人)做某事,接受者(通常是“我”)使用「に」提示,但「私に」可以省略。
- 日本人の友達が作文を直してくれました。日本朋友帮我改了作文。
- 母は一人で私を育ててくれました。母亲一个人把我养大。
- 両親が引っ越し(ひっこし)の手伝いをしてくれて、とても助かりました。父母帮我搬家,真的帮了大忙。
- 彼女が仕事の資料を集めてくれたおかげで、準備が楽になりました。多亏她帮我收集工作资料,准备轻松多了。
- おかげで,表示原因或者感谢,相当于“多亏了……”、“因为……的帮助”。
『V てもらう』
他人为我做某事。
N1(给予者)は N2(我/接受者)に V てくれる,用于表达别人为自己(或自己一方的人)做某事,「私に」也可以省略。
貰う
→ 貰います(ます形)
→ もらって(て形)
→ もらった(た形)- もう電車もバスもないので、友達に車で送ってもらいました。因为已经没有电车和公交车了,所以让朋友开车送我了。
- 先生に作文を添削(てんさく)してもらいました。我请老师帮我修改了作文。
- 私は上司(じょうし)に出張(しゅっちょう)の準備を手伝ってもらいました。我请上司帮我准备出差。
- 先生に論文の間違い(まちがい)を直してもらった。我请老师帮我修改了论文中的错误。
能够做某事/有能力做某事
ウ → エ + る
返す(かえす)→ 返せる(かえせる)
書く(かく)→ 書ける(かける)
泳ぐ(およぐ)→ 泳げる(およげる)
待つ(まつ)→ 待てる(まてる)
読む(よむ)→ 読める(よめる)
遊ぶ(あそぶ)→ 遊べる(あそべる)
送る(おくる)→ 送れる(おくれる)
る → られる
辞める(やめる)→ 辞められる(やめられる)
寝る(寝る)→ 寝られる(ねられる)
する → できる
勉強する → 勉強できる
来る(くる)→ 来られる(こられる)
网络常见。一段、不规则动词的 ら 直接省略。
形式名词「ところ」用于表示动作所处的阶段。
V るところだ。
表示即将开始某个动作,相当于“正要……”、“马上要……”。
- 昼ごはんを買いに行くところです。正要去买午饭。
- A:もうみなさんに資料を配りましたか。已经把资料发给大家了吗?
B:いえ、これから配るところです。没有,正要发。 - 今から出かけるところだ。现在正要出门。
V ているところだ。
表示正在进行某个动作,相当于“正在……”。
- 今、レポートを書いているところです。现在正在写报告。
- 彼女はまだ寝ているところです。她还在睡觉。
- ちょうど今、テーマを考えているところです。何かいいアイディアはありますか。现在正好在想题目。有什么好点子吗?
V たところだ。
表示刚刚完成某个动作,相当于“刚……完”。
- 今、会場(かいじょう)に着いたところです。现在刚到会场。
- たった今連絡(れんらく)が入ったところです。刚刚收到了(对方的)联系。
- 入る → 入った,进入、到达,这里表示“收到了消息”。
- メールを送ったところだ。刚刚发了邮件。
刚刚···。刚···不久。
动词た形 + ばかりだ,强调事件刚完成,时间过去得很短,带有新鲜感或“刚结束”的意味。
时间主观性较强,取决于说话者的感受。
- 今、仕事が終わったばかりです。现在刚刚结束工作。
- 食べたばかりなので、お腹(おなか)がいっぱいです。因为刚吃完饭,所以很饱。
- 日本語を習い(ならい)始めたばかりです。刚开始学习日语。
- 新しい仕事に着いたばかりなので、まだ慣れていません。因为刚刚开始新工作,所以还不习惯。
- 届いたばかりの荷物を開けてみました。打开了刚收到的包裹。
···之类的怎么样?
名词 + でも,用于提出一个建议或例子,供对方考虑。
助词“で”接在数量词或关于数量词的疑问词后。
(N に)V てほしい / V ないでほしい
希望你···。希望你不要···。
V て形 + ほしい:希望对方做某事
V ない形 + でほしい:希望对方不要做某事
(N に)V てほしい / V ないでほしい:指明希望的对象- 友達に手伝って欲しいです。希望朋友帮我。
- 先生にアドバイスをして欲しいです。希望老师给点建议。
- する指的是“做”一点意见,提出意见。
- やることがいっぱいあるので、誰かに手伝って欲しいんです。要做的事情有很多,希望有人能帮帮我。
- 子供たちに約束を守ってほしい。(我)希望孩子们可以遵守约定。
- 大事なイベントなので、遅刻しないでほしい。因为是很重要的活动,希望(你)不要迟到。
- 勝手にスマホを見ないで欲しい。(我)不希望你随便看(我的)手机。
当说话人希望某种状态或现象产生时,用“が”提示。谓语动词一般是自动词。
好像···。似乎···。像···一样。
V 简体 + みたいだ。
AⅠ 简体 + みたいだ。
AⅠⅠ 简体(〜だ)+ みたいだ。
N 简体(〜だ)+ みたいだ。表达说话人对当前情况的主观推测,不确定是否属实,但从外表或状况判断出一个可能性。
他说/她说···。
V(简体形)+ と言っていた
AⅠ(い形容词)+ と言っていた
AⅡ(な形容词词干 +だ)+ と言っていた
N(名词 +だ)+ と言っていた转述第三人称的发言或意见,它用「言っていた」的形式,带有回顾的意味,即转述发生在过去的信息。
不是···,而是···。
名词 + ではなく(て)。
表示否定前面的内容,并且在后面加上正确的内容。ではなくて、じゃなくて多用于口语。
- 今日はコーヒーではなく、お茶を飲みたいです。今天不是想喝咖啡,而是想喝茶。
- この前いっしょに食べた料理は和食(わしょく)じゃなくて、韓国(かんこく)料理だったんだよ。之前一起吃的不是日本菜,是韩国菜哟。
- この前、山田さんといっしょに来た(きた)人は、山田さんの恋人(こいびと)ではなくて、妹(いもうと)さんでした。之前和山田一起来的不是他女朋友,是他妹妹。
- 弁当は日本特有の文化ではなく、世界中どこにでもある(1)。便当不是日本独有的文化,全世界哪里都有。
简体书面语版本的 “です”“だ” 。
肯定 否定 现在、将来 N である。 N ではない。 过去 N であった。 N ではなかった。 是因为···
句子 + からだ。
否定形式是“〜からではない”,“并不是因为···”。
- 友達が来るからです。是因为朋友要来。
- 怪我(けが)をして休学(きゅうがく)しました。事故(じこ)に遭った(あった)からです。因受伤而休学了。是因为遇到了事故。
- 彼(かれ)は試験に落ちました(おちました)。真面目に勉強しなかったからじゃなくて、病気(びょうき)で休学した(きゅうがくした)からです。他考试落榜了。并不是因为没有认真学习,而是因为生病而休学了。
- A:この新商品(しんしょうひん)、全然売れません(うれません)ね。这个新产品,完全卖不出去啊。
- B:まだ誰も知らない(しらない)からだと思いますよ。我觉得是因为大家还不知道(这个产品)。
对···来说。对···而言。因为···的缘故。
N+ にとって。
表达对某个事物、情况或人从特定主体(N)的角度去看待时的评价或立场。
- 現代人(げんだいじん)にとって、スマホは生活の一部(いちぶ)です。对于现代人来说,智能手机是生活的一部分。
- 環境(かんきょう)にとって、プラスチックの使用(しよう)は問題です。对环境来说,塑料的使用是个问题。
- シンプルなランチボックス文化(ぶんか)で育った(そだった)外国人にとって、日本の弁当は、いろいろと興味(きょうみ)深い(ぶかい)ポイントがある。对于成长在简单的盒饭文化的外国人来说,日本的便当有很多令人饶有兴味的点。
叫做……的 N。所谓的 N。
〜という + 名词(N)。
当需要谈及自己或对方所不了解的人或事物时,可以使用 “という” 进行提示。
- 『折り紙(おりがみ)』という日本の伝統的(でんとうてき)な遊び。叫做“折纸”的日本传统游戏。
- 『エコ』という考え方(かんがえかた)。所谓的“环保”这种观念。
- 日本には、『キャラ弁』という弁当もある。在日本还有一种叫做“キャラ弁”的便当。
- 葛飾北斎(かつしかほくさい)という人を聞いた(きいた)ことがありますか?听说过叫做葛饰北斋的人吗?
- これはなんという花ですか。这花叫什么花?
句子 + という + 名词(N)。
也可以接在句子的后面,用于解释某个名词的具体内容。
无论···都···。
疑问词 + でも。
任何情况、任何对象都适用。
- どんな時でも暖かい(あたたかい)お弁当が食べたいです。无论什么时候都想吃到热乎的便当。
- どんな仕事でも真面目にやらなければなりません。无论什么工作都要认真地做。
- 地震(じしん)はいつでも、どこでも起こる(おこる)可能性(かのうせい)があります。地震随时随地都可能发生。
- 中華料理ならなんでも好きです。中国菜我都喜欢。
似乎···。大概···吧。好像···。
动词普通型 + ようだ。
い形容词普通形 + ようだ。
な形容词词干 + な + ようだ。
名词 + の + ようだ。
表示说话人根据某种证据(视觉、听觉、感觉等)所做的推测或判断。
- 中国人は日本の冷たい弁当があまり好きではないようだ。好像中国人不太喜欢日本的冷便当。
- もうそろそろ時間のようなので、今日はこれで終わります。好像时间差不多了,今天就到这里吧。
- 田中さんは最近(さいきん)忙しい(いそがしい)ようですよ。食事会(しょくじかい)に誘って(さそって)も来てくれません。田中好像最近很忙。约他吃饭他也不来。
- 先生は怒っている(おこっている)ようでした。老师好像生气了。
像···一样。
名词(N)+のようだ。
一般和副词“まるで”“いかにも”等搭配使用,“(简直)像···一样”。
- 日本のお弁当は美しくて(うつくしくて)、まるで芸術品(げいじゅつひん)のようです。日本的便当非常精美,宛如艺术品一样。
- まるで,副词,“简直就像”。
- 中村さんは優しくて、李さんにとってお姉さんのようです。中村很温柔,对小李来说就像姐姐一样。
- この一週間は毎日残業(ざんぎょう)だったので、洗濯物(せんたくもの)がもう山のようです。这周每天都加班,要洗的衣物已经(堆得)像山一样了。
- もう,“已经”。
SOV→(动词简体 + S)はOをV
(買ったN)はパソコンです。
(飲むN)が好きです。
N→こと,此处填入一个形式体言,用于抽象客观的陈述,习惯规则行为。“こと” 除了作为一般名词用来表示“事情”外,还可以用于做 “形式体言”,将用言(动词或形容词)的连体形名词化,使其能够充当句子的主语、宾语等成分。除了“こと”,形式体言还有“の”“もの”等。
- 私の夢は、医者(いしゃ)になることです。我的梦想是做一名医生。
- 弁当全体(ぜんたい)のバランスを見ながら、盛り付けや味付けを考えて作ることは、まさに日本特有の文化の一つである。在顾及便当整体平衡的同时,思考摆盘和调味来制作,这正是日本特有的文化之一。
太···。过于···。
动词连用形+すぎる:表示动作过度
い形容词去『い』+すぎる:表示性质过度
な形容词词干+すぎる:表示性质过度
注意,形容词加上すぎる之后,就变成一个动词了。
常用于表达不好的结果,暗示“某事过头了”,带有负面的评价,有时也会有夸张的效果。
- 仕事が多すぎて、来週までには終わらないかもしれない。工作太多了,下周之前可能完不了。
- 多い→多すぎる→多すぎて,表示“过多”,带有因果关系。
- までに,表示动作或状态的期限,相当于“到……之前”。
- この辺り(このあたり)は賑やか(にぎやか)すぎて、勉強にはよくない。这附近太热闹了,不适合学习。
- 頭(あたま)が痛い(いたい)のは、昨夜(ゆうべ)お酒(おさけ)を飲みすぎたからだと思う。
- リンゴを三つくらい買いました。买了大约三个苹果。
波动光学渲染:全波参考模拟-学习笔记-4
今天继续来粗略看看Sig23这篇计算表面反射的全波参考模拟器paper。
关键词:图形学入门、波动光学渲染、BEM、AIM、BRDF
Wave Optics Render, Full Wave Reference Simulator原文:https://zhuanlan.zhihu.com/p/1471147574
前言
稍微总结一下目前的理解。
基于波动光学的计算机图形学对图形学研究者而言无疑是巨大的挑战。它不仅要在计算上处理电磁波,还涉及一些量子力学的理论,想要打通物理学和图形学之间的隔阂属实不易。在基于波动光学的图形学中,光在介质中的传播不再只是直线,而是会因为波长不同,表现出自旋、偏折和衍射等多种特性。从肥皂泡、偏振镜、油膜光泽或糖分介质导致的旋光再到无线电辐射如何在城市建筑之间传播,都离不开波动光学理论。
在知乎上也有很多大佬分享了非常详细的波动光学渲染理论基础教学。
但是奈何阅读门槛都较高,且距离实际应用太远。波动光学渲染涉及的数学物理知识太多,就算是一行一行细看闫老师和他博士生的paper,也是寸步难行。
图形学的圣杯是光线追踪,而全局波动光学渲染则是图形学圣杯中的圣杯。
在Sig21上,Shlomi提出了将路径追踪与物理光学相结合实现电磁辐射传播的真实模拟。目前已经有不少方法计算电磁波的传输,从高精度但计算密集的波动求解器到快速但不够精确的几何光学方法。如下图所示,展示了当前电磁波传输的计算方法。左边最准确,右边最快。
波动求解器(Wave Solvers)专注于求解麦克斯韦方程的精确解,但对于大型场景来说并不实用,一般用FDTD、BEM或FEM来做。
PO基于高频近似的电磁波计算,但是对于可见光这个频率来说其实勉强够用了。PS:[Xia 2023]的黑狗毛就属于Physical Optics方法。而本文的全波参考应该还是属于Wave Solvers的方式,但是在BEM的基础上使用了PO的一些思想(等效电流等)。
除了PO,还有一种方法介于Wave Solvers和Geometrical Optics之间,称为Hybrid GO-PO,我个人觉得应该叫做几何光学-物理光学混合方法。统一衍射理论(Uniform Theory of Diffraction, UTD)将衍射效应纳入几何光学来计算高频条件下的电磁波传输。个人理解,UTD通过计算绕射系数来补偿几何光学射线边界条件的不足,也就是说几何光学的射线也可以转弯了。这种操作在雷达探测天线设计领域非常实用。除了UTD,Hybrid GO-PO还涉及一种叫射线发射和反弹方法(Shooting and Bouncing Rays, SBR)的技术。这种技术模拟射线在物体表面多次反射,同样基于几何光学。
我个人认为,把光理解为一种平面正弦波其实有些局限。例如3b1b的光学系列视频就把光的电场看成是一个平面正弦波。
虽然可以解释绝大多数现象,并且非常适合入门学习,但是对于波动光学渲染的研究而言,把光的电场简单描述为平面正弦波没办法进一步解释例如本篇paper提及的高斯光束。
但是我依旧强烈推荐不了解波动光学的读者先看这个系列的视频。
视频通过右旋手性介质会使光“旋转”这个特殊波动光学现象,科普了一系列波动光学的有趣现象以及背后的原理。
非常引人深思。
最后甚至还讲到了如何利用物质波构建全息影像。
- This tests your understanding of light | Optics puzzles 1
- How wiggling charges give rise to light | Optics puzzles 2
- But why would light “slow down”? | Optics puzzles 3
- How well do you understand refraction? | Optics puzzles 4
- How are holograms possible? | Optics puzzles 5
在经典电磁场理论中,我们通常使用平面波展开电磁场,每个模式的光子在空间上是非定域的,具有无限的空间延展。这种展开方式下,一个光子处于一个频率和波矢明确的模式上,因此它在空间中“充满”了整个平面波的区域。对于自由空间中的电磁场模式非常常见,但这种平面波并不适合描述局域性。
另一种展开方式是局域的波包(wave packet)。这种理解方式,允许我们在空间中对电磁场进行位置上的排布,即形成一系列具有一定宽度的波包。
把光单纯理解为一个正弦波其实违反了不确定性原理。如果光被视为正弦波,也就说明这个光是完全的单色光,但是现实中不可能有单色光。光信号作用基本是频域作用,空域到频域要用傅立叶变换。带宽-时间不确定性原理指出,带宽越窄,信号在时间上会越长。相反,带宽越宽,信号的时间长度越短。
在经典电磁理论中,一个波包可以对应于一个能量集中的区域。
但是注意光子也不能单纯理解为一种波包,而是理解为一种概率波。量子力学中的概率波函数描述了光子的存在几率。波包越集中,粒子性就越明显。这就是量子电动力学解释的波粒二象性。一个光子并不一定只能在一个波包中,它也可以描述为多个波包的叠加。因为光子状态本质上是量子场的激发,允许在不同位置的波包上进行叠加。
也就是说,一个光子可以“跨越”多个波包,即它的波函数可以在空间上以多个波包的形式存在,而不局限于某个特定位置。当一个波包模式上有一个光子时,这个波包可以看作是最低激发态;而如果波包上有多个光子(高阶激发态),则会体现出更高的能量。
本文中提到的一种电磁波束高斯光束是一种特定的电磁波解,可以视为一种波包。高斯光束是一个具有稳定振幅和相位结构的单一波包,它在横截面上表现为高斯分布。不同于我们平常在经典电磁理论中常用的平面波解,因为高斯光束的波前是曲率变化的,不是无限延伸的平面。
波的系综(ensemble of waves)指的是多个波的集合,这些波可能具有不同的频率、相位或传播方向。如果考虑一个系统中多个独立波包(例如多个脉冲激光束)相互叠加,可以将这些波包理解为一个波的系综。换句话说,如果有多个不相关的波包,尤其是随机相位的波包叠加在一起,它们在统计上可构成波的系综。
当我们把电磁场展开为一系列波包,那么就可以将每个波包视为一个随机事件,他们的到达时间、相位都是随机变量。对于多个波包的集合,我们可以在不同时间、不同位置观察到这些波包的特征。在统计意义上,使用系综平均来分析光的能量分布和波动行为。
$$
\langle U(\vec{r}, t) \rangle = \lim_{T \to \infty} \frac{1}{2T} \int_{-T}^{T} U(\vec{r}, t) \, dt
$$由于不是物理壬,微元写在积分式前我是不认可的(
上面说到,光可以视为多个波包的集合。而不同波包之间可能会存在相位差和时间差,因此需要引入互相关函数和互相干函数来描述两个不同位置的波包之间的相干性和相对相位,提供了对这些波包在时空上相似性的量化描述。如果说系综平均用于描述一个信号在统计意义下的平均行为,那么互相关函数是在时间平均的角度上,描述了不同位置和不同时间之间的相干关系和波动关联性。
具体而言,互相关函数描述了位置 $\vec{r}_1$ 和 $\vec{r}_2$ 之间的波动相干性。如果两个波相干,那么这个Gamma值就会比较大:
$$
\Gamma(\vec{r}_1, \vec{r}_2, \tau) = \langle U(\vec{r}_1, t) U^*(\vec{r}_2, t + \tau) \rangle
$$
交叉谱密度(CSD)矩阵 $W(\vec{r}_1, \vec{r}_2, \omega)$ 是互相关函数的傅里叶变换,表示在频率域中两个位置之间的相干性。还记得我们之前在Xia2023那篇黑狗毛中讨论的自相关函数吗?互相关函数需要两个信号来描述,而自相关函数只有一个信号。另一个角度来理解,自相关函数(ACF)是互相关函数的一种特殊情况。自相关函数描述的是信号与自身在不同时刻或不同位置的相关性,而互相关函数则是两个不同信号或同一信号在不同位置的相关性。互相关函数与交叉谱密度为一对傅里叶变换对,自相关函数与功率谱密度为一对傅里叶变换对。
交叉谱密度(CSD)和互相干函数描述在不同位置间波动的相干性。而辐射互谱密度(Radiance Cross-Spectral Density, RCSD)是CSD的推广,描述的是光辐射(即能量密度)在不同位置和不同方向之间的相关性。可以理解为,RCSD在辐射度量的基础上提供了类似于CSD的相干性描述。公式中, $L(\vec{r}_1, \vec{r}_2, \omega)$ 表示在频率 $\omega$ 下,位置 $\vec{r}_1$ 和 $\vec{r}_2$ 之间的辐射强度相干性。
辐射互谱密度传输方程(SDTE)与经典的光传输方程(Light Transport Equation, LTE)相似,但是更加适合波动光学。LTE描述的是从点到点的光辐射度传输,而SDTE则使用RCSD函数来描述光辐射的传播,相当于将传输视为区域间的相干传输。
SDTE中的RCSD通过区域间的积分形式表达辐射的传播,可以理解为用RCSD矩阵和衍射算子代替了传统的反射和散射。并且注意,SDTE基于RCSD函数,而不是具体的光强值,这一点和LTE是有较大区别的。
在进一步讨论利用边界元方法(Boundary Element Method, BEM)和自适应积分法(Adaptive Integral Method, AIM)加速的全波参考模拟器之前,首先简单回顾下前文的内容。前文介绍了PO方法和SDTE/RCSD理论。这些方法用于不同的散射计算需求,但它们的基本理论和适用范围不同。本文将讨论一种通过BEM和AIM结合提供高精度的面散射模拟的方法。
用原作者的话来总结,Wave optics在基于物理渲染里面属于很新的分支。虽然波动光学现象在生活中随处可见,但是对画面的影响并不是很大。这个方向其实还有很多可以做的地方。
其他相关参考:
- [Tannor 2007] 3.2 Gauss波包的一般性质 – 笠道梓的文章 – 知乎
- 高斯光束,平面波,球面波三者间有什么关系? – 定制滤光片的回答 – 知乎
- 波动光学中的一个波包和量子光学中的一个光子有什么关系吗? – Godfly的回答 – 知乎
- 不确定性关系即傅里叶带宽定理之证明 – Michael Lieman的文章 – 知乎
A Full-Wave Reference Simulator for Computing Surface Reflectance
Paper主页:
https://blaire9989.github.io/assets/1_BEMsim3D/project.html
ACM主页:
https://dl.acm.org/doi/10.1145/3592414
ACM Citations:
Yunchen Yu, Mengqi Xia, Bruce Walter, Eric Michielssen, and Steve Marschner. 2023. A Full-Wave Reference Simulator for Computing Surface Reflectance. ACM Trans. Graph. 42, 4, Article 109 (August 2023), 17 pages. https://doi.org/10.1145/3592414
演讲报告
与更常用的光线追踪技术相比,波动光模拟更费时间但也更精确。
比方说金属表面的微观划痕、毛发纤维结构,传统的光学模型渲染的,无法渲染出我们现实生活中观察到的五彩斑斓的色彩效果。
基于波动光学的渲染是一个难题,因为解决麦克斯韦方程组需要大量复杂的计算。现有的基于波的外观模型通常采用一些近似方法。
一种近似方法是标量场近似(scalar field approximation)。
在波散射问题(wave scattering problem)中,电场和磁场是不同的矢量场量,具有不同极化方向(polarizations)的光由指向不同方向的场量组成。
有些近似模型将这两个矢量场量替换为单一标量函数(single scalar function),因此可以计算光能的强度,但放弃了对极化的建模(modeling polarization)。
另一种近似是一阶近似(first-order approximation)。假设光线仅与模型结构的每个部分发生一次反射,忽略了多次反射。然而,许多情况下这些近似都不适用。
例如 Yu 等人与 Dr. Lawrence 团队的合作,Penn State University 制作了带有圆柱形横截面的表面,这些表面会引起多次光反射并产生结构色彩,使用近似模型无法很好地理解或预测这些现象。
作者希望通过计算双向反射分布函数(BRDF)来尽可能精确地表征表面散射。
现有模型都采用各种近似方法,比如基于光线、标量或一次近似的模型,在没有参考质量(reference quality)的BRDF的情况下,很难看出每种反射模型缺少了什么或适用于什么场景。
作者的解决方案是构建一个三维四波模拟器(3D 4-way simulation),用于计算具有明确微观几何结构的表面的BRDF。
声称不使用任何近似方法,为表面样本计算出参考质量的BRDF。
速度方面dddd。
作者接下来介绍他们的模拟如何工作以及它与BRDF的关系。
首先,在左边这幅图,Input一个表面样本(定义为高度场)以及一个入射方向(在投影半球上表示)。定义了一个向表面传播的入射场,并从表面计算出一个散射场。
中间这幅图,光束是入射场,背景中的散射场也显示在此图中。
输出是对应给定入射方向的BRDF模式,半球每个点代表一个出射方向,颜色代表相应方向上反射光的颜色。BRDF以RGB颜色表示,这些颜色是从光谱数据转换而来。
对于很多粗糙度不高的表面,反射模式围绕镜面方向对称并随入射光方向的移动而变化。
接下来讲的是如何使用边界元法来解决仅在表面上的信号散射问题,从而降低了问题的维度。
表面信号是从麦克斯韦方程解出的表面电流,在离散化后,将问题构建为一个线性系统,并求解出表面电流和散射场。
为了使计算可行,作者将线性系统对称化,并使用一个适合对称矩阵的最小残差求解器。
此外,使用自适应积分方法加速矩阵向量乘法,这是一种基于快速傅里叶变换的加速方法,最初用于雷达计算。
代码大部分使用了Cuda C++包进行加速。
接下来,展示了一些结果,说明其计算的BRDF与之前方法得出的BRDF的比较。
[Yan 2018] 使用标量场近似的BRDF模型,这些模型只考虑一次折射。
[Xia 2023] 这篇使用矢量场量但也只考虑一次折射。
最精确的方法还得是咱们的。不仅使用矢量场量(vector field quantities),而且考虑了所有次序的反射(reflections of all orders)。
上图每个入射方向对应五种BRDF,分别代表不同的计算方法。
表面相对平滑的材料,表面上覆盖了一些各向同性的凸起(a bunch of isotropic bombs)。
第一行显示的是法线入射(normal instance),反射模式基本上居中(reflection pattern is pretty much centered)。
第二行由于入射光方向从某个倾斜方向来,模式向左偏移。
由于表面不太粗糙,五种方法的结果非常相似。
另一种材质呢,有一些棱棱角角(corner cubes)。每个corner cubes的三个面会让光多次反射,使反射光沿入射方向返回。叫做逆向反射(retroreflection)。
咱们的模拟器也可以模拟这种现象。左边四种方法都败下阵来。
原因在于如果只考虑一次反射,当光线击中corner cubes的一个面后,会被预测为向下进入下半球。
最后的例子是一个表面覆盖了一些球形坑。
由于坑边缘的高坡度(high slopes of the surface at the edges of the pits),导致多次反射的出现。
不同的方法看到明显差异。
可以看到预测的额外反射峰(extra lobe predicting)。(中间偏右那个部分)
另外整体更亮了。
这些差异源于不同次序反射间的干涉效果(interference between reflections of different orders)。
最后,简单介绍高效计算非常多的密集采样方向的BRDF的技术。
如果需要模拟的表面很大,速度就会很慢,并需要大量的GPU内存。
但是计算是线性的,可以将大面积表面分解为多个较小的子区域。
每个子区域上投射入射场,首先执行较小的子区域模拟,然后将散射场整合,得出整个大面积表面的BRDF。
对不同子区域的散射场应用不同的复数值缩放因子(different complex value scale factors),就可以综合出对应不同入射方向的大面积表面的BRDF。
这是因为对每个子区域的局部入射场,应用适当的相移会在表面上产生具有不同净方向的总入射场。在这张图中,入射场垂直传播。如果将五个焦点在不同空间位置的相同场叠加,得到一个空间上更宽的场,仍沿垂直方向传播。如果线性组合这些场,并对每个子区域的场应用适当的复数值缩放因子,整体场可以以略微倾斜的方向传播。
这里解释一下为啥复数缩放因子(different complex value scale factors)可以产生不同的入射方向。
- 这个因子可以调整波的幅度和相位。就比如往水面丢石头,两颗石头同时丢,水面的波就会更强。如果一颗稍微晚一些丢,波纹就可能会相互抵消(相消干涉)。这个因子就是控制石头投掷的时间。通过调整相位控制波的叠加方式,进而“引导”波向不同的方向传播。详细的去搜索「Beamforming」,雷达、无线通信和声纳等领域应用很广泛。
这三张图代表光波的波前。即波峰。可以理解为光在传播中的波形截面。
上方的图,垂直地射向表面,入射场分布集中在中心。光场集中在中心,沿垂直方向传播(即中间的黄线方向)。
左下方,多个相同入射场的叠加效果,但叠加时相位保持一致(即没有相位差)。多个入射场相加,使得整个场在空间上分布更宽了,但传播方向还是保持垂直。
右下方,多个入射场的叠加效果,但是在叠加时加入了相位差。相当于“偏移”了入射场的方向。呈现出一个倾斜方向。
演示中,两个视频展示了BRDF模式的移动。(我懒得截GIF了)
最后是大佬比心合影。
论文
我的第一篇文章已经粗略介绍了这项工作的内容和成果,接下来直接进入理论推导(Section3-5)。
3 FULL-WAVE SIMULATION
整体方法从一个表面模型开始,表面由高度场及其材料属性(如复折射率)描述,并指定一个目标点。
为了计算给定入射方向的BRDF,定义了一个入射场,该场从特定方向传播至目标点。
这个入射场作为输入,通过表面散射模拟进行处理,从而求解出相应的散射电磁场。
在本节(FULL-WAVE SIMULATION)中,将重点介绍BEM在应用场景中的原理。下一节会讲解如何高效实现BEM算法,最后一节会介绍如何结合多个模拟结果,以合成在入射和散射方向上密集采样的BRDF。
开局先来一张符号表吓一吓你。
3.1 Boundary Element Method: The Basics
边界元法(BEM)主要解决单一频率的散射问题,即特定频率的电磁波(包括电场和磁场)如何在不同介质的边界上反射和散射。这里的边界将空间分成了两个均匀区域,两个区域的材料特性(入射场所处的介质参数)用( $\epsilon_1, \mu_1$ )和( $\epsilon_2, \mu_2$ )表示。其中, $\epsilon$ 代表介电常数(介电率),$\mu$ 代表磁导率(磁导系数)。
在这种方法中,我们处理的是复数值场量,这些场量既包含振幅信息,也包含相位信息(即波的传播状态)。为了简化公式,我们假设所有波都是“时间谐和”的——也就是波随时间按照特定的周期变化。在整个文中, $e^{j\omega t}$ 项被省略,以简化表述。
3.1.1 Maxwell’s Equations and Surface Currents
首先,麦克斯韦方程描述了电场(E)和磁场(H)是如何相互影响的,决定了光波如何在不同材料之间传播和散射。为了化简,这里用“时间谐和”的形式:
$$ \begin{align} \nabla \times \mathbf{E} &= -\mathbf{M} – j \omega \mu \mathbf{H} \\ \nabla \times \mathbf{H} &= \mathbf{J} + j \omega \epsilon \mathbf{E} \tag{1} \end{align} $$
等号左边描述电场和磁场在空间中的“旋转”程度。 $M$ 和 $J$ 是表面电流密度(假想的电流),分别表示磁流和电流的密度(electric and magnetic current densities)。这个公式可以理解为,电场在边界附近“旋转”时,产生磁流和磁场的变化;磁场的旋转也会产生电场和电流的变化。边界元法的核心思想是:在边界上引入表面电流,用这些电流来间接描述场的分布,而不需要计算每个区域中的所有点。三维问题化简为边界上的二维问题。
3.1.2 Source-Field Relationships
表面上的假想电流(电磁波的“源”)是如何产生散射的电磁场(“场”)的呢?
如Fig2.所示,在区域 $R_1$ ,总场(入射场和散射场)分别表示为 $E_1$ 和 $H_1$ ;
$$ \begin{align} &\mathbf{E}_1 = \mathbf{E}_i + \mathbf{E}_s \\ &\mathbf{H}_1 = \mathbf{H}_i + \mathbf{H}_s \tag{2} \end{align} $$
在区域 $R_2$ ,总场表示为 $E_2$ 和 $H_2$ 。上方的散射场由上方的电磁流产生;下面的散射场由下方的电磁流产生。在均匀介质中,麦克斯韦方程组可以写成积分的形式,描述电场和磁场的生成方式。
\begin{align} \mathbf{E}(\mathbf{r}) &= -j \omega \mu (\mathcal{L} \mathbf{J})(\mathbf{r}) – (\mathcal{K} \mathbf{M})(\mathbf{r}) \\ \mathbf{H}(\mathbf{r}) &= -j \omega \epsilon (\mathcal{L} \mathbf{M})(\mathbf{r}) + (\mathcal{K} \mathbf{J})(\mathbf{r}) \tag{3} \end{align}
等号左边分别表示电磁场在 $r$ 处的电磁场强度,即描述的是场的“作用效果”。 $\mathcal{L}$ 和 $\mathcal{K}$ 是积分算子,表示场如何从表面电流和磁化强度产生。这两个算子定义为:$$ \begin{aligned} & (\mathcal{L} \mathbf{X})(\mathbf{r})=\left[1+\frac{1}{k^2} \nabla \nabla \cdot\right] \int_V G\left(\mathbf{r}, \mathbf{r}^{\prime}\right) \mathbf{X}\left(\mathbf{r}^{\prime}\right) d \mathbf{r}^{\prime} \\ & (\mathcal{K} \mathbf{X})(\mathbf{r})=\nabla \times \int_V G\left(\mathbf{r}, \mathbf{r}^{\prime}\right) \mathbf{X}\left(\mathbf{r}^{\prime}\right) d \mathbf{r}^{\prime} \end{aligned} \tag{4} $$
$G(r, r{\prime})$ 是用于标量亥姆霍兹方程的三维格林函数,定义为:$$
G(\mathbf{r}, \mathbf{r}^{\prime}) = \frac{e^{-jkr}}{4 \pi r} \quad \text{where } r = |\mathbf{r} – \mathbf{r}^{\prime}|
\tag{5}
$$
这个函数把散射表面的源场转换为散射区域内电磁场的分布。本论文这里和[Xia 2023]中的公式(11)其实是一样的,但本论文将格林函数隐含在算子中,且积分域更为广泛。本质上都是描述如何从电流密度 $\mathbf{J}$ 和磁流密度 $\mathbf{M}$ 生成散射电场 $E(r)$。
求解麦克斯韦方程时,通过格林函数来整合各处的源(如电流、电荷)对空间中电磁场的影响。假设电磁场以 $e^{j\omega t}$ 的形式随时间变化(单频),就可以得到类似于亥姆霍兹方程的形式:$(\nabla^2 + k^2) \mathbf{E} = -j \omega \mu \mathbf{J}$ ,实际上这是一种“频域”形式的麦克斯韦方程。引入格林函数建立一种源-场关系,即将电流 $\mathbf{J}$ 和电荷 $\rho$ 作为“源”来计算电磁场 $\mathbf{E}$ 和 $\mathbf{H}$ 的分布。那么格林函数是满足如下方程的:$(\nabla^2 + k^2) G(\mathbf{r}, \mathbf{r}{\prime}) = -\delta(\mathbf{r} – \mathbf{r}{\prime})$ ,$\delta$ 是狄拉克δ函数,表示“点源”在空间中产生的标准波形,描述的是在空间中由一个“点源”激发的波场。通过格林函数,可以表达任意电流分布 $\mathbf{J}$ 在空间中对场点 $\mathbf{r}$ 产生的影响了!接着,每个源点上的“电流”或“电荷”都通过格林函数扩散到整个空间,对每一个场点产生累积影响。$\mathbf{E}(\mathbf{r}) = \int_V G(\mathbf{r}, \mathbf{r}{\prime}) \mathbf{J}(\mathbf{r}{\prime}) d \mathbf{r}{\prime}$ 这公式就是电场表示为源电流的积分叠加。最后,结合麦克斯韦方程组的积分形式和格林函数的思想。比如电场的积分形式可以表示为:$\mathbf{E}(\mathbf{r}) = -j \omega \mu \int_V G(\mathbf{r}, \mathbf{r}{\prime}) \mathbf{J}(\mathbf{r}{\prime}) d \mathbf{r}{\prime} – \nabla \times \int_V G(\mathbf{r}, \mathbf{r}{\prime}) \mathbf{M}(\mathbf{r}{\prime}) d \mathbf{r}{\prime}$ ,通过卷积可以获得每个源点上的微小电流分布对场点的累积影响,这是通过格林函数的积分在空间中传播和叠加的结果。格林函数作为卷积核,将空间中各点的电流分布通过积分传播到目标场点,实现了空间中各源点电流对整个场的累积影响。
介质区域 $R_1$ 和 $R_2$ 内的电场就分别表示为公式(6)(7),包含了两个算子。
在区域 $R_2$ 内:
$$ \begin{align} & \mathbf{E}_1(\mathbf{r}) = -j \omega \mu_1 (\mathcal{L}_1 \mathbf{J}_1)(\mathbf{r}) – (\mathcal{K}_1 \mathbf{M}_1)(\mathbf{r}) \\ & \mathbf{H}_1(\mathbf{r}) = -j \omega \epsilon_1 (\mathcal{L}_1 \mathbf{M}_1)(\mathbf{r}) + (\mathcal{K}_1 \mathbf{J}_1)(\mathbf{r}) \end{align} \tag{6} $$
在区域 $R_2$ 内:\begin{align} \mathbf{E}_2(\mathbf{r}) &= -j \omega \mu_2 (\mathcal{L}_2 \mathbf{J}_2)(\mathbf{r}) – (\mathcal{K}_2 \mathbf{M}_2)(\mathbf{r}) \\ \mathbf{H}_2(\mathbf{r}) &= -j \omega \epsilon_2 (\mathcal{L}_2 \mathbf{M}_2)(\mathbf{r}) + (\mathcal{K}_2 \mathbf{J}_2)(\mathbf{r}) \tag{7} \end{align}
这样就得到了在不同介质区域中电场和磁场的表现形式。总结一下,这一小节通过假想的表面电流产生散射电磁场,将麦克斯韦方程组转化为积分表达,格林函数将电流和电荷分布转化为电磁场的积分叠加,展示了源-场关系的具体实现方式。最后给出了区域 $R_1$ 和 $R_2$ 内电场和磁场的表达式,展示了不同介质参数对场的影响。
3.1.3 Boundary Conditions
当电磁波在两种不同介质的边界传播时,会发生反射和折射。此时波的能量不可能凭空消失,而是在界面上平滑过渡的。如果电场或磁场在边界上不连续,就会出现不符合实际的能量跃变(即能量突然消失或增加),这违反了能量守恒。
具体可以搜索:「Interface conditions for electromagnetic fields」。
因此,必须在介质边界上满足一定的边界条件,以确保电磁场的连续性和能量守恒。具体而言,当电磁波在两种不同介质的界面上传播时,电场和磁场的切向分量(tangential component)需要在边界上保持连续性:
$$
\begin{aligned}
& \mathbf{n} \times (\mathbf{E}_1 – \mathbf{E}_2) = 0 \\
& \mathbf{n} \times (\mathbf{H}_1 – \mathbf{H}_2) = 0
\end{aligned}
\tag{8}
$$
并且边界上的净电磁流密度为零,即边界两侧电磁流密度方向相反大小相等。
$$
\begin{aligned}
& \mathbf{J} = \mathbf{J}_1 = -\mathbf{J}_2 \\
& \mathbf{M} = \mathbf{M}_1 = -\mathbf{M}_2
\end{aligned}
\tag{9}
$$
这两个条件同时满足,才不会破坏物理守恒。3.1.4 Integral Equations
结合上面公式 (6)、(7)、(8) 和 (9),得到关于电场和磁场的积分方程,称之为 PMCHWT(Poggio-Miller-Chang-Harrington-Wu-Tsai)方程:
$$
\begin{aligned}
& {\left[j \omega \mu_1\left(\mathcal{L}1 \mathbf{J}\right)(\mathbf{r})+j \omega \mu_2\left(\mathcal{L}_2 \mathbf{J}\right)(\mathbf{r})+\left(\mathcal{K}_1 \mathbf{M}\right)(\mathbf{r})+\right.}\left.\left(\mathcal{K}_2 \mathbf{M}\right)(\mathbf{r})\right]{\tan } \\
&=\left[\mathbf{E}i(\mathbf{r})\right]{\tan } \\
& {\left[\left(\mathcal{K}1 \mathbf{J}\right)(\mathbf{r})+\left(\mathcal{K}_2 \mathbf{J}\right)(\mathbf{r})-j \omega \varepsilon_1\left(\mathcal{L}_1 \mathbf{M}\right)(\mathbf{r})-j \omega \varepsilon_2\left(\mathcal{L}_2 \mathbf{M}\right)(\mathbf{r})\right]{\tan } } \\
&=-\left[\mathbf{H}i(\mathbf{r})\right]{\tan }
\end{aligned}
\tag{10}
$$
这两个方程分别还有个名字:- EFIE(Electric Field Integral Equation),电场积分方程。 $j \omega \mu_1 (\mathcal{L}_1 \mathbf{J})(\mathbf{r})$ 和 $j \omega \mu_2 (\mathcal{L}_2 \mathbf{J})(\mathbf{r})$ 表示在介质 1 和 介质 2 中,电流密度 $\mathbf{J}$ 对电场的贡献。 $\mathcal{K}_1 \mathbf{M}$ 和 $\mathcal{K}_2 \mathbf{M}$ 表示在介质 1 和介质 2 中,磁流密度 $\mathbf{M}$ 对电场的贡献。
- MFIE(Magnetic Field Integral Equation),磁场积分方程。
总的来说,这是一种边界积分方程,专门用来求介电物体引起的电磁散射问题。有了这个PMCHWT方程,就可以准确计算电磁场的分布了。
3.1.5 Solving for Current Densities
这一节,需要通过上面的PMCHWT方程计算物体表面上的“电流”和“磁流”分布,这些分布决定了电磁波碰到物体后会怎么“反射”或者“折射”。
求解表面电流密度 $\mathbf{J}$ 和磁流密度 $\mathbf{M}$ 是通过将边界元离散化。对于离散单元定义一个基函数 $f_m(\mathbf{r})$ ,用基函数展开法表示电流密度和磁流密度分布。
$$
\mathbf{J}(\mathbf{r}) = \sum_{m=1}^{N} I_{J_m} f_m(\mathbf{r}); \quad \mathbf{M}(\mathbf{r}) = \sum_{n=1}^{N} I_{M_n} f_n(\mathbf{r})
\tag{11}
$$
N 是基函数的总数;$ I_{J_m}$ 和 $I_{M_n}$ 是对应基函数的未知系数,代表了每个单元上的电流和磁流强度。通过这种基函数展开,连续的表面电流密度和磁流密度被分解成一系列基函数的线性组合。
为了求解对应基函数的未知系数,将电场积分方程 (EFIE) 和磁场积分方程 (MFIE) 转化为一个线性方程组。具体使用伽辽金法(Galerkin Method)完成。这个方法基本思想是,将积分方程作用在每个基函数上,加权平均使得积分方程在每个基函数的投影方向上都成立。该方法简单的说就是离散化、找基底、算系数。一个高维的线性方程组可以用线性代数方法简化。
这样可以将原本连续形式的PMCHWT方程的EFIE部分转换为有限个线性方程,把问题转化为解如下矩阵方程。
$$
\begin{bmatrix} A_{EJ} & A_{EM} \ A_{HJ} & A_{HM} \end{bmatrix} \begin{bmatrix} I_J \ I_M \end{bmatrix} = \begin{bmatrix} V_E \ V_H \end{bmatrix}
\tag{12}
$$
其中
$$
A_{\mathrm{EJ}}^{m n} =\int_S \mathbf{f}_m(\mathbf{r}) \cdot\left[j \omega \mu_1\left(\mathcal{L}_1 \mathbf{f}_n\right)(\mathbf{r})+j \omega \mu_2\left(\mathcal{L}_2 \mathbf{f}_n\right)(\mathbf{r})\right] d \mathbf{r} \tag{13}
$$$$
A_{\mathrm{EM}}^{m n} =\int_S \mathbf{f}_m(\mathbf{r}) \cdot\left[\left(\mathcal{K}_1 \mathbf{f}_n\right)(\mathbf{r})+\left(\mathcal{K}_2 \mathbf{f}_n\right)(\mathbf{r})\right] d \mathbf{r} \tag{14}
$$$$
A_{\mathrm{HJ}}^{m n} =\int_S \mathbf{f}_m(\mathbf{r}) \cdot\left[\left(\mathcal{K}_1 \mathbf{f}_n\right)(\mathbf{r})+\left(\mathcal{K}_2 \mathbf{f}_n\right)(\mathbf{r})\right] d \mathbf{r} \tag{15}
$$$$
A_{\mathrm{HM}}^{m n} =-\int_S \mathbf{f}_m(\mathbf{r}) \cdot\left[j \omega \varepsilon_1\left(\mathcal{L}_1 \mathbf{f}_n\right)(\mathbf{r})+j \omega \varepsilon_2\left(\mathcal{L}_2 \mathbf{f}_n\right)(\mathbf{r})\right] d \mathbf{r} \tag{16}
$$和
$$
V_{\mathrm{E}}^m =\int_S \mathbf{f}_m(\mathbf{r}) \cdot \mathbf{E}_i(\mathbf{r}) d \mathbf{r}\tag{17}
$$$$
V_{\mathrm{H}}^m =-\int_S \mathbf{f}_m(\mathbf{r}) \cdot \mathbf{H}_i(\mathbf{r}) d \mathbf{r}\tag{18}
$$公式(12)中,需要求出 $I_J$ 和 $I_M$ 。
不严谨地讲,公式(13)-(16)分别表示每一小块的电流密度对产生电场的贡献、每个小块的磁流密度对产生电场的贡献、每个小块的电流密度对产生磁场的贡献和每个小块的磁流密度对产生磁场的贡献。公式(17)(18)分别表示外界入射电场对这个小块电流的“推动力”和外界入射磁场对这个小块磁流的“推动力”。强调一下矩阵里面的元素,比如 $A_{EJ}^{mn}$ ,这其实是一个二重积分。由于对源点 $\mathbf{r}{\prime}$ 的积分已经在 $\mathcal{L}_1$ 和 $\mathcal{L}_2$ 中完成了,因此导致原paper看起来是个一重积分。
虽然原论文没有写,但是建议聪明的读者自己推导一下。尝试根据上文提到的公式(4)把公式(13)展开。我这里尝试推导了一下,有错误请指正。首先把两个算子代入,注意这里梯度算子的位置:
$$
\begin{aligned}
A_{\mathrm{EJ}}^{mn} &= j \omega \mu_1 \int_S \mathbf{f}_m(\mathbf{r}) \cdot \left\{ \int_V G_1(\mathbf{r}, \mathbf{r}{\prime}) \mathbf{f}_n(\mathbf{r}{\prime}) d\mathbf{r}{\prime} + \frac{1}{k_1^2} \nabla \left[ \nabla \cdot \int_V G_1(\mathbf{r}, \mathbf{r}{\prime}) \mathbf{f}_n(\mathbf{r}{\prime}) d\mathbf{r}{\prime} \right] \right\} d\mathbf{r} \\
&\quad + j \omega \mu_2 \int_S \mathbf{f}_m(\mathbf{r}) \cdot \left\{ \int_V G_2(\mathbf{r}, \mathbf{r}{\prime}) \mathbf{f}_n(\mathbf{r}{\prime}) d\mathbf{r}{\prime} + \frac{1}{k_2^2} \nabla \left[ \nabla \cdot \int_V G_2(\mathbf{r}, \mathbf{r}{\prime}) \mathbf{f}_n(\mathbf{r}{\prime}) d\mathbf{r}{\prime} \right] \right\} d\mathbf{r}
\end{aligned}
$$先考虑其中一个梯度项:
$$
\int_S \mathbf{f}_m(\mathbf{r}) \cdot \nabla \left[ \nabla \cdot \int_V G(\mathbf{r}, \mathbf{r}{\prime}) \mathbf{f}_n(\mathbf{r}{\prime}) d\mathbf{r}{\prime} \right] d\mathbf{r}
$$用向量分布积分展开:
$$
\int_S \mathbf{f}m \cdot \nabla B \, d r = -\int_S B (\nabla \cdot \mathbf{f}_m) \, dr + \int{\partial S} B (\mathbf{A} \cdot \mathbf{n}) \, dr
$$其中,散度项 $B$ :
$$
B = \nabla \cdot \int_V G(\mathbf{r}, \mathbf{r}{\prime}) \mathbf{f}_n(\mathbf{r}{\prime}) d\mathbf{r}{\prime}
$$但是很抱歉,这里是物理。在边界条件下,边界项直接简化为零,得到:
$$
\int_S \mathbf{f}_m \cdot \nabla B \, dS = -\int_S B (\nabla \cdot \mathbf{f}_m) \, dS
$$对于散度项 $B$ ,可以直接展开散度:
$$
B = \nabla \cdot \int_V G(\mathbf{r}, \mathbf{r}{\prime}) \mathbf{f}_n(\mathbf{r}{\prime}) d\mathbf{r}{\prime} = \int_V (\nabla \cdot G(\mathbf{r}, \mathbf{r}{\prime}) \mathbf{f}_n(\mathbf{r}{\prime})) d\mathbf{r}{\prime}
$$一个是标量函数,一个是矩阵函数,因此根据散度的乘积法则:
$$
\nabla \cdot (G \mathbf{f}_n) = (\nabla G) \cdot \mathbf{f}_n + G (\nabla \cdot \mathbf{f}_n)
$$但是很抱歉,这里是物理。由于基函数满足无散度条件,因此这里直接简化:
$$
\nabla \cdot (G \mathbf{f}_n) = (\nabla G) \cdot \mathbf{f}_n
$$同时我们注意到格林函数的对称性 $\nabla G(\mathbf{r}, \mathbf{r}{\prime}) = -\nabla{\prime} G(\mathbf{r}, \mathbf{r}{\prime})$ ,于是有:
$$
B = \nabla \cdot \int_V G(\mathbf{r}, \mathbf{r}{\prime}) \mathbf{f}_n(\mathbf{r}{\prime}) d\mathbf{r}{\prime} = -\int_V \nabla{\prime} G(\mathbf{r}, \mathbf{r}{\prime}) \cdot \mathbf{f}_n(\mathbf{r}{\prime}) d\mathbf{r}{\prime}
$$对这一项也进行分布积分:
$$
\int_V \nabla{\prime} G(\mathbf{r}, \mathbf{r}{\prime}) \cdot \mathbf{f}_n(\mathbf{r}{\prime}) d\mathbf{r}{\prime} = \int_V \nabla{\prime} \cdot (G \mathbf{f}_n) d\mathbf{r}{\prime} – \int_V G (\nabla{\prime} \cdot \mathbf{f}_n) d\mathbf{r}{\prime}
$$但是很抱歉,这里是物理。边界项再次化简:
$$
\int_V \nabla{\prime} G(\mathbf{r}, \mathbf{r}{\prime}) \cdot \mathbf{f}_n(\mathbf{r}{\prime}) d\mathbf{r}{\prime} = -\int_V G(\mathbf{r}, \mathbf{r}{\prime}) (\nabla{\prime} \cdot \mathbf{f}_n(\mathbf{r}{\prime})) d\mathbf{r}{\prime}
$$最终得到:
$$
B = \nabla \cdot \int_V G(\mathbf{r}, \mathbf{r}{\prime}) \mathbf{f}_n(\mathbf{r}{\prime}) d\mathbf{r}{\prime} = \int_V G(\mathbf{r}, \mathbf{r}{\prime}) (\nabla{\prime} \cdot \mathbf{f}_n(\mathbf{r}{\prime})) d\mathbf{r}{\prime}
$$波数 $k_i$ 于介质参数的关系:
$$
k_i^2 = \omega^2 \mu_i \varepsilon_i \quad \Rightarrow \quad \frac{1}{k_i^2} = \frac{1}{\omega^2 \mu_i \varepsilon_i}
$$另一个梯度项也是同理,最后得到最终的表达式 $A_{\mathrm{EJ}}^{mn}$ :
$$
\begin{aligned} A_{\mathrm{EJ}}^{mn} &= j \omega \mu_1 \int_S \int_{V_1} \mathbf{f}m(\mathbf{r}) \cdot \mathbf{f}n(\mathbf{r}{\prime}) G_1(\mathbf{r}, \mathbf{r}{\prime}) d\mathbf{r}{\prime} d\mathbf{r} \\ &\quad – \frac{j}{\omega \varepsilon_1} \int_S \int{V_1} (\nabla \cdot \mathbf{f}m(\mathbf{r})) G_1(\mathbf{r}, \mathbf{r}{\prime}) (\nabla{\prime} \cdot \mathbf{f}n(\mathbf{r}{\prime})) d\mathbf{r}{\prime} d\mathbf{r} \\ &\quad + j \omega \mu_2 \int_S \int{V_2} \mathbf{f}m(\mathbf{r}) \cdot \mathbf{f}n(\mathbf{r}{\prime}) G_2(\mathbf{r}, \mathbf{r}{\prime}) d\mathbf{r}{\prime} d\mathbf{r} \\ &\quad – \frac{j}{\omega \varepsilon_2} \int_S \int{V_2} (\nabla \cdot \mathbf{f}_m(\mathbf{r})) G_2(\mathbf{r}, \mathbf{r}{\prime}) (\nabla{\prime} \cdot \mathbf{f}_n(\mathbf{r}{\prime})) d\mathbf{r}{\prime} d\mathbf{r} \end{aligned}
$$同样的操作,得到剩下的矩阵元素,这里直接抄论文附加材料的内容了:
$$
\begin{aligned} A_{\mathrm{EM}}^{m n}= & A_{\mathrm{HJ}}^{m n}=\int_{\mathbf{f}_m} \int_{\mathbf{f}_n} \mathbf{f}_m(\mathbf{r}) \cdot\left[\nabla G_1\left(\mathbf{r}, \mathbf{r}^{\prime}\right) \times \mathbf{f}_n\left(\mathbf{r}^{\prime}\right)\right] d \mathbf{r}^{\prime} d \mathbf{r} \\ & +\int_{\mathbf{f}_m} \int_{\mathbf{f}_n} \mathbf{f}_m(\mathbf{r}) \cdot\left[\nabla G_2\left(\mathbf{r}, \mathbf{r}^{\prime}\right) \times \mathbf{f}_n\left(\mathbf{r}^{\prime}\right)\right] d \mathbf{r}^{\prime} d \mathbf{r} \\ A_{\mathrm{HM}}^{m n} & =-j \omega \varepsilon_1 \int_{\mathbf{f}_m} \int_{\mathbf{f}_n} \mathbf{f}_m(\mathbf{r}) \cdot \mathbf{f}_n\left(\mathbf{r}^{\prime}\right) G_1\left(\mathbf{r}, \mathbf{r}^{\prime}\right) d \mathbf{r}^{\prime} d \mathbf{r} \\ & +\frac{j}{\omega \mu_1} \int_{\mathbf{f}_m} \int_{\mathbf{f}_n} \nabla \cdot \mathbf{f}_m(\mathbf{r}) G_1\left(\mathbf{r}, \mathbf{r}^{\prime}\right) \nabla^{\prime} \cdot \mathbf{f}_n\left(\mathbf{r}^{\prime}\right) d \mathbf{r}^{\prime} d \mathbf{r} \\ & -j \omega \varepsilon_2 \int_{\mathbf{f}_m} \int_{\mathbf{f}_n} \mathbf{f}_m(\mathbf{r}) \cdot \mathbf{f}_n\left(\mathbf{r}^{\prime}\right) G_2\left(\mathbf{r}, \mathbf{r}^{\prime}\right) d \mathbf{r}^{\prime} d \mathbf{r} \\ & +\frac{j}{\omega \mu_2} \int_{\mathbf{f}_m} \int_{\mathbf{f}_n} \nabla \cdot \mathbf{f}_m(\mathbf{r}) G_2\left(\mathbf{r}, \mathbf{r}^{\prime}\right) \nabla^{\prime} \cdot \mathbf{f}_n\left(\mathbf{r}^{\prime}\right) d \mathbf{r}^{\prime} d \mathbf{r}\end{aligned}
$$得到矩阵的每一个元素之后,引入平移不变函数(Shift-invariant Functions)。帮助得到在不同坐标系下表示格林函数及其梯度。
$$
\begin{aligned}
& g_{1, i}\left(\mathbf{r}-\mathbf{r}^{\prime}\right)=G_i\left(\mathbf{r}, \mathbf{r}^{\prime}\right)=\frac{e^{-j k_i r}}{4 \pi r} \\
& g_{2, i}\left(\mathbf{r}-\mathbf{r}^{\prime}\right)=\hat{\mathbf{x}} \cdot \nabla G_i\left(\mathbf{r}, \mathbf{r}^{\prime}\right)=-\left(x-x^{\prime}\right)\left(\frac{1+j k_i r}{4 \pi r^3}\right) e^{-j k_i r} \\
& g_{3, i}\left(\mathbf{r}-\mathbf{r}^{\prime}\right)=\hat{\mathbf{y}} \cdot \nabla G_i\left(\mathbf{r}, \mathbf{r}^{\prime}\right)=-\left(y-y^{\prime}\right)\left(\frac{1+j k_i r}{4 \pi r^3}\right) e^{-j k_i r} \\
& g_{4, i}\left(\mathbf{r}-\mathbf{r}^{\prime}\right)=\hat{\mathbf{z}} \cdot \nabla G_i\left(\mathbf{r}, \mathbf{r}^{\prime}\right)=-\left(z-z^{\prime}\right)\left(\frac{1+j k_i r}{4 \pi r^3}\right) e^{-j k_i r} \quad \text { where } r=\left|\mathbf{r}-\mathbf{r}^{\prime}\right|
\end{aligned}
$$然后将矩阵元素展开为基函数的不同分量的组合,分量作用在平移不变函数上。最终矩阵的所有元素,都有如下形式。这样的形式可以加速边界元矩阵的构造和求解。
$$
\int_{\mathbf{f}m} \int{\mathbf{f}_n} \psi_m(\mathbf{r}) g\left(\mathbf{r}-\mathbf{r}^{\prime}\right) \xi_n\left(\mathbf{r}^{\prime}\right) d \mathbf{r}^{\prime} d \mathbf{r}
$$最终得到:
Here, $x, y, z, x^{\prime}, y^{\prime}, z^{\prime}$ are the Cartesian components of $\mathbf{r}, \mathbf{r}^{\prime}$. Now we have for $i=1,2$ :
$$ \begin{aligned} A_{\mathrm{EJ}, i}^{m n} &= j \omega \mu_i \int_{\mathbf{f}_m} \int_{\mathbf{f}_n} \mathbf{f}_{m x}(\mathbf{r}) \, g_{1, i}\left(\mathbf{r}-\mathbf{r}^{\prime}\right) \, \mathbf{f}_{n x}\left(\mathbf{r}^{\prime}\right) \, d \mathbf{r}^{\prime} \, d \mathbf{r} \\ & \quad + j \omega \mu_i \int_{\mathbf{f}_m} \int_{\mathbf{f}_n} \mathbf{f}_{m y}(\mathbf{r}) \, g_{1, i}\left(\mathbf{r}-\mathbf{r}^{\prime}\right) \, \mathbf{f}_{n y}\left(\mathbf{r}^{\prime}\right) \, d \mathbf{r}^{\prime} \, d \mathbf{r} \\ & \quad + j \omega \mu_i \int_{\mathbf{f}_m} \int_{\mathbf{f}_n} \mathbf{f}_{m z}(\mathbf{r}) \, g_{1, i}\left(\mathbf{r}-\mathbf{r}^{\prime}\right) \, \mathbf{f}_{n z}\left(\mathbf{r}^{\prime}\right) \, d \mathbf{r}^{\prime} \, d \mathbf{r} \\ & \quad – \frac{j}{\omega \varepsilon_i} \int_{\mathbf{f}_m} \int_{\mathbf{f}_n} \nabla \cdot \mathbf{f}_m(\mathbf{r}) \, g_{1, i}\left(\mathbf{r}-\mathbf{r}^{\prime}\right) \, \nabla^{\prime} \cdot \mathbf{f}_n\left(\mathbf{r}^{\prime}\right) \, d \mathbf{r}^{\prime} \, d \mathbf{r} \end{aligned} \tag{S.18} $$
where $\mathbf{f}{m x}, \mathbf{f}{m y}, \mathbf{f}_{m z}$ are the $x, y, z$ components of the vector basis function $\mathbf{f}_m$ . Similarly, we have:
$$ \begin{aligned} & A_{\mathrm{EM}, i}^{m n}=A_{\mathrm{HJ}, i}^{m n}=\int_{\mathbf{f}m} \int{\mathbf{f}n} \mathbf{f}{m z}(\mathbf{r}) g_{2, i}\left(\mathbf{r}-\mathbf{r}^{\prime}\right) \mathbf{f}{n y}\left(\mathbf{r}^{\prime}\right) d \mathbf{r}^{\prime} d \mathbf{r} \\ & -\int{\mathbf{f}m} \int{\mathbf{f}n} \mathbf{f}{m y}(\mathbf{r}) g_{2, i}\left(\mathbf{r}-\mathbf{r}^{\prime}\right) \mathbf{f}{n z}\left(\mathbf{r}^{\prime}\right) d \mathbf{r}^{\prime} d \mathbf{r} \\ & +\int{\mathbf{f}m} \int{\mathbf{f}n} \mathbf{f}{m x}(\mathbf{r}) g_{3, i}\left(\mathbf{r}-\mathbf{r}^{\prime}\right) \mathbf{f}{n z}\left(\mathbf{r}^{\prime}\right) d \mathbf{r}^{\prime} d \mathbf{r} \\ & -\int{\mathbf{f}m} \int{\mathbf{f}n} \mathbf{f}{m z}(\mathbf{r}) g_{3, i}\left(\mathbf{r}-\mathbf{r}^{\prime}\right) \mathbf{f}{n x}\left(\mathbf{r}^{\prime}\right) d \mathbf{r}^{\prime} d \mathbf{r} \\ & +\int{\mathbf{f}m} \int{\mathbf{f}n} \mathbf{f}{m y}(\mathbf{r}) g_{4, i}\left(\mathbf{r}-\mathbf{r}^{\prime}\right) \mathbf{f}{n x}\left(\mathbf{r}^{\prime}\right) d \mathbf{r}^{\prime} d \mathbf{r} \\ & -\int{\mathbf{f}m} \int{\mathbf{f}n} \mathbf{f}{m x}(\mathbf{r}) g_{4, i}\left(\mathbf{r}-\mathbf{r}^{\prime}\right) \mathbf{f}_{n y}\left(\mathbf{r}^{\prime}\right) d \mathbf{r}^{\prime} d \mathbf{r} \end{aligned} \tag{S.19} $$
Lastly, we also have:
$$ \begin{aligned} A_{\mathrm{HM}, i}^{m n} & =-j \omega \varepsilon_i \int_{\mathbf{f}m} \int{\mathbf{f}n} \mathbf{f}{m x}(\mathbf{r}) g_{1, i}\left(\mathbf{r}-\mathbf{r}^{\prime}\right) \mathbf{f}{n x}\left(\mathbf{r}^{\prime}\right) d \mathbf{r}^{\prime} d \mathbf{r} \\ & -j \omega \varepsilon_i \int{\mathbf{f}m} \int{\mathbf{f}n} \mathbf{f}{m y}(\mathbf{r}) g_{1, i}\left(\mathbf{r}-\mathbf{r}^{\prime}\right) \mathbf{f}{n y}\left(\mathbf{r}^{\prime}\right) d \mathbf{r}^{\prime} d \mathbf{r} \\ & -j \omega \varepsilon_i \int{\mathbf{f}m} \int{\mathbf{f}n} \mathbf{f}{m z}(\mathbf{r}) g_{1, i}\left(\mathbf{r}-\mathbf{r}^{\prime}\right) \mathbf{f}{n z}\left(\mathbf{r}^{\prime}\right) d \mathbf{r}^{\prime} d \mathbf{r} \\ & +\frac{j}{\omega \mu_i} \int{\mathbf{f}m} \int{\mathbf{f}n} \nabla \cdot \mathbf{f}_m(\mathbf{r}) g{1, i}\left(\mathbf{r}-\mathbf{r}^{\prime}\right) \nabla^{\prime} \cdot \mathbf{f}_n\left(\mathbf{r}^{\prime}\right) d \mathbf{r}^{\prime} d \mathbf{r} \end{aligned} \tag{S.20} $$
这部分代码在MVProd类中,看不懂也没问题,因为上面都是我瞎写瞎抄的,已经超出图形学的研究范畴了。
另外作者还讨论了EFIE和MFIE的对称性。正是这种对称性使得计算效率和空间利用率更低。注意到:
$$
A_{EJ} = A_{EJ}^T, \quad A_{HM} = A_{HM}^T \tag{19}
$$$$
A_{EM} = A_{EM}^T, \quad A_{HJ} = A_{HJ}^T, \quad A_{EM} = A_{HJ}\tag{20}
$$由于矩阵是对称的,我们不需要计算所有的矩阵元素,也不用存储所有矩阵元素。
在解出表面电流密度后,可以再使用公式(6)来计算从散射表面向外传播的散射场。
3.2 Rough Surface Scattering: The Specifics
在模拟电磁波与粗糙表面之间的相互作用时,表面的不规则几何结构会对散射特性造成显著影响。作者对粗糙表面离散化,将连续的表面划分为多个单元,每个单元都可以应用PMCHWT方程做数值计算的方法。
3.2.1 Rough Surface Samples
将粗糙表面表示为一个二维的高度场(height field),然后将该高度场进行离散化处理,划分为多个矩形单元。
每次模拟只考虑尺寸为 $$L_x \times L_y$$ 的表面样本。并且选择一个步进 $d$ 来定义离散化的网格。
$$
x_s = s \cdot d, \quad s = 0, 1, \ldots, N_x
\
y_t = t \cdot d, \quad t = 0, 1, \ldots, N_y
\tag{21}
$$
其中,$ N_x = L_x / d$ 和 $N_y = L_y / d$ ,分别表示在 $x$ 和 $y$ 方向上被划分成的单元数。在每个离散点 $(x_s, y_t)$ 都有一个高度场 $h(x_s, y_t)$ 函数。作者总结了,粗糙表面的高度变化尺度非常小,通常只有几微米。也就是和可见光电磁波波长相当。
3.2.2 Basis Elements and Functions
每个基元有四个角,每个角有不同的高度,并且每个角对电流磁流贡献都不同。因此在每个小方块上,都定义了四个基函数,近似表示每个小方块上的情况。
在大多数模拟中,步长 $d$ 选取为波长的 $\lambda / 16$ 左右,以确保精度。
每个基元由两个参数 u 和 v 参数化,范围均在 [-1, 1]。
基元的形状通过一个双线性函数 $\mathbf{r}(u, v)$ 来表示,其中 $(s, t)$ 表示当前基元的索引,且基元由四个顶点的坐标决定:
$$ \begin{aligned} \mathbf{r}(u, v) = &\frac{(1 – u)(1 – v)}{4} \mathbf{p}_{s-1, t-1} + \\ &\frac{(1 – u)(1 + v)}{4} \mathbf{p}_{s-1, t} + \\ &\frac{(1 + u)(1 – v)}{4} \mathbf{p}_{s, t-1} + \\ &\frac{(1 + u)(1 + v)}{4} \mathbf{p}_{s, t} \end{aligned} \tag{22} $$其中, $\mathbf{p}{s, t} = (x_s, y_t, z{s, t})$ 是基元的四个顶点坐标。
在每个矩形基元上定义四个基函数 $f_1(u, v), f_2(u, v), f_3(u, v), f_4(u, v)$ ,它们的形式为:
$$
\begin{aligned}
& f_1(u, v) = \frac{(1 – u)}{J(u, v)} \frac{\partial \mathbf{r}(u, v)}{\partial u}, \quad f_2(u, v) = \frac{(1 + u)}{J(u, v)} \frac{\partial \mathbf{r}(u, v)}{\partial u} \\
& f_3(u, v) = \frac{(1 – v)}{J(u, v)} \frac{\partial \mathbf{r}(u, v)}{\partial v}, \quad f_4(u, v) = \frac{(1 + v)}{J(u, v)} \frac{\partial \mathbf{r}(u, v)}{\partial v}
\end{aligned}
\tag{23}
$$
这里的 Jacobian $J(u, v)$ 表示如下:
$$
J(u, v) = \left| \frac{\partial \mathbf{r}(u, v)}{\partial u} \times \frac{\partial \mathbf{r}(u, v)}{\partial v} \right|
\tag{24}
$$
Jacobian 的引入用于转换坐标系并确保基函数在不同的 $u, v$ 方向上具有合适的比例关系。3.2.3 Gaussian Beam Incidence
由于不太了解光学,以下为个人理解。高斯光束是激光发射出去的时候,在行波场中间部分出现往内部凹陷的一种现象,换一句话说高斯光束是描述光在横截面上的能量分布。而平面波和球面波的重点是描述能量传播的方向。在传播过程中,高斯光束的波前形状近似为球面波。
Gouy 相位(Gouy phase)是高斯光束传播中的一种相位延迟效应,光束通过焦点后相位会额外增加。另一方面,高斯光束满足麦克斯韦方程组在傍轴条件下的一个解,可以近似为非均匀的球面波。感觉目前也不用太深入研究。
有关高斯光束的资料:
- https://en.wikipedia.org/wiki/Gaussian_beam
- 激光原理(Principle of Laser)笔记 – Senner的文章 – 知乎
- 高斯光束:基本公式和应用 – 中国光学
- 高斯光束:基本公式和应用 – Andy的文章 – 知乎
- 光子的轨道角动量 – Godfly的文章 – 知乎
回到原论文,高斯光束好处在于可以控制入射场的大小,进而能够控制一个稍微比照射区域大的区域的表面感应电流密度是非零数值。
高斯光束是一种电磁波,其振幅在垂直于传播方向的平面上呈二维高斯分布[Paschotta 2008],它的能量主要集中在光束中心附近。看上方图(a),高斯光束可以用焦平面 $P$ 、中心点 $o$ 、和光束腰径(beam waist) $w$ 来描述。场强随位置的衰减关系为 $e^{-r^2 / w^2}$ ,当距离中心超过 $2.5w$ 时,场强衰减至极小,可认为几乎为零。
虽然但是,高斯光束也具有一定的发散性。发散角 $\theta$ 近似与波长 $\lambda$ 成正比,与光束腰径 $w$ 成反比。公式:
$$
\theta = \frac{\lambda}{\pi \eta w} \tag{25}
$$
当光束斜着射入表面时,高斯光束在焦平面上有一个椭圆形的横截面。如下图所示。在两个垂直方向上有不同的腰斑尺寸(beam waist):一个平行于入射方向和表面法线的平面,另一个与之垂直。为了保证不同方向上的高斯光束在表面上的照射区域相同,这里引入了两个横向方向的束腰宽度:
$$
w_1 = w, \quad w_2 = w \cos \theta_i\tag{26}
$$
即使在不同入射角度下,表面上的照射面积保持一致。这对推导BRDF而言非常重要。4. IMPLEMENTATION AND ACCELERATION
但是如果按上面的方法硬算,是不可能会有结果的。因此需要一些加速手段。
4.1 The Adaptive Integral Method
想要直接计算上面公式(12)的方程组,计算量是不可接受的。
$$ \begin{bmatrix} A_{EJ} & A_{EM} \ A_{HJ} & A_{HM} \end{bmatrix} \begin{bmatrix} I_J \ I_M \end{bmatrix} = \begin{bmatrix} V_E \ V_H \end{bmatrix} \tag{12} $$
按照原本的思路,用 $N$ 个基函数来表示电流磁流密度,矩阵的规模就是 $2N \times 2N$ 。如果直接求解矩阵(LU分解,Cholesky分解等),总复杂度可能在 $\mathcal{O}(N^3)$ 。就算用共轭梯度法总复杂度也在 $\mathcal{O}(N^2)$ 。在一些小规模的仿真中,基函数的规模大概在 $960*960$ ,存储需求大概就在 29.4GB 。用了Adaptive Integral Method, AIM,按8字节来算总存储需求约在 76.8 MB。究竟是什么方法这么神奇呢?小编接下来就带大家一起看看吧!4.1.1 Approximating Matrix Elements
AIM最初是由Bleszynski等人[1996]提出的。AIM的核心思想是将每个基函数的作用近似为一组点源的作用,避免直接计算每一对基函数之间的精确相互作用,同时通过FFT将各基函数的影响传播开来,提升计算效率。
AIM中矩阵元素的计算方式是对矩阵元素的某些项的线性组合来近似计算。这就是为什么在上面公式(13)-(16)后面让读者们进一步推导,推导最终的结果使其符合AIM的形式。
$$
\int_{f_m} \int_{f_n} \psi_m(r) g(r – r{\prime}) \xi_n(r{\prime}) \, dr{\prime} \, dr
\tag{27}
$$
AIM首先会在包含电磁场和场源的空间内创建一个全局3D笛卡尔网格,如下图(6)所示。为了进一步化简公式(27),AIM算法会让原本的基函数近似为在这个三维笛卡尔坐标上一组网格点上的点源。说白了就是连续变离散,并且方便后续FFT。
$$ \psi_m(r) \approx \tilde{\psi}m(r) := \sum{p \in S_m} \Lambda_{mp} \delta^3(r – p) \\ \xi_n(r{\prime}) \approx \tilde{\xi}n(r{\prime}) := \sum{q \in S_n} \Lambda{\prime}_{nq} \delta^3(r{\prime} – q) \tag{28} $$
将公式(27)代入公式(28),换句话说,就是将双重积分的形式转化为了一个双重求和的形式。
$$
\sum{p \in S_m} \sum_{q \in S_n} \Lambda_{mp} g(p – q) \Lambda{\prime}_{nq}
\tag{29}
$$方法详细参考:
Kai Yang and Ali E Yilmaz. 2011. Comparison of precorrected FFT/adaptive integral method matching schemes. Microwave and Optical Technology Letters 53, 6 (2011), 1368–1372.
4.1.2 Base and Correction Matrices
基于公式(29)定义一组基础近似(base approximation)矩阵 $B_{EJ}, B_{EM}, B_{HJ}, B_{HM}$ 作为近似,专门处理距离较远的基函数对。这些矩阵通过引入 $\Lambda$ 矩阵和卷积等操作化简计算。同时,对于距离较近($d_{near}$)的基函数对,再引入修正矩阵(Correction Matrices)来减少误差。 $C_{EJ}, C_{EM}, C_{HJ}, C_{HM}$ 是一种稀疏矩阵,定义如下:
$$ C_{\mathrm{X}}^{m n}=\left\{\begin{array}{ll} A_{\mathrm{X}}^{m n}-B_{\mathrm{X}}^{m n} & d_{m n} \leq d_{\text {near }} \\ 0 & \text { otherwise } \end{array} \quad \mathrm{X} \in\{\mathrm{EJ}, \mathrm{EM}, \mathrm{HJ}, \mathrm{HM}\}\right. \tag{30} $$
$A_X^{mn}$ 是原始矩阵的精确值,而 $B_X^{mn}$ 是基础矩阵的近似值。通过减去基础矩阵的近似值,得到一个较准确的修正项,用于补偿近距离基函数对的误差。
综上所述,AIM方法中每个矩阵的最终近似形式可以写成如下关系:
$$ \begin{aligned} A_{\mathrm{EJ}} \approx B_{\mathrm{EJ}}+C_{\mathrm{EJ}} ; & A_{\mathrm{EM}} \approx B_{\mathrm{EM}}+C_{\mathrm{EM}} ; \\ A_{\mathrm{HJ}} \approx B_{\mathrm{HJ}}+C_{\mathrm{HJ}} ; & A_{\mathrm{HM}} \approx B_{\mathrm{HM}}+C_{\mathrm{HM}} \end{aligned} $$
换句话说,原始矩阵可以通过基础矩阵和修正矩阵的组合来近似。4.1.3 Fast Matrix-Vector Multiplication
快速矩阵-向量乘法(Fast Matrix-Vector Multiplication)是AIM的核心。
由于上面得到的修正矩阵 $C$ 是稀疏矩阵, $C$ 只在近距离的基函数上有非零值,因此矩阵 $C$ 的乘法操作是很快的。
利用基础近似矩阵 $B$ 的卷积特性,计算了矩阵 $B$ 与向量的乘积。计算过程分为三步:
$$
y_1 = \Lambda_2^T x, \quad y_2 = G y_1, \quad y_3 = \Lambda_1 y_2
\tag{32}
$$
第一步把向量投影到一个稀疏矩阵网格上。第二步也是核心步骤,把网格点的数据传播到整个网络,也就是计算每个点对其他点的影响。两个点比较接近,矩阵 $G$ 中的传播函数就大。通过FFT来做加速。
$$
y_2 = \mathcal{F}^{-1} { \mathcal{F}(g) \mathcal{F}(y_1) }
\tag{33}
$$
第三步骤将结果映射回原来的基函数空间。4.2 GPU-Accelerated Iterative Solving
在GPU上将AIM方法中的计算重点转移到快速傅里叶变换(FFT)和稀疏矩阵操作上。总结一下,目前将大型矩阵分为基础矩阵 $B$ 和修正矩阵 $C$ ,分别处理远距离和近距离的基函数对。
- cuFFT:将基础矩阵的乘法操作转换为频域中的卷积计算
- cuSPARSE:算稀疏矩阵加速修正矩阵 C
并且优化计算策略:
- 对于小规模仿真任务,只需要使用1个GPU
- 对于大规模仿真任务,将任务分配到4个GPU
4.2.1 Small-Scale Simulations
对于小规模仿真任务(例如 $12 \mu m \times 12 \mu m$), 必须事先计算并存储传播函数的傅里叶变换值(即矩阵 $G$ 的傅里叶变换)。在小规模任务中稀疏修正矩阵 C 占用的显存不到5GB,一张GPU就可以搞掂。
4.2.2 Large-Scale Simulations
对于大规模仿真任务(例如 $24 \mu m \times 24 \mu m$),由于单个GPU的显存不足以存储所有数据,作者将计算任务分配到4个GPU上。在这个尺度的仿真上,基函数的个数会达到960 × 960个,存储所有修正矩阵的非零元素(包括行列索引和复数浮点数值)大约需要20GB显存。策略还是和小规模一样,每个GPU分配大约5GB内存来存储修正矩阵 $C$ 。
MINRES求解器在主机CPU上执行,而矩阵-向量乘积 $y = Ax$ 的计算在GPU上完成。但是不需要担心传输时间,这个向量大概只有30MB。
4.3 FFT-Accelerated Scattered Field Evaluation
用FFT加速计算散射场。在远场区域上评估从表面散射的场最终求出表面BRDF。
在求解BEM后,得到了表面的电流密度 $\mathbf{J}$ 和磁流密度 $\mathbf{M}$ 。这些密度分布定义了表面上的电磁源,可以用来计算在远场区域上的散射场。公式很简单,随着距离衰弱同时还会具有一定的相位变化:
$$
\mathbf{E_s}(r) \approx \mathbf{E}(\hat{r}) \frac{e^{-jkr}}{r}; \quad \mathbf{H_s}(r) \approx \mathbf{H}(\hat{r}) \frac{e^{-jkr}}{r}
\tag{36}
$$
公式右边的 $\mathbf{E}(\hat{r})$ 和 $\mathbf{H}(\hat{r})$ 是在远场上特定方向 $\hat{r}$ 的振幅。在不同的方向上,散射场的强度可能不同。
$$
\begin{aligned}
F_1(\hat{\mathbf{r}})=\int_V J_x\left(\mathbf{r}^{\prime}\right) e^{j k \mathbf{r}^{\prime} \cdot \hat{\mathbf{r}}} d \mathbf{r}^{\prime} ; & F_2(\hat{\mathbf{r}})=\int_V J_y\left(\mathbf{r}^{\prime}\right) e^{j k \mathbf{r}^{\prime} \cdot \hat{\mathbf{r}}} d \mathbf{r}^{\prime} \\
F_3(\hat{\mathbf{r}})=\int_V J_z\left(\mathbf{r}^{\prime}\right) e^{j k \mathbf{r}^{\prime} \cdot \hat{\mathbf{r}}} d \mathbf{r}^{\prime} ; & F_4(\hat{\mathbf{r}})=\int_V M_x\left(\mathbf{r}^{\prime}\right) e^{j k \mathbf{r}^{\prime} \cdot \hat{\mathbf{r}}} d \mathbf{r}^{\prime} \\
F_5(\hat{\mathbf{r}})=\int_V M_y\left(\mathbf{r}^{\prime}\right) e^{j k \mathbf{r}^{\prime} \cdot \hat{\mathbf{r}}} d \mathbf{r}^{\prime} ; & F_6(\hat{\mathbf{r}})=\int_V M_z\left(\mathbf{r}^{\prime}\right) e^{j k \mathbf{r}^{\prime} \cdot \hat{\mathbf{r}}} d \mathbf{r}^{\prime}
\end{aligned}
\tag{37}
$$
为了避免直接求解这些积分,作者利用先前(4.1.2)对 $\mathbf{J}$ 和 $\mathbf{M}$ 的点源近似($\Lambda$ 矩阵),将每个积分项 $F_i(\hat{r})$ 离散化并重写为傅里叶变换的形式,如公式 (38) 所示:
$$
F_i(\hat{r}) = \sum_{p \in S} h_i(p) e^{jp \cdot k \hat{r}}
\tag{38}
$$
将连续的场强计算转化为离散的求和,这样就可以用FFT快速计算了。并且从上式可以观察到, $F_i(\hat{r})$ 实际上是 $h_i(p)$ 在空间频率 $-k\hat{r}$ 上的傅里叶分量。The required spatial frequencies are not on the FFT grid but can be interpolated; we add zero padding prior to the FFT step, to ensure enough resolution in the frequency domain for the trilinear interpolation to be sufficiently accurate.
5 HIGH RESOLUTION BRDF GENERATION
搞了一大堆,终于回到熟悉的BRDF计算了。这里关键在于使用小尺度模拟的线性叠加来重建大尺度入射场的远场散射,而不是一口吃成大胖子。$N^2$个小尺度的高斯光束构成的网格来线性组合成近似大尺度的入射场。
这里用到“波束引导”(beam steering)技术。这种方法不用对每个方向都进行一次模拟,从而大幅降低计算成本。
5.1 Basic and Derived Incident Directions
首先,沿某方向 $\mathbf{u}$ 传播的 $N^2$ 个高斯光束组成在接收平面的一个 $N \times N$ 点的网格。这些光束组合后能够生成一个大的总场。
然后给每个高斯光束引入复数缩放因子,调整每个光束的相位,进而调整组合场的传播方向,这些方向称为desired direction。
$$
a_{st} = e^{j k \mathbf{p}{st} \cdot \omega_i} \tag{39}
$$当目标入射方向 $-\omega_i$ 与基本方向 $\mathbf{u}$ 之间的夹角接近各高斯光束的发散角(divergence of the small beams)时,aliasing artifacts begin to appear. An example is shown in Fig. 8 (d).
In our framework, we decide on a primary waist w and choose a collection of basic incident directions. In general, 较小的腰宽意味着更大的发散角,这样可以从每个基本方向派生出更多的入射方向,从而减少所需的基本方向数量。较大的腰宽会降低每个高斯光束的发散角,使得组合后的总场发散更小,从而产生更精确的入射方向。
每个六边形的中心对应一个基本入射方向。整个半球的所有入射方向划分为若干territories,每个territories归属于一个基本入射方向。在半球投影中,这种比例关系与余弦因子相互抵消,因此可以使用大小相等的六边形来表示。
对于每个基本方向,可以通过“波束引导”产生一些偏离该基本方向的派生方向。
当光的入射角很小时(例如接近表面法线方向),基本入射方向附近的派生方向范围很小,因为小角度的光更集中,不会有很大的扩散。反之,派生方向范围会更大。总结就是,入射角越大(角度越接近水平),派生方向的覆盖范围就越大。公式作者也提到了:$1/\cos \theta_i$。
5.2 Individual Simulations and Synthesized Results
为了计算BRDF,我们需要知道这个大面积入射光的散射情况。然而,直接模拟这样一个大面积的光会需要很高的计算成本。因此,我们:
使用小尺度模拟的叠加来模拟大尺度入射场。
可以理解为,用很多个小的手电筒(高斯光束)来覆盖一个区域,而不是用一个巨大的探照灯。
首先决定手电筒的尺寸(光束的大小,即腰宽 $w$),并在表面上均匀地分布这些手电筒。写成公式,这个手电筒的排列就是网格点${x_s}, {y_t}$,代表每个高斯光束的中心位置。网格间距一般和腰宽一致,确保光的均匀覆盖,并保持较低的发散角。
让每个高斯光束在其中心区域产生相同的电磁场,只是在不同的位置上重复这一效果。
接下来,想要得到大光束的总散射场,这里需要相位因子来进行“调整”和“叠加”,详细请回看公式(39)。
最终,Combining with Eq. 39, the scattered fields in the far field region corresponding to the pair of directions $(w_i,w_o)$ are given by:
$$ \begin{aligned} \mathbf{E}\left(\omega_i, \omega_o\right) & =\sum_{s=1}^n \sum_{t=1}^n e^{j k \mathbf{p}{s t} \cdot\left(\omega_i+\omega_o\right)} \mathbf{E}{s t}\left(\omega_o\right) \\ \mathbf{H}\left(\omega_i, \omega_o\right) & =\sum_{s=1}^n \sum_{t=1}^n e^{j k \mathbf{p}{s t} \cdot\left(\omega_i+\omega_o\right)} \mathbf{H}{s t}\left(\omega_o\right) \end{aligned} \tag{41} $$
where $\mathbf{E}, \mathbf{H}$ refer to the far field quantities only associated with directions (without the $e^{-j k r} / r$ term).
Lastly, we can compute the surface BRDF value as
$$
f_r\left(\omega_i, \omega_o\right)=\frac{\frac{1}{2}\left|\mathbf{E}\left(\omega_i, \omega_o\right) \times \mathbf{H}\left(\omega_i, \omega_o\right)^*\right|}{\Phi_i \cos \theta_r}
\tag{42}
$$where the incident power $\Phi_i$ is computed by integrating the incident irradiance over the surface:
$$
\Phi_i=\frac{1}{2} \int_S\left|\left[\mathbf{E}_i\left(\mathbf{r}^{\prime}\right) \times \mathbf{H}_i\left(\mathbf{r}^{\prime}\right)^*\right] \cdot \mathbf{n}\right| d \mathbf{r}^{\prime}
\tag{43}
$$where $\mathbf{n}$ is the surface normal at the macro scale ( $+\mathbf{z}$ ). Note that Eq. 42 and Eq. 43 can also be applied in single simulations, where $\Phi_i$ is computed from a single Gaussian beam.