深度学习-梯度下降
反向传播算法 梯度下降及其变体 批量梯度下降 123456789def do_gradient_descent(): w,b,eta,max_epochs = -2,-2,1.0,1000 for i in range(max_epochs): dw,db = 0,0 for x,y in zip(X,Y): dw += grad_w(w,b,x,y) db += grad_b(w,b,x,y) w -= eta*dw b -= eta*db SGD 123456789def do_stochastic_gradient_descent(): w,b,eta,max_epochs = -2,-2,1.0,1000 for i in range(max_epochs): dw,db = 0,0 for x,y in zip(X,Y): dw = grad_w(w,b,x,y) db = grad_b ...
Unity-NGUI之三大基础组件
NGUI概述 NGUI全称 下一代用户界面(Next-Gen UI) 它是第三方提供的Unity付费插件 专门用于制作Unity中游戏UI的第三方工具 相对于GUI它更适用于制作游戏UI功能 更方便使用,性能和效率更高 Root组件 作用 Root是用于 分辨率自适应 的 根对象 可以设置 基本分辨率,相当于设置 UI显示区域 并且管理所有UI控件的 分辨率自适应 可以简单理解 它管理一个 UI画布 所有的UI都是显示在这个画布上的 它会管理 UI画布 和 不同屏幕分辨率的 适应关系 Root参数相关 主要包含三种缩放模式 Flexible 适用于可以手动拖窗口改变分辨率的设备 比如pc端 Constrained 适用于移动设备 因为移动设备都是全屏应用 不会频繁改变分辨率 只用适配不同分辨率的设备 一般使用:横屏勾选 高fit ; 竖屏勾选 宽fit 需要注意的是: 背景图 一定要考虑 极限宽高比来出 最大宽高比 19.9:9 Constrained On Mobiles 是上面两者的综合体 适用于多平台发布的游戏和应用 Panel组件 作用 管理一个UI面 ...
形式语言与自动机
前言 形式语言理论:乔姆斯基发现文法,用文法产生语言的每个句子。 自动机理论:克林建立了有穷状态自动机,为识别语言的系统 文法与自动机是等价的 文法与自动机的运算对象:集合 文法 文法构造 例1 例2 例3 例4 例5 例6 文法分类 标准 例子 线性文法与FA的转换 右线性文法 FA -> 文法 文法 -> FA 左线性文法 FA -> 文法 先预处理 规则: 例子 文法 -> FA 规则 例子 DFA、NFA、ε-NFA转换 ε-NFA -> NFA 前置知识 ϵ−CLOSURE(q0)\epsilon-CLOSURE(q_0)ϵ−CLOSURE(q0) = { p | 从q0q_0q0到ppp有一条标记为ϵ\epsilonϵ 的路} ε-NFA 的 状态转移函数 转换过程 终止状态 F 为 ε-NFA 的 F2 为转化后NFA的 转化后NFA的 转移函数 为 去除 ε列 的 δ^\hat\deltaδ^ 例子 ...
Unity-物理系统之刚体加力
刚体自带添加力的方法 给刚体加力的目标是 让其有一个速度 朝向某一个方向移动 获取刚体组件 1Rigidbody rigidBody = this.GetComponent<Rigidbody>(); 添加力 相对世界坐标 rigidBody.AddForce() 1rigidBody.AddForce(Vector3.forward * 10); 相对本地坐标 rigidBody.AddRelativeForce() 1rigidBody.AddRelativeForce(Vector3.forward * 10); 添加扭矩力 相对世界坐标 rigidBody.AddTorque() 1rigidBody.AddTorque(Vector3.up * 10); 相对本地坐标 rigidBody.AddRelativeTorque() 1rigidBody.AddRelativeTorque(Vector3.up * 10); 直接改变速度 rigidBody.velocity 这个速度方向 是相对于 世界坐标系的 1rigidBody.velocity = Vector ...
Unity-物理系统之射线检测
什么是射线检测 解决以下问题: 鼠标选择场景上一物体 FPS射击游戏(无弹道-不产生实际的子弹对象进行移动) 等需要判断一条线和物体的碰撞情况 它可以在指定点发射一个指定方向的射线 判断该射线与哪些碰撞器相交,得到对应对象 射线对象 单独的射线对于我们来说没有实际的意义,我们需要用它结合物理系统进行射线碰撞判断 3D世界中的射线 参数一:起点 参数二:方向 1Ray r = new Ray(Vector3.right, Vector3.forward); 摄像机发射出的射线 屏幕位置 为起点 摄像机视口方向 为方向 1Ray r2 = Camera.main.ScreenPointToRay(Input.mousePosition); 碰撞检测 API 射线检测也是瞬时的 执行代码时进行一次射线检测 最原始的射线检测 准备一条射线 1Ray r = new Ray(Vector3.zero, Vector3.forward); Physics.Raycast() 参数一:射线 参数二: 检测的最大距离 超出这个距离不检测 参数三:检测指定层级(不填检测所有层) 参数四:是否忽 ...
Unity-物理系统之范围检测
什么是范围检测 游戏中瞬时的攻击范围判断一般会使用范围检测 举例: 玩家在前方5m处释放一个地刺魔法,在此处范围内的对象将受到地刺伤害 玩家攻击,在前方1米圆形范围内对象都受到害 类似这种并没有实体物体 只想要检测在指定某一范围是否让敌方受到伤害时 便可以使用范围判断 范围检测 必备条件:想要被范围检测到的对象必须具备碰撞器 注意点: 范围检测相关API 只有当执行该句代码时 进行一次范围检测 它是瞬时的 范围检测相关API 并不会真正产生一个碰撞器 只是碰撞判断计算而已 盒状范围检测API Physics.OverlapBox() 参数一:立方体中心点 参数二:立方体三边大小 参数三:立方体角度 参数四:检测指定层级(不填检测所有层) 参数五:是否忽略触发器 UseGlobal-使用全局设置 Collide-检测触发器 Ignore-忽略触发器 不填使用UseGlobal 返回值:在该范围内的碰撞器(得到了对象碰撞器就可以得到对象的所有信息) 123456789Collider[] colliders = Physics.OverlapBox(Vector3.zero, ...
Unity-LineRenderer组件
LineRenderer是什么 123456789101112131415161718使用它我们可以在场景中绘制线段,一般可以用于- 绘制攻击范围- 武器红外线- 辅助功能- 其它画线功能## LineRender参数相关- ```Corner Vertices```(角顶点,圆角)此属性指示在一条线中绘制角时使用了多少个额外的顶点增加此值,使**线角看起来更圆**- ```End Cap Vertices```(终端顶点,圆角)终点圆角- 其余重点参数在代码部分介绍## LineRender代码相关- 动态添加一个线段```C#GameObject line = new GameObject();LineRenderer lineR = line.AddComponent<LineRenderer>; 首尾相连 1lineR.loop = true; 开始结束宽 12lineR.startWidth = 0.02f;lineR.endWidth = 0.02f; 开始结束颜色 12lineR.startColor = Color.white;lineR.end ...
Unity-场景异步切换
场景同步切换 SceneManger.LoadScene() 1SceneManger.LoadScene("TestScene"); 场景同步切换的缺点: 因为先删除当前场景中所有对象,且去加载新场景的相关信息,会很耗时,造成卡顿 场景异步切换 SceneManger.LoadSceneAsync() 和资源异步加载几乎一致,有两种方法 通过事件回调函数 异步加载 12345AsyncOperation ao = SceneManger.LoadSceneAsync("TestScene");ao.completed += (a) =>{ print("加载结束");} 通过协程 异步加载 需要注意的是 加载场景会把当前场景上没有特别处理的对象都删除了,所以协程中的部分逻辑执行不了 解决思路: 让处理场景加载的脚本依附的对象 过场景时不被移除 123456789DontDestroyOnLoad(this.gameObject);StartCoroutine(LoadScene(&qu ...
Unity-物理系统之碰撞检测
碰撞和触发响应函数 属于 特殊的生命周期函数 也是通过反射调用 知识点回顾 如何让两个游戏物体之间产生碰撞 – 至少1个刚体 和 两个碰撞器 如何让两个物体之间碰撞时表现出不同效果 – 物理材质 触发器的作用是什么 – 让两个物体碰撞没有物理效果,只进行碰撞处理 物理碰撞检测响应函数 参数 包含了 **碰到自己的对象**的相关信息123456789101112131415- 碰撞对象 的碰撞器 ```collision.collider```- 碰撞对象 的依附对象 ```collision.gameObject```- 碰撞对象 的依附对象的位置 ```collision.transform```- 触碰点 个数 ```collision.contactCount```- 接触点 具体坐标 ```ContactPoint[] pos = collision.contacts;```- 只要得到了 碰撞到的对象的 任意一个信息 就可以得到它的所有信息### 碰撞 接触时 自动执行<font color="green">OncollisionEnter ...
数据库系统5-数据库设计
1 数据库设计概论 数据库设计是指设计数据库应用程序 2 数据库设计的基本步骤 2.1 需求分析 收集用户业务活动及活动数据,由系统分析人员按照分析方法加以总结提炼,描述用户使用中的业务信息 2.2 概念结构设计 将需求分析结果抽象为概念模型的过程,具体内容为建立概念模型(E-R图) 2.3 逻辑结构设计 选择使用的数据模型类型 将E-R图转换为数据模型 对数据模型进行优化 设计子模式 2.4 数据库物理设计 确定数据库的物理结构 对物理结构进行评价,评价的重点是空间和时间效率 若评价结果满足设计要求则进入物理实施阶段 关系数据库物理设计的内容: 为关系模式选择存取方法(建立存取路径) 设计关系、索引等数据库文件的物理存储结构 2.5 数据库实施 用DDL定义数据库结构 组织数据入库 编制与调试应用程序 数据库试运行 2.6 数据库运行和维护 维护工作主要由DBA完成 数据库的转储和恢复 数据库的安全性、完整性控制 数据库性能的监督、分析和改进 数据库的重组织和重构造