2022年国赛高教杯数学建模B题无人机遂行编队飞行中的纯方位无源定位解题全过程文档及程序

news2024/11/27 13:30:08

2022年国赛高教杯数学建模

B题 无人机遂行编队飞行中的纯方位无源定位

原题再现

  无人机集群在遂行编队飞行时,为避免外界干扰,应尽可能保持电磁静默,少向外发射电磁波信号。为保持编队队形,拟采用纯方位无源定位的方法调整无人机的位置,即由编队中某几架无人机发射信号、其余无人机被动接收信号,从中提取出方向信息进行定位,来调整无人机的位置。编队中每架无人机均有固定编号,且在编队中与其他无人机的相对位置关系保持不变。接收信号的无人机所接收到的方向信息约定为:该无人机与任意两架发射信号无人机连线之间的夹角(如图 1 所示)。例如:编号为 FY01、FY02 及 FY03 的无人机发射信号,编号为FY04 的无人机接收到的方向信息是 𝛼1,𝛼2 和 𝛼3。

在这里插入图片描述
  请建立数学模型,解决以下问题:
  问题 1 编队由 10 架无人机组成,形成圆形编队,其中 9 架无人机(编号 FY01~FY09)均匀分布在某一圆周上,另 1 架无人机(编号 FY00)位于圆心(见图 2)。无人机基于自身感知的高度信息,均保持在同一个高度上飞行。

在这里插入图片描述
  (1) 位于圆心的无人机(FY00)和编队中另 2 架无人机发射信号,其余位置略有偏差的无人机被动接收信号。当发射信号的无人机位置无偏差且编号已知时,建立被动接收信号无人机的定位模型。
  (2) 某位置略有偏差的无人机接收到编号为 FY00 和 FY01 的无人机发射的信号,另接收到编队中若干编号未知的无人机发射的信号。若发射信号的无人机位置无偏差,除 FY00 和 FY01外,还需要几架无人机发射信号,才能实现无人机的有效定位?
  (3) 按编队要求,1 架无人机位于圆心,另 9 架无人机均匀分布在半径为 100 m 的圆周上。当初始时刻无人机的位置略有偏差时,请给出合理的无人机位置调整方案,即通过多次调整,每次选择编号为 FY00 的无人机和圆周上最多 3 架无人机遂行发射信号,其余无人机根据接收到的方向信息,调整到理想位置(每次调整的时间忽略不计),使得 9 架无人机最终均匀分布在某个圆周上。利用表 1 给出的数据,仅根据接收到的方向信息来调整无人机的位置,请给出具体的调整方案。

在这里插入图片描述
  问题 2 实际飞行中,无人机集群也可以是其他编队队形,例如锥形编队队形(见图 3,直线上相邻两架无人机的间距相等,如 50 m)。仍考虑纯方位无源定位的情形,设计无人机位置调整方案。

在这里插入图片描述

整体求解过程概述(摘要)

  本文主要研究无人机纯方位无源定位,建立定位模型和调整方案模型完成有效定位被动接收信号无人机以及进行纯方位无源定位调整工作。
  针对问题一(1),首先根据3架无人机相对位置信息进行分类讨论,再结合正弦定理以及其他几何关系,确定六种定位模型,采用遍历算法,固定一架发射信号无人机,遍历另外两架无人机的相对位置关系,求解每种情况下所有位置上被动接收无人机的实际坐标,输出图解结果,发现定位效果良好,模型合理。
  针对问题一(2),在无人机知道自身编号与其余无人机的相对位置关系的假设条件下,确定位置编号发射信号无人机的相对位置,再推断其准确标号。随后结合问题一(1)定位模型计算被动接受无人机坐标,确定定位是否有效。利用仿真模拟生成的无人机实际坐标样本,验证得仅需通过增加一架无人机发射信号就能够有效定位接受信号无人机位置。
  针对问题一(3),分析给定初始坐标值,调整方案分为三步骤,步骤一:利用问题一(1)的定位模型,调整同一圆周上的三架无人机的相对位置接近理想位置关系。步骤二:以步骤一中三架无人机为参照系,利用问题一(1)的定位模型,调节余下无人机的角度坐标,使之接近理想相对位置,输出角度调节量;步骤三:同步骤二参照基准,建立几何关系模型,调节余下无人机的长度坐标每一步骤都对应各自独立的调整模型,模型求解利用迭代算法进行。通过输出调整后的坐标位置信息,对比初始位置信息确认此方案模型可行、实用。
  针对问题二,将锥形编队分解成多个同心圆的圆形编队,利用问题一(3)中给出的调节方案调整各圆周上无人机,针对特殊点通过共线无人机制定相应的调整方案。

模型假设:

  1、假设无人机发射信号与接收信号稳定不受干扰。
  2、假设忽略被动接受无人机处理信号的时间。
  3、假设每架无人机知道自身编号以及相对位置关系。

问题分析:

  问题一(1)的分析
  问题一首先根据无偏差的位置坐标确定圆周上两架发射信号无人机与单架接收信号无人机的相对位置关系,根据相对位置关系进行定位模型的分流,其中定位模型根据圆周上的三架无人机以及圆心无人机(FY00)之间的几何关系,利用正弦定理建立。最后在此定位模型的框架下,固定一架发射信号无人机位置,遍历第二架发射信号无人机和被动接收信号无人机的无偏位置坐标的所有可能,随机生成无偏坐标基础上的有偏接收无人机坐标值,求解出每一种可能情况下被动接收信号无人机的位置信息。
  问题一(2)的分析
  问题二首先确定来自编号FY01无人机发出的信号,此过程需要圆周上另外的两架无人机。通过两组无人机的三组角度信息确定FY01无人机发出的信息后,再从两架无人机中随机选择一架所提供的角度信息通过几何关系判断发射源与接收源的相对位置(此处假设被动接收信号无人机知道自身编号),根据相对位置的条件再进一步确定未知编号发射信号无人机的编号,从而利用已知的角度信息和坐标信息,代入问题一所得的定位模型,计算出被动接收信号无人机的实际坐标,建立偏差值的范围判定定位有效性,将实际坐标与无偏坐标作差并对比偏差值的范围,得出结论。
  问题一(3)的分析
  问题三首先分析给定的无人机初始位置表,确定基准圆周,本题考虑FY02(ρ2,θ2)、FY05(ρ5,θ5)、FY08(ρ8,θ8)所在半径98m的圆作为调整方案的理想圆周。调整方案大致分为三大步骤:一、θ2、θ5、θ8的调整,使得无人机FY02、FY05、FY08的相对位置接近理想值或达到理想值。二、由步骤一得到θ_2´、θ_5´、θ_8^´将其作为发射信号无人机,且为圆周上的参考系,调整余下圆周上所有无人机的角度坐标θk, ,k=1,3,﹍,9。三、经过前两步骤的调整,此时所有无人机均匀分布在以无人机FY00为圆心的同心圆上,以无人机FY02、FY05、FY08为参照系,利用几何关系调整其余无人机的长度坐标ρk,k=1,3,﹍,9,使得所有无人机均匀分布在半径为98m的圆上。
  问题二的分析
  问题二首先在锥形编队内找出一个无人机,使得以它作为圆心,划分多个同心圆,是尽可能多的无人机的理想坐标在圆周上,此无人机编号确定为FY05,随后分组调整无人机,每组包括的无人机为相互所成圆形编队的无人机,最后套用问题一(3)的方案模型,对各个圆形编队的无人机进行调整。唯一单独考虑的无人机编号为FY11和FY15,采用调整位置后的两组共线发射信号的无人机与FY05所成的角度信息的变化关系进去制定调整方案。

模型的建立与求解整体论文缩略图

在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

程序代码:(代码和文档not free)

import numpy as np
import matplotlib.pyplot as plt 
import pandas as pd 
import warnings

#wanings.filterwarnings(‘ignore’)
plt.reParams[‘font.sans-serif’]=[‘SimHei’]  #用来正常显示中文标签 plt.rcParams[‘axes.unicode_minus]=False  #用来正常显示负号

class B_1_cls:
def_init_(self)
self.theta_rad=None 
self.theta_deg=None 
self.r=None
self.all_color=['b','e','g','k','m','y',' purple']
self.color=None
self.counter=0  #计时器,画图用
def_mid_k_funcself,theta_i, theta_j,theta_k_true):
        “””
此时k在中间,偏差为+-1
“””
Theta_rad=None 
Theta_deg=None 
r = None 
color=None
if theta_i-theta_k_true<180 and theta_k_true-theta_i<180:
alpha_i=(180-theta_k_true+theta_i)/2
alpha_i=np.arange(alpha_i-1,alpha_i+1,0.1) 
alpha_j=(180+theta_k_true-theta_j)/2
alpha_j=np.arange(alpha_j-1,alpha_j+1,0.1)
#print(alpha_i)
#print(alpha_j)
#print(alpha_i.shape)

fenzi=np.sin(np.radians(alpha_j+theta_j))*np.sin(np.radians(alpha_i))+np.sin
np.radians(-alpha_i+theta_i))*np.sin(np.radians(alpha_j))
fenmu=np.cos(np.radians(alpha_j+theta_j))*np.sin(np.radians(alpha_i))+np.cos(np.radians(-alpha_i+theta_i))*np.sin(np.radians(alpha_i))

theta_rad=np.array(pd.Series(np.arctan(fenzi/fenmu)).map(lambdax:x if x>0 else x+np.pi))
theta_deg=np.rad2deg(theta_rad)
r=100*np.sin(np.radians(180-theta_j+theta_deg-alpha_i))/np.sin(np.radians(alpha_j))

#print("================")
#print(theta_deg)
#print(r)
#print("================")
#print(theta_deg shape)
#print(r.shape)
#print("theta为:{}".format(theta_deg))
#print("r 为:{}".format(r))
elif theta_j-theta_k_true> 180 and theta_k_true-theta_i<180:
alpha_i=(180-theta_k_true+theta_i)/2


alpha_i=np.arange(alpha_i-1,alpha_i+1,0.1)
alpha_j=(-180-theta_k_true+theta_j)/2
alpha_j=np.arange(alpha_j-1,alpha_j+1,0.1)

fenzi=np.sin(np.radians(-alpha_j+theta_j))*np.sin(np.radians(alpha_i))-np.sin(np.radians(-alpha_i+theta_i))*np.sin(np.radians(alpha_j))
fenmu=np.cos(np.radians(-alpha_j+theta_i))*np.sin(np.radians(alpha_i))-np.cos(np.radians(-alpha_i+theta_i))*np.sin(np.radians(alpha_j))

theta_rad=np.array(pd.Series(np.arctan(fenzi/fenmu)).map(lambda x:x if x>0 else x+np.pi))

theta_deg=np.rad2deg(theta_rad)
#print("======================")
#print(theta_deg)
#print("======================")
r=100*np.sin(np.radians(-180-theta_deg+theta_j-alpha_j))/np.sin(np.radians(alpha_j))

elif theta i-theta ktrue<180 and theta ktrue-thetai>180
alpha_i=(-180+theta ktrue-theta_i)/2
alpha_i=np.arange(alpha_i-1alpha_i+1,0.1) 
alpha_j=(180+theta_k_true-theta_j)/2
alpha_j=np.arange(alpha_j-1alpha_j+1,0.1)

fenzi=np.sin(np.radians(alpha_i+theta i))*npsin(npradians(alpha_j))-np.sin(np.radians(alpha_j+theta_j))*np.sin(np.radians(alpha_i))
fenmu=np.cos(np.radians(alpha_i+theta_i))*np.sin(np.radians(alpha_j))np.cos(np.radians(alphaj+theta_j))*np.sin(np.radians(alpha_i))

theta_rad=nparray(pd.Series(nparctan(fenzifenmu))map(lambda x:x+np.pi if x>0 else x+2*np.pi))
theta_deg=np.rad2deg(theta_rad)
r=100*np.sin(np.radians(180+theta_deg-theta_j-alpha_j cr/np.sin(np.radians(alpha_i))

#print"===============”)

#print(theta_deg)
#print(r)
#print("=====================")

return theta_rad, theta_deg. r

def right or left kfunc(selftheta itheta jtheta k true)
“””
此时k在两边偏差为+-1
“””
theta_rad=None 
theta deg=None 
r=None
if theta_k_true-theta_j<180 and theta_k_true-theta_i<180
alpha_i=(180-theta_k_true+theta_i)/2
alpha_i=np.arange(alpha_i-1alpha_i+1,0.1) 
alpha_j=(180-theta ktrue+theta_i)/2
alpha_j=np.arange(alpha_j-1alpha_j+1,0.1)

fenzi=np.sin(np.radians(alpha_j-theta_j))*np.sin(np.radians(alpha_i))-np.sin(np.radians(alpha_i-thetai))*np.sin(np.radians(alpha_i))
fenmu=np.cos(np.radians(alpha_i-theta_i))*np.sin(np.radians(alpha_i))-np.cos(np.radians(alpha_j-theta_i))*np.sin(np.radians(alpha_i))

theta_rad=np.array(pd.Series(np.arctan(fenzi/fenmu)).map(lambda x:x if x>0 else x+np.pi))
theta_deg=np.rad2deg(theta_rad)

r=100*np.sin(np.radians(-theta_j+theta_deg+alpha_j))/ np.sin(np.radians(alpha_j))

elif theta_k_true -theta_j<180 and theta_k_true-theta_i>180:

alpha_i=(-180+theta_k_true-theta_i)/2
alpha_i=nparange(alpha_i-1alpha_i+1,0.1)
alpha_j=(180-theta_k_true+theta_i)/2
alpha_j=np.arange(alpha_j-1alpha_j+1,0.1)

fenzi=np.sin(np.radians(-alpha_j+theta_j))*np.sin(np.radians(alpha_ i))+np.sin(np.radians(alpha_i+theta_i))*np.sin(np.radians(alpha_j))
fenmu=np.cos(np.radians(alpha_i+theta_i))*np.sin(np.radians(alpha _j))+np.cos(np.radians(alpha_j-theta_j))*np.sin(np.radians(alpha_i))

theta_rad=np.array(pd.Series(np.arctan(fenzi/fenmu)).map(lambda x:x+np.pi if x>0 else x+2*np.pi))
theta_deg=np.rad2deg(theta_rad)
r=100*np.sin(np.radians(theta_deg-theta_j+alpha_j)) / np.sin(np.radians(alpha_j))
elif theta_k_true-theta_j>180 and theta_k_true-theta_i>180:

alpha_i=(-180+theta_k_true-theta_i)/2
alpha_i=np.arange(alpha_i-1alpha_i+1,0.1) 
alpha_j=(-180+theta_k_true-theta_j)/2
alpha_j=nparange(alpha_j-1alpha_j+1,0.1)

fenzi=npsin(np.radians(alphaj+thetaj))*np.sin(np.radians(alpha i))- np.sinnp.radians(alpha i+theta i))*np.sin(np.radians(alpha j))
fenmu=npcos(np.radians(alphaj+thetaj))*np.sin(np.radians(alpha i))-np.cos(np.radians(alpha_i+theta_i))*np.sin(np.radians(alpha j))

theta_rad=np.array(pd.Series(np.arctan(fenzi/fenmu)).map(lambda x:x+np.pi if x> 0 else x+ 2* np.pi))
theta deg=np.rad2deg(theta_rad)

r=100*np.sin(np.radians(-180+theta_deg-theta_i-alpha_i))/ np.sin(np.radians(alpha_j))

return theta_rad, theta_deg, r

def polar_plot(self):
Qi=0

Qj=np.arange(40,360,40)

Qk=np.arange(40,360,40)

for i, j in enumerate(Qj):
ax=plt.subplot(2,4,i+1,projection=’polar’) 

self.theta_rad=np.array([])
self.theta_deg=np.array([])
self.r=np.array([]) 
self.color=nparray([]) 
self.counter=0 
for k in Qk:
if k ==j:
continue 
else:
if j> k:

theta_rad, theta_deg,temp_r=self. __mid_k_func(Qi,j,k) 
self.theta_rad=np.hstack([selftheta radtheta rad]) 
self.theta deg=nphstack([selftheta degtheta deg]) selfr=np.hstack([selfr,temp_r]) self.color=np.hstack(
[self.color,np.array([selfallcolor[self.counter] for_in range(theta rad.shape[0])))
elif j< k:

theta rad theta degtempr=self. right or left k func(Qi,j.k) 
self.theta rad=nphstack([selftheta radtheta rad) 
selftheta deg=np.hstack([selftheta degthetadeg]) selfr=np.hstack([selfr,temp_r]) 

self.color=np.hstack(
 [self.color,np.array ( [self.all color[selfcounter] for_in range(theta_radshape[0])])])
self.counter+=1
#print(self.theta_deg)
# print(selfr)
#print(“==========================”)
#print(“==========================”) #print(“==========================”)

#画图
# ax.scatter(self.theta_rad,selfrlabel=’定点i极坐标’, s=10,c=self.color ax.scatter(self.theta_rad,self.r,s=10,c=self.color) 
ax.set_rlim(0,105)
ax.scatter(Qi,100,s=100,c=Y,marker=*)
if i== 0:
ax.scatter(np.radians(j),100,s=100,c=’r’,marker=*,labe=’发射信号无人机极坐标’)
ax.legend(bboxto anchor(551.35))
#ax legend(bbox to anchor(01.35))
ax.scatter(np.radians(j),10s=100c=,marker*)
#plt.title("极坐标图",loc='left') 
plt.show()
# @classmethod
Def b_2(self,j,k)
return self. __mid_k_func(O,j.k) if j>k else selfright or left k func(0,j,k)

if_name__==main_
b_1=B_1_cls0) 
b_1.polar plot()

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

win10录屏软件哪个好用?强烈推荐这3款!

案例&#xff1a;想要录制我的电脑屏幕&#xff0c;但是不知道如何选择合适的录屏工具&#xff0c;有没有好用的win10录屏软件&#xff1f; 【我想找一款好用的win10录屏工具&#xff0c;录制我的电脑屏幕&#xff0c;但是找了很久还没有找到&#xff0c;大家有好用的录屏软件…

Kibana:使用 Kibana 自带数据进行可视化(二)

在今天的练习中&#xff0c;我们将使用 Kibana 自带的数据来进行一些可视化的展示。希望对刚开始使用 Kibana 的用户有所帮助。这个是继上一篇文章 “Kibana&#xff1a;使用 Kibana 自带数据进行可视化&#xff08;一&#xff09;” 的续篇。 前提条件 如果你还没有安装好自己…

占据80%中国企业出海市场,亚马逊云科技如何为出海客户提供更多资源和附加值

亚马逊云科技就可以做到&#xff0c;作为占据80%中国企业出海市场的亚马逊云科技&#xff0c;其覆盖全球的业务体系&#xff0c;从亚马逊海外购、亚马逊全球开店、亚马逊智能硬件与服务&#xff0c;Amazon Alexa&#xff0c;Amazon Music都是属于亚马逊云科技“梦之队”的一员。…

【Android】WMS(二)Window的添加

软件盘相关模式 在 Android 应用开发中&#xff0c;软键盘的显示与隐藏是一个经常出现的问题&#xff0c;而 WindowManager 的 LayoutParams 中定义的软键盘相关模式则为开发者提供了一些解决方案。 其中&#xff0c;SoftInputMode 就是用于描述软键盘的显示方式和窗口的调整…

【LeetCode】HOT 100(6)

题单介绍&#xff1a; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的题目&#xff0c;适合初识算法与数据结构的新手和想要在短时间内高效提升的人&#xff0c;熟练掌握这 100 道题&#xff0c;你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…

python包装与授权

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

ai聊天对话工具哪种好用?这些ai对话聊天工具不要错过

在如今信息爆炸的时代&#xff0c;人工智能技术正在逐渐渗透到我们的生活和工作中。ai对话聊天技术作为其中的一项重要应用&#xff0c;吸引了越来越多的关注。但是&#xff0c;ai对话聊天技术并不是万能的&#xff0c;它需要一定的技巧和策略才能真正发挥其价值。那么&#xf…

CAN总线转串口

一、CAN总线在工程机械中的广泛应用 随着科技的进步和现代施工项目大型化的要求,新一代工程机械需要实现集成化操作和智能控制。CAN总线是国际上应用最广泛的现场总线之一。CAN总线以其高可靠性、实时性、无破坏仲裁、多主等特性&#xff0c;已广泛应用于工程机械中&#xff0c…

这里推荐几个前端动画效果网站

1. AnimistaAnimista 是一个 CSS 动画/转场库和在线工具。它有许多现成的 CSS 动画片段可以直接使用,也可以在线定制动画。 网站地址:Animista - On-Demand CSS Animations Library 2. Animate.cssAnimate.css 是一个免费的 CSS 动画库,里面有 Attention Seekers 、 Bouncing E…

【Java|多线程与高并发】线程安全问题以及synchronized使用实例

文章目录 1. 前言2. 线程安全问题演示3.线程安全问题的原因4.synchronized关键字5. 总结 1. 前言 Java多线程环境下&#xff0c;多个线程同时访问共享资源时可能出现的数据竞争和不一致的情况。 线程安全一直都是一个令人头疼的问题.为了解决这个问题,Java为我们提供了很多方式…

MySQL为什么有了redolog还需要double write buffer?

MySQL为什么有了redolog还需要double write buffer&#xff1f; 问题 我们知道MySQL InnoDB引擎使用redolog作为异常容灾恢复的机制&#xff0c;当MySQL进程发生异常退出、机器断电等&#xff0c;在重新启动时&#xff0c;使用redolog恢复。 OK&#xff0c;redolog是被MySQL…

进程同步与进程通信(#include <windows.h>)

目录 实验二 进程同步与进程通信 一、实验目的 二、实验内容 任务一、进程同步与互斥 任务二、进程通信 实验二 进程同步与进程通信 备注&#xff1a;大二&#xff08;下&#xff09;操作系统实验二 一、实验目的 掌握基本的同步与互斥算法&#xff0c;理解P&#xff…

移植蓝牙芯片后,PCM 无声音问题记录

背景:投影仪项目上的蓝牙模组本地已经验证ok,送到客户那里发现HFP打电话没声音。 1. 客户平台是3566,android 11的环境, 该环境下其他的模组是可以的 2. 在3566上安装QQ, 波通VOIP电话后, 无阴影, 3. 通过示波器接收pcm 无波形输出, 问题分析查证 1.查看HCI log ,…

【LeetCode热题100】打卡第17天:接雨水全排列旋转图像

文章目录 【LeetCode热题100】打卡第17天&#xff1a;接雨水&全排列&旋转图像⛅前言 接雨水&#x1f512;题目&#x1f511;题解 全排列&#x1f512;题目&#x1f511;题解 旋转图像&#x1f512;题目&#x1f511;题解 【LeetCode热题100】打卡第17天&#xff1a;接雨…

Elasticsearch 中文分词器

IK 分词器 我们在ES中最常用的中文分词器就是IK分词器&#xff0c;其项目地址为&#xff1a;https://github.com/medcl/elasticsearch-analysis-ik 下载安装 下载地址&#xff1a; https://github.com/medcl/elasticsearch-analysis-ik/releases 下载时注意和es的版本对应&a…

Network 之十二 iPXE 源码、编译过程、Linker tables 机制、移植新驱动、固件使用

最近&#xff0c;正在学习 iPXE 源码&#xff0c;于是开始各种 Google 查找 iPXE 的资料进行学习。以下就是学习过程中一些感觉比较重要的点&#xff0c;特此记录&#xff0c;以备后续查阅。 起源 上世纪 90 年代初&#xff0c;网卡开始在其扩展卡上包含启动 ROM&#xff0c;每…

2023-6-9-一天一种设计模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

当在浏览器截屏过曝时,应该采取的措施

一、问题来源 屏幕打开了HDR模式后&#xff0c;浏览器在截图的一瞬间出现色彩错误 正常情况如下&#xff1a; HDR截图过曝后如下&#xff1a; 二、解决方法 1. 关闭屏幕HDR模式 桌面右键显示设置关闭HDR选项 2. 修改浏览器选项 地址栏输入 edge://flags&#xff08;Edg…

【Spring框架】初识Spirng

目录 Spring是什么&#xff1f;什么是容器&#xff1f;什么是IoC&#xff1f;传统开发ioc 开发(控制反转式程序开发) DI(依赖注入) Spring是什么&#xff1f; Spring指的是Spring Framework(Spring框架)&#xff0c;它是一个开源框架&#xff0c;有着活跃而庞大的社区&#xf…

支持无线连接的头戴式耳机,双音腔结构很好听,雷柏VH800上手

平时在PC上玩游戏&#xff0c;除了键鼠一类的操控设备很重要之外&#xff0c;耳机等音频设备也很重要&#xff0c;我用的是头戴式耳机&#xff0c;这种耳机现在有无线版本&#xff0c;用起来很方便&#xff0c;而且延迟很低&#xff0c;可以带来更好的声画同步效果&#xff0c;…