- 浏览: 89286 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
lliiqiang:
与客户端交互,必须做到能够让使用者得到相应地服务,真实地获取信 ...
简单TCP网络程序-服务器及客户端交互程序 -
樊明涛:
尝试了以下,还不错,myeclipse下面的updating ...
Myeclipse中关闭updating indexes -
yexin218:
我经历过啊 哈哈http://yexin218.iteye.c ...
等车的滑稽 -
nlslzf:
唉,是啊,受伤害的都是我们这些做事认真,把事情当事情来做的人
是我的错吗?
应用程序
自定义的类dashpolylinet1
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:degrafa="com.degrafa.*" xmlns:paint="com.degrafa.paint.*" xmlns:geometry="com.degrafa.geometry.*" viewSourceURL="srcview/index.html" backgroundColor="#ffffff" xmlns:local="*" creationComplete="inipolyline()" xmlns:text="flash.text.*"> <degrafa:Surface id="asur"> <!-- Creating fills. --> <degrafa:fills> <paint:SolidFill id="blue" color="#62ABCD"/> </degrafa:fills> <!-- Creating Strokes. --> <degrafa:strokes> <paint:SolidStroke id="black" color="#000000" alpha="1" weight="3"/> <paint:SolidStroke id="red" color="#FF0000" alpha="1" weight="3"/> </degrafa:strokes> <!-- Creating Polyline--> <!-- Creating a Geometry Group. --> <degrafa:GeometryGroup x="0" y="0"> <!-- Creating a Polygon. --> <geometry:Polyline stroke="{black}"> <geometry:data>0,0 0,20 20,20 20,40 40,40 40,60</geometry:data> </geometry:Polyline> </degrafa:GeometryGroup> <!--自定义曲线--> <degrafa:GeometryGroup x="0" y="100" id="geopolytl"/> </degrafa:Surface> <mx:Button click="deletepolyline()" label="deletepolyline" x="100" y="0"/> <mx:Script> <![CDATA[ import com.degrafa.GraphicText; import com.degrafa.IGeometry; public function deletepolyline():void { for each(var g:GeometryGroup in asur.graphicsCollection.items) { g.target = null; g.visible = false; for each(var o:IGeometry in g.geometryCollection.items) { o.data = ""; g.geometryCollection.removeItem(o); } g.geometry.length = 0; g = null; } asur.graphicsCollection.items.length = 0; } public function inipolyline():void { var polytl: DashedPolylinetl= new DashedPolylinetl(); polytl.dash=10; polytl.gap=4; polytl.style=2; var datastl:String="0,0 0,20 20,20 20,40 40,40 40,60 60,60 60,0 "; polytl.data=datastl; polytl.colour=0x1f1fd5; geopolytl.geometryCollection.addItem(polytl); } ]]> </mx:Script> </mx:Application>
自定义的类dashpolylinet1
package { import com.degrafa.core.collections.GraphicPointCollection; import com.degrafa.geometry.Polyline; import flash.display.Graphics; import flash.geom.Rectangle; import mx.events.PropertyChangeEvent; public class DashedPolylinetl extends Polyline { /** * 构造函数,其中定义了style属性的change事件 * */ public function DashedPolylinetl(points:Array=null) { super(points); addEventListener(PropertyChangeEvent.PROPERTY_CHANGE,redraw); } /** * commandstack用于存储直线绘制信息,主要是moveto和lineto命令 **/ public var commandstack:Array = new Array(); private var _points:GraphicPointCollection; public var _bounds:Rectangle=new Rectangle(); override public function get points():Array{ if(!_points){_points = new GraphicPointCollection();} return _points.items; } override public function set points(value:Array):void{ if(!_points){_points = new GraphicPointCollection();} _points.items = value; //add a listener to the collection if(_points && enableEvents){ _points.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE,propertyChangeHandler); } invalidated = true; } /** * 计算dashpolyline的外接矩形 **/ private function calcBounds():void{ var boundsMaxX:Number =0; var boundsMaxY:Number =0; var boundsMinX:Number =Number.MAX_VALUE; var boundsMinY:Number =Number.MAX_VALUE; for (var i:int = 0;i< _points.items.length; i++) { boundsMaxX = Math.max(boundsMaxX, _points.items[i].x); boundsMaxY = Math.max(boundsMaxY, _points.items[i].y); boundsMinX= Math.min(boundsMinX, _points.items[i].x); boundsMinY= Math.min(boundsMinY, _points.items[i].y); } _bounds = new Rectangle(boundsMinX,boundsMinY,boundsMaxX-boundsMinX,boundsMaxY-boundsMinY); } public var length:Number; private var _dash:Number; /** * 每段直线的长度,默认值为0 **/ public function get dash():Number { if (!_dash) return 0; return _dash; } public function set dash(value:Number):void { if (_dash != value) { _dash = value; if (gap == 0) gap = value; invalidated = true; } } private var _style:int; public function get style():int { if(!_style) return 0; return _style; } /** * 在style属性change之后分发PropertyChangeEvent事件 **/ public function set style(value:int):void { if(_style != value) { _style=value; invalidated= true; } dispatchEvent(new PropertyChangeEvent(PropertyChangeEvent.PROPERTY_CHANGE,false,false, null,int,null,null,this.style)); } private var _gap:Number; /** *每段直线之间的距离,默认值为0 **/ public function get gap():Number { if (!_gap) return 0; return _gap; } public function set gap(value:Number):void { if (_gap != value) { _gap = value; invalidated = true; } } private var _colour:uint; /** *线的颜色 **/ public function get colour():uint { if (!_colour) return 0; return _colour; } public function set colour(value:uint):void { if (_colour != value) { _colour = value; invalidated = true; } } /** * 用于绘制之前的指令算法存储至commandstack数组中 * 根据style值,重组绘制线的数据; * style=4,线形为直线,无论如何设置dash,gap,都按照原始data两点一连画直线; * style=0,线形为虚线,dash为虚线线段长,gap为虚线间隔,根据二者对原始data进行重组,新的data数据点数大于原始data点个数; * 要保证虚线效果,dash+gap必须小于线任意两点间隔或最小距离两点间的距离 * style=2,线形为虚线并且间隔中有两点,dash为虚线线段长,gap为虚线间隔,根据二者对原始data进行重组,新的data数据点数大于原始data点个数; * 要保证效果,该线形适用于数据点任意两点距离大于20的data,线中dash+gap必须小于线任意两点间隔或最小距离两点间的距离, * gap中画了两个点,其位置和gap,dash都有关系,两点距离为20时,dash=10,gap=10,能看到两点效果;算法需要继续改进 * style=3,线形为虚线并且间隔中有一点,dash为虚线线段长,gap为虚线间隔,根据二者对原始data进行重组,新的data数据点数大于原始data点个数; * 要保证效果,该线形适用于数据点任意两点距离大于20的data,线中dash+gap必须小于线任意两点间隔或最小距离两点间的距离, * gap中画了一个点,其位置和gap,dash都有关系,两点距离为20时,dash=5,gap=5,能看到效果;算法需要继续改进 * style=1,线形为铁路线,算法有问题,无法画出来效果图 **/ override public function preDraw():void { if(invalidated) { super.preDraw(); if(points.length==0){ return;} commandstack.length=0; commandstack.push({type:"m",x:points[0].x+x,y:points[0].y+y}); //如果style=4,即使设置了dash,gap,它们也不起作用 if (style==4) { for (var i:int = 0;i < points.length; i++) { commandstack.push({type:"l",x:points[i].x+x,y:points[i].y+y}); } } else { for (var j:int = 0;j < points.length-1; j++) switch(style) { case 0: addDashCommands0(commandstack, points[j].x+x, points[j].y+y,points[j+1].x+x, points[j+1].y+y); break; case 1: addDashCommands1(commandstack, points[j].x+x, points[j].y+y,points[j+1].x+x, points[j+1].y+y); break; case 2: case 3: addDashCommands2(commandstack, points[j].x+x, points[j].y+y,points[j+1].x+x, points[j+1].y+y); break; default: break; } } /** * 用于封闭的polyline * */ if(autoClose) { commandstack.push({type:"l",x:points[0].x+x,y:points[0].y+y}); } calcBounds(); invalidated = false; } } protected var leftOver:int = 0; protected var leftOverCount:int = 0; /** *绘制虚线的commandstack命令 **/ protected function addDashCommands0(commandstack:Array, x1:int, y1:int, x2:int, y2:int):void { var length:Number = Math.abs(Math.sqrt(Math.pow(x1-x2, 2) + Math.pow(y1-y2, 2))); //线段长度 var count:int = leftOverCount; var currentLength:int = 0; //当前长度 var ratio:Number = 1; //比例 while (currentLength < length) { // 绘制直线 if (count % 2 == 0) { currentLength += dash - leftOver; ratio = Math.min(1,(currentLength / length)); commandstack.push({type:"l",x:x1 + ((x2-x1)*ratio),y:y1 + ((y2-y1)*ratio)}); } else { currentLength += gap - leftOver; ratio = Math.min(1,(currentLength / length)); commandstack.push({type:"m",x:x1 + ((x2-x1)*ratio),y:y1 + ((y2-y1)*ratio)}); } if (currentLength > length) { leftOver = ((count % 2 == 0) ? dash : gap) - (currentLength - length); leftOverCount = count; } else { leftOver = 0; leftOverCount = 0; } count++; } } /** * 绘制铁路线的commandstack命令 **/ protected function addDashCommands1(commandStack:Array, x1:int, y1:int, x2:int, y2:int):void { var length:Number = Math.abs(Math.sqrt(Math.pow(x1-x2, 2) + Math.pow(y1-y2, 2))); //线段长度 var count:int = leftOverCount; var currentLength:int = 0; //当前长度 var ratio:Number = 1; //比例 while (currentLength < length) { // dash if (count % 2 == 0) { currentLength += dash - leftOver; ratio = Math.min(1,(currentLength / length)); commandStack.push({type:"l",x:x1 + ((x2-x1)*ratio),y:y1 + ((y2-y1)*ratio)}); } else { currentLength += gap - leftOver; ratio = Math.min(1,(currentLength / length)); commandStack.push({type:"mm",x:x1 + ((x2-x1)*ratio),y:y1 + ((y2-y1)*ratio)}); } if (currentLength > length) { leftOver = ((count % 2 == 0) ? dash : gap) - (currentLength - length); leftOverCount = count; } else { leftOver = 0; leftOverCount = 0; } count++; } } /** * 绘制单点线或者双点线的commandstack命令 **/ protected function addDashCommands2(commandstack:Array, x1:int, y1:int, x2:int, y2:int):void { length= Math.abs(Math.sqrt(Math.pow(x1-x2, 2) + Math.pow(y1-y2, 2))); //线段长度 var count:int = leftOverCount; var currentLength:int = 0; //当前长度 var ratio:Number = 1; //比例 while (currentLength < length) { // dash if (count % 2 == 0) { currentLength += dash - leftOver; ratio = Math.min(1,(currentLength / length)); commandstack.push({type:"l",x:x1 + ((x2-x1)*ratio),y:y1 + ((y2-y1)*ratio),x0:x2-x1,y0:y2-y1,xd:((x2-x1)*ratio),yd:((y2-y1)*ratio)}); } else { currentLength += gap - leftOver; ratio = Math.min(1,(currentLength / length)); commandstack.push({type:"m",x:x1 + ((x2-x1)*ratio),y:y1 + (y2-y1)*ratio}); } if (currentLength > length) { leftOver = ((count % 2 == 0) ? dash : gap) - (currentLength - length); leftOverCount = count; } else { leftOver = 0; leftOverCount = 0; } count++; } } /** * 根据style参数来绘制不同的线型 **/ private var item:Object; private var lengths:Number; private var sin:Number; private var cos:Number; private var xx0:Number; private var yy0:Number; private var xx:Number; private var yy:Number; private var dx:Number; private var dy:Number; override public function draw(graphics:Graphics,rc:Rectangle):void{ preDraw(); if(!rc) super.draw(graphics,_bounds); else super.draw(graphics,rc); for each (item in commandstack) { graphics.lineStyle(0.1,colour,1); lengths=Math.abs(Math.sqrt(Math.pow(item.x0, 2) + Math.pow(item.y0, 2))) sin=item.x0/lengths;//直线的sin值 cos=item.y0/lengths; //直线的cos值 xx0=item.x+dash*sin/4; //单点直线的x-coordinate起始位置 yy0=item.y+dash*cos/4; //单点直线的y-coordinate结束位置 xx=item.x+dash*sin/2; //双点直线的x-coordinate起始位置 yy=item.y+dash*cos/2; //双点直线的y-coordinate结束位置 dx=(item.x0==0?0:(item.x0)/Math.abs(item.x0));//中间变量,即点的x-coordinate移动距离(取值为0,1,-1) dy=(item.y0==0?0:(item.y0)/Math.abs(item.y0));//中间变量,即点的y-coordinate移动距离(取值为0,1,-1) if(item.type=="m") graphics.moveTo(item.x,item.y); else switch(style) { //绘制虚线的算法 case 0: //绘制实线的算法 case 4: { graphics.lineTo(item.x,item.y); break; } case 1: //绘制铁路线(或者变色线的算法) { //graphics.moveTo(item.x,item.y); if(item.type=="mm") { graphics.lineStyle(1,0xff0000,1,true); graphics.lineTo(item.x,item.y); } else { graphics.lineStyle(1,0x000000,1,true); graphics.lineTo(item.x,item.y); } break; } case 2: //绘制双点线型的算法 { graphics.lineTo(item.x,item.y); if((Math.abs(xx+dx)<=Math.max(Math.abs(item.x),Math.abs(item.x+item.x0-item.xd)))&&(Math.abs(yy+dy)<=Math.max(Math.abs(item.y),Math.abs(item.y+item.y0-item.yd)))) { graphics.moveTo(xx0,yy0); graphics.lineTo(xx0+dx,yy0+dy);//绘制单点,即利用lineto来绘制直线 graphics.moveTo(xx,yy); graphics.lineTo(xx+dx,yy+dy); //绘制双点,即利用lineto来绘制直线 } break; } case 3: //绘制单点线型的算法 { graphics.lineTo(item.x,item.y); //设置线条样式,绘制直线 //判断点的绘制是否执行,当点直线x-coordinate和y-coordinate的起始位置在直线之内则绘制单点 if((Math.abs(xx)<=Math.max(Math.abs(item.x),Math.abs(item.x+item.x0-item.xd)))&&(Math.abs(yy)<=Math.max(Math.abs(item.y),Math.abs(item.y+item.y0-item.yd)))) { graphics.moveTo(xx,yy); graphics.lineTo(xx+dx,yy+dy); //绘制单点,即利用lineto来绘制直线 } break; } } } super.endDraw(graphics); } /** * 当style属性发生change则调用重绘函数,能够及时的响应线型改变进行重绘(由于会产生bug导致暂时屏蔽重绘功能,因为会报ss引用为Null) * */ public function redraw(e:PropertyChangeEvent):void { // draw(ss.graphics,null); } public function commandstackclear():void { } } }
相关推荐
java毕业设计源码,可供参考
Windows下的FRP图形化客户端,对应FRP版本0.61.1,需要64位操作系统
基于优化EKF的PMSM无位置传感器矢量控制研究_崔鹏龙.pdf
旧物置换网站的开发过程中,采用B / S架构,主要使用Java技术进行开发,结合最新流行的springboot框架。中间件服务器是Tomcat服务器,使用Mysql数据库和Eclipse开发 环境。该旧物置换网站包括管理员、用户、卖家。其主要功能包括管理员:首页、个人中心、用户管理、卖家管理、旧物类型管理、旧物信息管理、置换交易管理、系统管理等,卖家后台:首页、个人中心、旧物类型管理、旧物信息管理、置换交易管理。前台首页;首页、旧物信息、网站公告、个人中心、后台管理等,用户后台:首页、个人中心、旧物信息管理、置换交易管理、用户可根据关键字进行信息的查找自己心仪的信息等。 (1)用户功能需求 用户进入前台系统可以查看首页、旧物信息、网站公告、个人中心、后台管理等操作。前台首页用例如图3-1所示。 (2)管理员功能需求 管理员登陆后,主要功能模块包括首页、个人中心、用户管理、卖家管理、旧物类型管理、旧物信息管理、置换交易管理、系统管理等功能。 关键词:旧物置换网站,Mysql数据库,Java技术 springboot框架
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行;功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
航天模拟器文件、蓝图、代码
两级式单相光伏并网仿真研究:MATLAB 2021a版本下的DC-DC变换与桥式逆变技术实现功率跟踪与并网效果优化,基于Matlab 2021a的两级式单相光伏并网仿真研究:实现最大功率跟踪与稳定的直流母线电压,两级式单相光伏并网仿真(注意版本matlab 2021a) 前级采用DC-DC变电路,通过MPPT控制DC-DC电路的pwm波来实现最大功率跟踪,mppt采用扰动观察法,后级采用桥式逆变,用spwm波调制。 采用双闭环控制,实现直流母线电压的稳定和单位功率因数。 并网效果良好,thd满足并网要求,附带仿真说明文件 ,两级式单相光伏并网仿真; MATLAB 2021a; DC-DC变换电路; MPPT控制; 扰动观察法; 桥式逆变; SPWM波调制; 双闭环控制; 直流母线电压稳定; 单位功率因数; 并网效果; THD。,MATLAB 2021a双闭环控制两级式单相光伏并网仿真研究
光伏MPPT仿真研究:光照强度和温度对太阳能电池输出特性的影响及调整策略,助力光伏发电学习。,光伏MPPT仿真研究:光照强度和温度对太阳能电池输出特性的影响及调整策略学习指南,光伏mppt仿真:通过调整太阳光照, 温度等因素 , 光照强度和温度对太阳能电池输出特性的影响。 可用于学习光伏发电 ,光伏MPPT仿真;太阳光照调整;温度影响;光照强度;太阳能电池输出特性。,光伏MPPT仿真:光照与温度对太阳能电池输出特性的影响研究
随着互联网技术的高速发展,人们生活的各方面都受到互联网技术的影响。现在人们可以通过互联网技术就能实现不出家门就可以通过网络进行系统管理,交易等,而且过程简单、快捷。同样的,在人们的工作生活中,也就需要互联网技术来方便人们的日常工作生活,实现工作办公的自动化处理,实现信息化,无纸化办公。 本课题在充分研究了在Springboot框架基础上,采用B/S模式,以Java为开发语言,MyEclipse为开发工具,MySQL为数据管理平台,实现的内容主要包括首页,个人中心,综合管理等功能。
航天模拟器文件、蓝图、代码
西门子Smart PLC四轴搬运取料机案例程序:从新手到项目的跃升之路,西门子Smart PLC四轴搬运取料机运动控制案例程序——PLC通信与伺服电机自动化控制解决方案,西门子200smart运动控制四轴搬运取料机案例程序 该程序为两台smart plc通过通讯控制四轴伺服电机的搬运取料机案例工程案例程序。 包含200smar_PLC程序+项目电气接线图(PDF图纸)+程序流程说明+触摸屏程序(步科) 程序包括伺服电机的启动,停止,原点定位,回归原点,位置控制以及方向控制。 包括了所有控制伺服电机的指令,里面有指令的用法的详细解释和程序说明。 拿来就能用的案例程序,结合程序案例中学习,就会轻松快速的掌握。 让你从新手直接能做项目。 动作流程: 客户上好料盒,M1轴伺服跑到第一片料的位置,气缸将料推出到上位置, M2轴在上料位置取件后移动到直线电机的,加工位置,m2轴上通过有上料下料的气缸, 用真空吸住料后m2轴移动到一个二维平台的加工位置,把带加工的料放到加工位置后, 激光器开始加工,加工完成后,通过M2轴把料取下,移动到成品放料位置,放料后, M3轴将成品料推送到M4
航天模拟器文件、蓝图、代码
基于双碳背景下阶梯式碳交易机制与电制氢的综合能源系统热电优化策略研究与求解分析,基于双碳背景下阶梯式碳交易机制与电制氢的综合能源系统热电优化策略及经济性研究,考虑阶梯式碳交易机制与电制氢的综合能源系统热电优化 “双碳”背景下,为提高能源利用率,优化设备的运行灵活性,进一步降低综合能源系统(IES)的碳排放水平,提出一种IES低碳经济运行策略。 首先考虑IES参与到碳交易市场,引入阶梯式碳交易机制引导IES控制碳排放;接着细化电转气(P2G)的两阶段运行过程,引入电解槽、甲烷反应器、氢燃料电池(HFC)替传统的P2G,研究氢能的多方面效益;最后提出热电比可调的热电联产、HFC运行策略,进一步提高IES的低碳性与经济性。 基于此,构建以购能成本、碳排放成本、弃风成本最小的低碳经济运行目标,将原问题转化为混合整数线性问题,运用CPLEX商业求解器进行求解,通过设置多个运行情景,对比验证了所提策略的有效性。 关键词:氢能;阶梯式碳交易机制;热电比可调;综合能源系统;低碳经济 ,关键词:阶梯式碳交易机制;综合能源系统(IES);热电优化;设备运行灵活性;碳排放水平;电转气(P2G);电解槽;氢
MMC分布式储能系统:实现恒功率与恒电压控制的无缝切换技术,MMC分布式储能系统实现恒功率与恒电压控制的无缝切换技术,mmc分布式储能 恒功率控制 恒电压控制 无缝切 ,核心关键词:MMC分布式储能; 恒功率控制; 恒电压控制; 无缝切换。,MMC分布式储能系统:恒功率与恒电压控制的无缝切换技术
多频多快拍稀疏贝叶斯学习目标方位序贯估计_牛海强.pdf
交错并联Boost PFC仿真电路模型:双闭环控制方式下的输出电压与电感电流优化控制,优良波形及Simulink仿真实现,交错并联Boost PFC仿真电路模型:双闭环控制方式下的电压外环与电感电流内环优化,优质波形表现于Simulink仿真中,交错并联Boost PFC仿真电路模型 采用输出电压外环,电感电流内环的双闭环控制方式 交流侧输入电流畸变小,波形良好,如效果图所示 simulink仿真 matlab simulink仿真模型 无报告哈 ,核心关键词:交错并联Boost PFC仿真电路模型;双闭环控制方式;输出电压外环;电感电流内环;交流侧输入电流畸变小;波形良好;Simulink仿真;Matlab Simulink仿真模型。,基于Simulink仿真的交错并联Boost PFC双闭环控制模型优化研究
基于53#三菱PLC与组态王系统的音乐喷泉控制系统设计与组态设计探讨,基于53#三菱PLC的组态王音乐喷泉控制系统设计与实现:音乐喷泉组态设计的探索与实践,53#三菱PLC和组态王音乐喷泉控制系统设计音乐喷泉组态设计音乐喷泉 ,53#三菱PLC; 组态王音乐喷泉控制系统设计; 音乐喷泉组态设计; 音乐喷泉,三菱PLC与组态王协同音乐喷泉控制系统设计
(要求1)基于随机博弈的无人机集群动态对抗决策.pdf
基于特征值与特征向量的计算,实现MATLAB代码进行参与因子分析研究,特征值与特征向量计算:MATLAB代码实现因子分析的方法与步骤,特征值、左右特征向量计算,参与因子分析MATLAB代码 ,特征值; 左右特征向量计算; 参与因子分析; MATLAB代码,MATLAB中特征值与左右特征向量计算,助力因子分析
基于Matlab的无线充电仿真研究:四套模型解析——LLC谐振恒压输出、LCC-S拓扑磁耦合谐振恒压输出、LCC-P拓扑磁耦合谐振恒流输出及S-S拓扑补偿模型探究,基于Matlab的无线充电仿真研究:四套模型深度解析——LLC谐振器恒压输出与磁耦合谐振无线电能传输技术,无线充电仿真 simulink 磁耦合谐振 无线电能传输 MCR WPT lcc ss llc拓扑补偿 基于matlab 一共四套模型: 1.llc谐振器实现12 24V恒压输出 带调频闭环控制 附参考和讲解视频 2.lcc-s拓扑磁耦合谐振实现恒压输出 附设计过程和介绍 3.lcc-p拓扑磁耦合谐振实现恒流输出 附设计过程 4.s-s拓扑补偿 带原理分析,仿真搭建讲解和参考,可依据讲解自行修改参数建模 四套打包 ,无线充电仿真; Simulink; 磁耦合谐振; 无线电能传输; MCR; WPT; LLC拓扑补偿; LCC-S拓扑; 调频闭环控制; 设计过程; 恒压输出; 恒流输出; 参数建模。,基于Matlab Simulink的无线充电仿真模型:MCR WPT的LLC、LCC-S、LCC-P及S-S拓扑研