从实际代码出发了解量子相位估计算法的原理

news/2024/5/5 22:16:44/文章来源:https://blog.csdn.net/Chahot/article/details/129986422

量子相位估计(Quantum Phase Estimation, QPE)是一种用于测量一个量子态的相位的算法。QPE算法的核心是一个相位估计电路,其中包含了一系列Hadamard变换、控制相位旋转门和逆量子傅里叶变换等量子门。其中,控制相位旋转门是QPE算法的重要组成部分,而T门是最常用的控制相位旋转门之一。通过施加T门,我们可以将任意一个量子态的相位旋转一个固定的角度θ=π/4\theta = \pi/4θ=π/4。因此,在量子相位估计中,我们可以将待求相位所对应的幂级数展开,然后利用控制相位旋转门,将待求相位所对应的相位旋转成一个能够处理的角度。然后,我们可以通过逆量子傅里叶变换将相位转化为一个整数,从而得到待求相位。

1.准备量子态:我们首先需要准备一个包含待求相位的量子态。这个量子态可以是一个本征态,或者是通过量子相位估计算法中的特定构造方法得到的量子态。

2.施加Hadamard变换:对于一个n比特的量子态,我们需要施加n个Hadamard变换,将这些量子比特转化为等概率分布的态。

3.控制相位旋转门:接下来,我们需要施加控制相位旋转门,将待求相位所对应的幂级数展开成一个相位旋转角度。在QPE算法中,最常用的控制相位旋转门是T门,它可以将相位旋转一个角度θ=π/4\theta = \pi/4θ=π/4

4.逆量子傅里叶变换:接下来,我们需要进行逆量子傅里叶变换,将测量结果转化为一个整数,从而得到待求相位的近似值。

通过上述步骤,我们可以利用T门和其他量子门实现量子相位估计,从而求解许多重要的量子计算问题,例如求解Shor算法中的大数分解问题等。

在量子相位估计算法中,我们需要使用Controlled Unitary门将待求本征态的相位信息编码到辅助量子比特中。这个Controlled Unitary门由一个控制量子比特和一个目标量子比特组成,其中目标量子比特是待求本征态,控制量子比特用于施加一个相位旋转门。
相位估计算法的基本原理是利用量子相干性质,在不同的本征值上给辅助量子比特施加不同的相位旋转,使得最终测量结果可以反映出待求本征态的相位信息。我们将使用一个包含多个控制T门的量子电路,其中控制量子比特是辅助量子比特,目标量子比特是待求本征态的量子比特。这个电路会在辅助量子比特上施加一系列不同的相位旋转,使得待求本征态的相位信息被编码到辅助量子比特上。然后,我们测量辅助量子比特的状态,从而可以得到待求本征态的相位信息。相位估计算法是量子计算中的重要算法之一,它可以应用于许多领域,例如化学计算、密码学和优化问题等。

Controlled Unitary

Controlled Unitary是一种量子门,它是一个控制门和一个单量子比特门的组合。在这个代码中,Controlled Unitary是一个由控制量子比特和目标量子比特组成的控制门和T门组合构成的门,它用于量子相位估计算法(QPE)中的第二步。这个Controlled Unitary门的作用是在目标量子比特上施加一个相位旋转门,其旋转角度取决于控制量子比特的状态。
在这个代码中,我们使用for循环实现了这个Controlled Unitary门。我们对辅助量子寄存器qr_aux中的每个量子比特进行迭代,使用嵌套的for循环对不同的二进制位进行迭代。对于每个二进制位,我们将辅助量子比特和本征量子比特作为控制门和目标门,然后使用cp门(控制相位门)施加一个相位旋转门。其中,旋转角度是π/4,即T门的旋转角度。
这个Controlled Unitary门的作用是在量子相位估计算法中的第二步,将待求本征态的相位信息编码到辅助量子比特中。在这个步骤中,我们将目标量子比特设置为待求本征态,将辅助量子比特设置为控制量子比特,并使用Controlled Unitary门在待求本征态上施加一个相位旋转门。这个门的作用是将待求本征态的相位信息编码到辅助量子比特上,使得待求本征态的相位可以通过测量辅助量子比特的状态来获取。
本征态是指一个量子系统在特定测量下得到确定结果的量子态。对于一个已知的本征态,我们可以通过相位估计算法来计算其对应的本征值。在量子计算中,我们需要将本征态从∣0⟩|0\rangle∣0转换为∣1⟩|1\rangle∣1,使用X门可以实现这一转换。我们需要将∣0⟩|0\rangle∣0取反,即X∣0⟩=∣1⟩X|0\rangle=|1\rangleX∣0=∣1,以便后续使用量子相位估计算法。在QPE算法中,我们需要将辅 助量子比特制备成所有可能的本征值的叠加态,这样我们就可以对待求本征态的相位进行估计。将辅助量子比特制备成叠加态的方法是在辅助量子比特上应用Hadamard门,这将使辅助量子处于叠加态中,其中|0⟩和|1⟩表示辅助量子比特的两个基态。

# Code for QPE with T-gate (θ=0.001 base 2)
qr_aux = QuantumRegister(3, 'aux')
qr_eigen = QuantumRegister(1, 'eigen')
cr = ClassicalRegister(3, 'aux_read')qc = QuantumCircuit(qr_aux, qr_eigen, cr)# Prepare eigenstate
qc.x(qr_eigen)
qc.barrier()# QPE - step 1: Superposition
qc.h(qr_aux)
qc.barrier()# QPE - step 2: Controlled Unibary
for idx in np.arange(len(qr_aux)):for digit in np.arange(2**idx): qc.cp(np.pi/4, qr_aux[idx], qr_eigen)
qc.barrier()# QPE - step 3: Inverse QFT
qft_dagger(qc, len(qr_aux))
qc.barrier()# QPE - step 4: Measurement
qc.measure(qr_aux, cr)qc.draw()

由于电路图特别长,这边就不上图了。使用这个方法我们就可以通过测量辅助比特(3位)来估计特征值(0~7)范围内的一个整数。
结果如下

这个值是三个辅助比特的测量结果,可以用来估计特征值。
在这里插入图片描述

在量子相位估计算法中,我们需要将一个控制相位门(UUU门)作用于一个特定的特征态上,以获取该特征态的相位信息。该特征态由一个特征向量和相应的特征值所定义。

在这个示例中,我们已经将特征向量 ∣1⟩|1\rangle∣1 准备好,并将其存储在名为 qr_eigen 的量子寄存器中。我们将施加控制相位门 U=e2πiθ=eiπTU=e^{2\pi i \theta} = e^{i\pi T}U=e2πiθ=eT 来准备特征态,并使用 nnn 个辅助量子比特来估计相位角度 θ\thetaθ。在 QPE 算法中,我们需要对这 nnn 个辅助比特进行测量,以获得一个 nnn 位的二进制测量结果。将这些测量结果解释为一个 nnn 位二进制数,并将其除以 2n2^n2n,就得到了一个估计的相位 θ~\tilde{\theta}θ~。这个相位 θ~\tilde{\theta}θ~ 与特征值之间存在某种关系,这种关系取决于所用的特征向量和相应的特征值。

在这个例子中,我们在 ∣1⟩|1\rangle∣1 上施加了 TTT 门,TTT 门的特征值为 eiπ/4e^{i\pi/4}e/4,因此在我们的量子电路中,特征值的相位是 eiπ/4e^{i\pi/4}e/4。注意到 eiπ/4e^{i\pi/4}e/41/2(1+i)1/\sqrt{2}(1+i)1/2(1+i) 的值是等价的。这是因为 eiθ=cos⁡(θ)+isin⁡(θ)e^{i\theta} = \cos(\theta) + i\sin(\theta)eiθ=cos(θ)+isin(θ),所以 eiπ/4=cos⁡(π/4)+isin⁡(π/4)=1/2(1+i)e^{i\pi/4} = \cos(\pi/4) + i\sin(\pi/4) = 1/\sqrt{2}(1+i)e/4=cos(π/4)+isin(π/4)=1/2(1+i)。这是欧拉公式的结果,将复指数函数与三角函数联系起来。因此,我们可以将 eiπ/4e^{i\pi/4}e/4 表示为 1/2(1+i)1/\sqrt{2}(1+i)1/2(1+i),这意味着我们的估计值实际上是对特征向量 ∣1⟩|1\rangle∣1∣+⟩|+\rangle+ 的线性组合的估计,其中 ∣+⟩|+\rangle+ 是一个等概率的叠加态,即 ∣+⟩=1/2(∣0⟩+∣1⟩)|+\rangle = 1/\sqrt{2}(|0\rangle + |1\rangle)+=1/2(∣0+∣1⟩)。这样,我们就可以将估计值解释为特征向量 ∣1⟩|1\rangle∣1 的贡献和特征向量 ∣+⟩|+\rangle+ 的贡献的加权平均值,其中 ∣1⟩|1\rangle∣1 的贡献系数是 1/21/\sqrt{2}1/2∣+⟩|+\rangle+ 的贡献系数是 1/21/\sqrt{2}1/2。因此,估计值与特征向量 ∣1⟩|1\rangle∣1 的关系是一个线性组合的形式。其中,θ\thetaθ 是通过相位估计获得的特征值的相位。这个线性组合的系数正是特征向量 ∣1⟩|1\rangle∣1 的系数。12\frac{1}{\sqrt{2}}21∣0⟩|0\rangle∣0 的系数,eiθe^{i\theta}eiθ∣1⟩|1\rangle∣1 的系数。因此,估计值 θ\thetaθ 可以视为特征向量 ∣1⟩|1\rangle∣1∣+⟩|+\rangle+∣−⟩|-\rangle 基础上的线性组合系数。因为特征向量 ∣1⟩|1\rangle∣1 是由 ∣+⟩|+\rangle+∣−⟩|-\rangle 通过 HHH 门的作用得到的。∣1⟩=(∣0⟩−∣1⟩)/2=(∣+⟩−∣−⟩)/2|1\rangle=(|0\rangle-|1\rangle)/\sqrt{2} = (|+\rangle-|-\rangle)/\sqrt{2}∣1=(∣0∣1⟩)/2=(+⟩)/2。因此,我们可以将估计值写为 ∣1⟩|1\rangle∣1∣0⟩|0\rangle∣0 的线性组合形式,即 ∣ψ⟩=α∣0⟩+β∣1⟩|\psi\rangle = \alpha|0\rangle + \beta|1\rangleψ=α∣0+β∣1,其中 α\alphaαβ\betaβ 分别为估计值对应的二进制小数的整数和分数部分。

根据之前的计算,特征值的相位为 eiπ/4e^{i\pi/4}e/4。因为测量结果为 001001001,这相当于将二进制小数 0.0010.0010.001 转化为十进制数,即 0×2−1+0×2−2+1×2−3=0.1250\times 2^{-1}+0\times 2^{-2}+1\times 2^{-3}=0.1250×21+0×22+1×23=0.125。由于相位为 eiπ/4e^{i\pi/4}e/4,因此可以将其表示为 ei(2π)(1/8)=eiπ/4e^{i(2\pi)(1/8)}=e^{i\pi/4}ei(2π)(1/8)=e/4,与之前计算的相位相同。这里的0.001是指以二进制表示时,角度为11000\frac{1}{1000}10001,也就是对应的特征值相位为2π212≈0.001\frac{2\pi}{2^{12}}\approx0.0012122π0.001. 而001则是指最终测量结果,表示的是三个辅助比特的测量值。
在这个例子中,我们通过将辅助比特的测量结果转换为一个二进制小数来估计特征值。如果我们得到测量结果 ∣b2b1b0⟩|b_2 b_1 b_0\rangleb2b1b0,那么我们可以将它转换为十进制小数 b221+b122+b023\frac{b_2}{2^1}+\frac{b_1}{2^2}+\frac{b_0}{2^3}21b2+22b1+23b0

在本例中,测量结果为 ∣001⟩|001\rangle∣001,因此我们可以将它转换为 021+022+123=0.125\frac{0}{2^1}+\frac{0}{2^2}+\frac{1}{2^3}=0.125210+220+231=0.125。而这个值与 2π×0.125=0.25π2\pi\times0.125=0.25\pi2π×0.125=0.25π 相差一个常数因子,因此最终特征值的相位为 ei0.25π=22+22ie^{i0.25\pi}=\frac{2}{\sqrt{2}}+\frac{2}{\sqrt{2}}iei0.25π=22+22i


这个公式是量子相位估计算法的输出状态表示。在量子相位估计算法中,首先准备一个初始状态
∣ψ⟩=12(∣0⟩+∣1⟩)|\psi\rangle=\frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)ψ=21(∣0+∣1⟩),并在第一个比特上施加 TTT 门,得到状态 12(∣0⟩+eiπ/4∣1⟩)\frac{1}{\sqrt{2}}(|0\rangle+e^{i\pi/4}|1\rangle)21(∣0+e/4∣1⟩)。施加 TTT 门相当于在 Bloch 球上沿着 zzz 轴旋转了 π/4\pi/4π/4 的角度。我们先考虑 ∣0⟩|0\rangle∣0,它在 Bloch 球上的表示是一个指向 +z+z+z 方向的矢量。施加 TTT 门相当于将 Bloch 球上的 zzz 轴旋转了 π/4\pi/4π/4 的角度,此时矢量指向 xxxzzz 的正半轴的平面内,即 12(∣0⟩+∣1⟩)\frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)21(∣0+∣1⟩)。对于 ∣1⟩|1\rangle∣1,它在 Bloch 球上的表示是一个指向 −z-zz 方向的矢量,而在 Bloch 球上进行 π/4\pi/4π/4zzz 轴旋转后,矢量指向的是 −x-xxzzz 的负半轴的平面内,即 −i12(∣0⟩−∣1⟩)-i\frac{1}{\sqrt{2}}(|0\rangle-|1\rangle)i21(∣0∣1⟩)。因此,TTT 门的作用将 ∣0⟩|0\rangle∣0∣1⟩|1\rangle∣1 线性组合,得到了 12(∣0⟩+eiπ/4∣1⟩)\frac{1}{\sqrt{2}}(|0\rangle+e^{i\pi/4}|1\rangle)21(∣0+e/4∣1⟩) 这个状态。在初始状态 ∣0⟩|0\rangle∣0 上施加 TTT 门,得到的新状态可以表示为 ∣0⟩|0\rangle∣0∣1⟩|1\rangle∣1 的线性组合。其中,∣0⟩|0\rangle∣0 的系数为 12\frac{1}{\sqrt{2}}21∣1⟩|1\rangle∣1 的系数为 eiπ/4⋅12e^{i\pi/4}\cdot\frac{1}{\sqrt{2}}e/421,即 ∣1⟩|1\rangle∣1 在新状态中的权重是一个复数,其相位为 π/4\pi/4π/4。因此,TTT 门的作用是将 ∣0⟩|0\rangle∣0∣1⟩|1\rangle∣1 线性组合,得到了 12(∣0⟩+eiπ/4∣1⟩)\frac{1}{\sqrt{2}}(|0\rangle+e^{i\pi/4}|1\rangle)21(∣0+e/4∣1⟩) 这个状态。
然后,将 nnn 个辅助比特初始化为 ∣0⟩|0\rangle∣0,并将它们与第一个比特通过控制 U2kU^{2^k}U2k 门相互作用。这个过程最终得到的输出状态为
∣ψ⟩=12nΣk=02n−1eiθk∣k⟩|\psi\rangle=\frac{1}{\sqrt{2^n}}\Sigma_{k=0}^{2^n-1}e^{i\theta_k}|k\rangleψ=2n1Σk=02n1eiθkk
其中 θk\theta_kθk 表示特征向量 ∣u⟩|u\rangleu 和控制相位门 U2kU^{2^k}U2k 的特征值的相位。根据这个公式,如果只有一个控制相位门作用于 ∣ψ⟩|\psi\rangleψ,那么 ∣ψ⟩|\psi\rangleψ 可以写成如下形式:
∣ψ⟩=12(∣0⟩+eiθ∣1⟩)|\psi\rangle=\frac{1}{\sqrt{2}}(|0\rangle+e^{i\theta}|1\rangle)ψ=21(∣0+eiθ∣1⟩)
其中,θ\thetaθ 为控制相位门作用后的特征向量 ∣1⟩|1\rangle∣1 的特征值的相位。因此,当只有一个控制相位门作用时,最终的输出状态可以表示为
∣ψ⟩=12(∣0⟩+eiπT∣1⟩)|\psi\rangle=\frac{1}{\sqrt{2}}(|0\rangle+e^{iπT}|1\rangle)ψ=21(∣0+eT∣1⟩)

其中,TTT 为控制相位门的矩阵,eiπTe^{i\pi T}eT 为特征值的相位。
当不止一个控制相位门时,我们使用的公式如下:
∣ψ⟩=12n/2Σk=02n−1e2πiθk∣k⟩⊗∣ψ⟩|\psi\rangle=\frac{1}{2^{n/2}}\Sigma_{k=0}^{2^n-1}e^{2πi\theta_k}|k\rangle \otimes |\psi\rangleψ=2n/21Σk=02n1e2πiθkkψ
根据量子力学的原理,对于一个 nnn 量子比特的纠缠态,其总幅值必须是 111,因此每个基态的系数是 12n=12n/2\frac{1}{\sqrt{2^n}} = \frac{1}{2^{n/2}}2n1=2n/21。因此,在上述公式中,系数为 12n/2\frac{1}{2^{n/2}}2n/21。在量子相位估计算法中,kkk 表示控制门 U2kU^{2^k}U2k,其中 UUU 是待估计相位的幺正门。我们将 UUU 控制在 n−k−1n-k-1nk1 个辅助比特上,以获得有关相位 θ\thetaθ2n−k−1θ2^{n-k-1}\theta2nk1θ 的估计值。因此,kkk 取值范围为 [0,n−1][0, n-1][0,n1]。在量子相位估计算法中,k表示辅助比特测量结果的二进制位数,从0开始编号。当我们对辅助比特进行测量,并将测量结果转换为一个二进制小数时,k表示二进制小数中的小数点后第k位。

然后是量子傅里叶变化的逆:
∣ψ⟩=12nΣxΣke−2πik(x−2nθ)2n∣x⟩⊗∣ψ⟩|\psi\rangle=\frac{1}{2^{n}}\Sigma_x\Sigma_{k}e^{\frac{-2πik(x-2^n\theta)}{2^n}}|x\rangle \otimes |\psi\rangleψ=2n1ΣxΣke2n2πik(x2nθ)xψ
其中x=2nθx=2^n\thetax=2nθ是最有可能的输出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_282440.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI绘画热点模型大汇总,让你一次用个够

AI绘画热点模型大汇总,让你一次用个够 前段时间,在利用ControlNet重新定义你的AI姿势中提到了如何利用快捷方式节省谷歌硬盘,由于目前收集到的模型站点涉及的模型较少,且缺少lora模型。因此寻思着自己是不是也可以做一些热点模型…

【stable-diffusion】4090显卡下dreambooth、lora、sd模型微调的GUI环境安装(cuda驱动、pytorch、xformer)

相关博文 stable-diffusion-webui的基础功能手动安装,了解代码结构、依赖、模型出处 安装成功结果 主要参考 cuda11.7下载-https://developer.nvidia.com/cuda-toolkit-archivecudnn8.6 for 11.x : https://developer.nvidia.com/rdp/cudnn-archivedreambooth\lora…

Spring实战(开发Web应用)

开发Web应用展现信息构建领域类创建控制器类设计视图处理表单提交校验表单输入声明校验规则在表单绑定的时候执行校验展现校验错误视图控制器选择视图模板库小结展现信息 Taco Cloud是一个可以在线订购taco的地方。 Taco Cloud允许客户展现其创意, 能够让他们通过丰…

单点登录的认证过程,我拿到票据了, 可以卖肉了吗?

我拿到票据了, 可以卖肉了吗? SSO: 只能买一两, 不能再多了 单点登录的认证过程是如何的, 比方说单点登录服务D, 子系统A和B, A B D和浏览器之间是如何通信的 以下是单点登录(SSO)过程的详细步骤: 用户尝试访问子系统A。子系统A检查用户是否…

洛谷B2037奇偶数判断

洛谷B2037 题目描述 给定一个整数,判断该数是奇数还是偶数。如果 n 是奇数,输出 odd;如果 n 是偶数,输出 even。 输入格式 输入仅一行,一个整数 n。 输出格式 输出仅一行,如果n 是奇数,输出 o…

二分查找(二)

2.练习题 3) 力扣https://leetcode.cn/problems/search-in-rotated-sorted-array-ii/这题需要分三种情况,第一种是区间有序,正常二分查找,第二种是区间 被旋转,左区间的值大于右区间,需要比较目标值和左区…

如何计算和提高客户生命周期价值 (LTV)

客户生命周期价值(LTV或 CLV)是衡量客户在其生命周期内为企业带来的总价值的关键指标。在电子商务中,LTV在决定企业的健康和成功方面起着至关重要的作用。LTV越高,业务的盈利能力和可持续性就越高。最常见的 LTV公式:L…

iphone distribution

未受信任的企业级开发者 通用 - VPN与设备管理 显示你下载的APP列表,点击进入 点击【信任xxxxx】

codeblocks20.3配置wxWidget3.2.2.1

codeblocks20.3 # 英文版自带gcc810,不汉化 wxWidget3.2.2.1 github下载源码 win11专业版 1.下载wxWidget3.2.2.1 源码 2.下载后解压到一个目录中,不要含中文和空格。我放在:d:\wxWidget3.2.2.1 3.打开终端cd build/msw 4.编译wxWidgets 为 …

多重背包问题 二进制优化 java 路径记录

多重背包---二进制拆分---java小知识_java多重背包问题_m78星云杰克的博客-CSDN博客 应该可以使用完全背包问题的记录路径的方法,例如,使用二维数组记录,记录当前硬币需要多少个

音视频骚操作,FFmpeg 如何播放带「图片」的 M3U8 视频,IJKPlyaer 适配非标 TS 文件

如果看到一个需要播放的视频链接显示是一张图片,你会不会感觉有点懵?如果这张图片写着 png,然后实际格式是 bmp ,你会不会更懵了?如果这个 bmp 还做了加密篡改呢?今天我们要聊的就是这样一个充满骚操作的音…

css三角和css 用户见面样式,vertical-align 属性应用,溢出的文字省略号显示,常见布局技巧

目录 3.CSS三角 4.CSS 用户界面样式 4.1什么是界面样式 4.2轮廓线 outline 4.3 防止拖拽文本域 resize 5.vertical-align 属性 5.1图片,表单都属于行内块元素,默认的vertical-align 是基线对齐。 5.2解决图片底部默认空白缝隙问题 6.溢出的文字省略号显示 1.单…

linux centos7 查看端口占用命令netstat 报错提示 –bash:netstat:未找到命令解决方法

今天在一台centos7上用netstat命令看端口占用情况,提示 –bash:netstat:未找到命令: 解决方法: 输入 yum search ifconfig 查看这个命令是在 net-tools.x86_64里的: 然后安装这个包,输入 yum install net-tools 安装&…

ERTEC200P-2 PROFINET设备完全开发手册(2-1)

2. 入门指导:第一个PN IO设备 开发之前的准备,需要的软件: TIA Portal V16、V17串口终端软件 (MobaXterm或Putty或TeraTerm)Win10 并且安装64位JAVA运行环境J-Link的驱动软件Proneta(推荐使用) 需要准备的硬件 性能…

通信算法之130:软件无线电-接收机架构

1. 超外差式接收机 2.零中频接收机 3.数字中频接收机

洛谷B2033A*B问题

洛谷B2033 题目描述 输入两个正整数A 和B,求 AB 的值。注意乘积的范围和数据类型的选择。 输入格式 一行,包含两个正整数 A 和B,中间用单个空格隔开。1≤A,B≤50000。 输出格式 一个整数,即AB 的值 代码: #include&…

MySQL-双主高可用

目录 🍁拓扑环境 🍁配置两台MySQL主主同步 🍃修改MySQL配置文件 🍃配置主从关系 🍃测试主主同步 🍁keepalived高可用 🍃keepalived的安装配置 🍃master配置 🍃slave配置 …

Aurora 64B/66B 协议介绍

简介 Aurora 是一个用于在点对点串行链路间移动数据的可扩展轻量级链路层协议。这为物理层提供透明接口,让专有协议或业界标准协议上层能方便地使用高速收发器。虽然使用的逻辑资源非常少,但 Aurora 能提供低延迟高带宽和高度可配置的特性集。 特性&…

凹凸/法线/移位贴图的区别

你是否在掌握 3D 资产纹理的道路上遇到过障碍? 不要难过! 许多刚接触纹理或 3D 的艺术家在第一次遇到凹凸贴图(Bump Map)、法线贴图(Normal Map)和移位贴图(Displacement Map)时通常…

React class组件和hooks setState异步更新数据详解

一、 class组件setState详解 1.class组件setState异步更新数据详解 class Father extends React.Component{state {num:0}addHandler () > { this.setState({num: 100})console.log(state中的值,this.state.num)}render() { return (<div><button onClick{this…