方向向量

Ogre旋转物体

匿名 (未验证) 提交于 2019-12-02 23:43:01
2019独角兽企业重金招聘Python工程师标准>>> dest fallbackAxis =Vector3::ZERO ) 该方法用于求解将一个方向向量旋转到另一个方向向量的四元组。有机会看源代码的话应该能够理解,其主要内容就是其他博客里讲解的那些东西。 当然,也可以用vector3的dotProduct()和crossProduct()来自己实现下。 我还真想过自己实现,向量点乘可以求得其夹角,向量叉乘可以获得其旋转前后的向量组成的面的法向量,也就是旋转轴,再加上一些其他的辅助运算,可以实现。 参考: http://gocode.duapp.com/uncategorized/ogre-quaternion/ --EOF-- 转载于:https://my.oschina.net/gongshang/blog/269847 文章来源: https://blog.csdn.net/weixin_34268579/article/details/92050644

Unreal Engine 4 系列教程 Part 10:制作简单FPS游戏

余生颓废 提交于 2019-12-01 19:10:34
/*--> */ /*--> */ 原文: How to Create a Simple FPS in Unreal Engine 4 作者:Tommy Tran 译者: Shuchang Liu 在本篇教程中,将学习创建一个简单的第一人称视角射击游戏。你将学会如何创建一个持枪的第一人称角色,并实现射击其他Actor。 第一人称视角射击游戏(FPS)是一类玩家以游戏角色视角进行射击体验的游戏。FPS游戏非常热门,不乏 使命召唤 和 战地 等大作。 Unreal引擎最开始就是为FPS游戏量身打造的引擎,所以用Unreal引擎制作FPS游戏也是理所当然的事。在本篇教程中,你将学会: 创建能够四处移动的第一人称角色 创建一把枪,绑定在角色身上 使用直线追踪(大家熟知的射线追踪)发射子弹 对Actor扣除伤害 注意: 本篇教程只是Unreal Engine 4系列教程的其中一篇: Part 1: 入门 Part 2: 蓝图 Part 3: 材质 Part 4: UI Part 5: 制作简单游戏 Part 6: 动画 Part 7: 音频 Part 8: 粒子系统 Part 9: AI Part 10: 制作简单FPS游戏 起步入门 下载 示例项目 并解压。进入项目文件夹,双击 BlockBreaker.uproject 打开项目,我们能看到以下场景: 绿色墙上包含着多个目标

OpenGL学习笔记《七》摄像机

♀尐吖头ヾ 提交于 2019-12-01 10:09:40
  在上一篇写opengl坐标系统的文章中,有提到视图空间(View Space),也可以称之为摄像机空间,即从摄像机角度去观察对象。MVP转换矩阵中,上篇文章给了一个简单的视图矩阵(View Matrix)将世界空间坐标转换到视图空间坐标,即相对于摄像机的坐标。   opengl中实际上并没有直接提供摄像机对象,我们是根据一系列的向量运算在游戏空间中创建了一个摄像机对象,并生成对应的视图矩阵(View Matrix)。   创建一个摄像机对象,我们需要构建对应的坐标体系。首先,我们需要知道我们是从哪里观察/用摄像机拍摄,所以需要确定一个摄像机的坐标。在opengl的右手坐标系下,我们先假定摄像机坐标是cameraPos=(0,0,3),即z轴正方向3个单位的位置;确定了摄像机的位置之后,利用 向量减法 ,我们可以从原点出发得到摄像机的方向,cameraDir = vp - vo,不过我们在这里得到的方向其实是摄像机拍摄方向的反反向;   得到了摄像机方向,再利用一个世界空间内相对于原点的单位向量up=(0,1,0),使用 向量叉乘 ,我们可以得到右轴向量,cameraRight = up x cameraDir;   最后,根据摄像机方向,右轴,再使用 向量叉乘 ,我们可以得到上轴向量,cameraUp = cameraDir x cameraRight;   利用上述得到的方向

CSP-S模拟73

房东的猫 提交于 2019-12-01 09:32:11
     T1模拟挂了,T2A了,T3不会~总分100     A. 小P的2048     简单的模拟,注意细节,考试时打挂了,因为大样例非常特殊,它只有0,1,2操作,而我正好right操作打飞了,100->0    B. 小P的单调数列     离散化,倒序枚举,三个树状数组维护最大的单调升序列的和,最大降序列的和,最大一部分上升序列加下降序列的和,转移挺简单的    C. 小P的生成树     最大生成树中的所有向量的和的模长是一个合向量的模长,即所有向量在这个合向量的方向向量上的映射(分向量的模长)之和     我们可以$360^{\Huge。}$枚举无死角所有方向向量,但是这样枚举会有很多(虽然实测0.01度的枚举会非常快)     kurskal有一个性质:生成树的形态只与各边边权的相对大小有关,而与具体权值无关     而对于两个向量,存在一个方向向量使得它两个在这个方向上的投影值相等     那么这个方向向量就将整个$[0,2π]$区间分成了两个部分,一部分向量1投影大,一部分向量2投影大     枚举每两个向量,求出划分的边界,这些方向向量将$[0,2π]$区间划分成若干个小区间,在每一个小区间内这m个向量(边)的相对大小确定,所以直接跑最大生成树即可     具体做法,枚举两个向量$(a,b),(x,y)$,在某一方向向量 $(cosθ,sinθ)$投影相等

导数,方向导数,梯度(Gradient)与梯度下降法(Gradient Descent)的介绍(非原创)

早过忘川 提交于 2019-12-01 02:48:59
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原作者:WangBo_NLPR 原文:https://blog.csdn.net/walilk/article/details/50978864 原作者:Eric_LH 原文:https://blog.csdn.net/eric_lh/article/details/78994461 --------------------- 前言  机器学习中的大部分问题都是优化问题,而绝大部分优化问题都可以使用梯度下降法处理,那么搞懂什么是梯度,什么是梯度下降法就非常重要!这是基础中的基础,也是必须掌握的概念!  提到梯度,就必须从导数(derivative)、偏导数(partial derivative)和方向导数(directional derivative)讲起,弄清楚这些概念,才能够正确理解为什么在优化问题中使用梯度下降法来优化目标函数,并熟练掌握梯度下降法(Gradient Descent)。  本文主要记录我在学习机器学习过程中对梯度概念复习的笔记,主要参考《高等数学》《简明微积分》以及维基百科上的资料为主,文章小节安排如下:  1)导数  2)导数和偏导数  3)导数与方向导数  4)导数与梯度  5)梯度下降法 导数  一张图读懂导数与微分:    这是高数中的一张经典图

Lasso回归算法: 坐标轴下降法与最小角回归法小结

a 夏天 提交于 2019-11-28 11:46:03
Ridge回归 由于直接套用线性回归可能产生过拟合,我们需要加入正则化项,如果加入的是L2正则化项,就是Ridge回归,有时也翻译为岭回归。它和一般线性回归的区别是在损失函数上增加了一个L2正则化的项,和一个调节线性回归项和正则化项权重的系数α。损失函数表达式如下: J(θ)=1/2(Xθ−Y) T (Xθ−Y)+1/2α||θ|| 2 2 其中α为常数系数,需要进行调优。||θ|| 2 为L2范数。Ridge回归的解法和一般线性回归大同小异。如果采用梯度下降法,则每一轮θ迭代的表达式是: θ=θ−(βX T (Xθ−Y)+αθ) 其中β为步长。 如果用最小二乘法,则θ的结果是: θ=(X T X+αE)−1X T Y 其中E为单位矩阵。 Ridge回归在不抛弃任何一个变量的情况下,缩小了回归系数,使得模型相对而言比较的稳定,但这会使得模型的变量特别多,模型解释性差。有没有折中一点的办法呢?即又可以防止过拟合,同时克服Ridge回归模型变量多的缺点呢?有,这就是下面说的Lasso回归。 Lasso回归概述 Lasso回归有时也叫做线性回归的L1正则化,和Ridge回归的主要区别就是在正则化项,Ridge回归用的是L2正则化,而Lasso回归用的是L1正则化。Lasso回归的损失函数表达式如下: J(θ)=1/2n(Xθ−Y) T (Xθ−Y)+α||θ|| 1 其中n为样本个数

PCA的数学原理

↘锁芯ラ 提交于 2019-11-28 04:05:06
原帖地址: http://blog.codinglabs.org/articles/pca-tutorial.html PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。网上关于PCA的文章有很多,但是大多数只描述了PCA的分析过程,而没有讲述其中的原理。这篇文章的目的是介绍PCA的基本数学原理,帮助读者了解PCA的工作机制是什么。 当然我并不打算把文章写成纯数学文章,而是希望用直观和易懂的方式叙述PCA的数学原理,所以整个文章不会引入严格的数学推导。希望读者在看完这篇文章后能更好的明白PCA的工作原理。 数据的向量表示及降维问题 一般情况下,在数据挖掘和机器学习中,数据被表示为向量。例如某个淘宝店2012年全年的流量及交易情况可以看成一组记录的集合,其中每一天的数据是一条记录,格式如下: (日期, 浏览量, 访客数, 下单数, 成交数, 成交金额) 其中“日期”是一个记录标志而非度量值,而数据挖掘关心的大多是度量值,因此如果我们忽略日期这个字段后,我们得到一组记录,每条记录可以被表示为一个五维向量,其中一条看起来大约是这个样子: 注意这里我用了转置,因为习惯上使用列向量表示一条记录(后面会看到原因),本文后面也会遵循这个准则

PCA算法

丶灬走出姿态 提交于 2019-11-28 04:04:48
作者:桂。 时间:2017-02-26 19:54:26 链接: http://www.cnblogs.com/xingshansi/articles/6445625.html 前言 本文为模式识别系列第一篇,主要介绍主成分分析算法(Principal Component Analysis,PCA)的理论,并附上相关代码。全文主要分六个部分展开:   1)简单示例。通过简单的例子,引出PCA算法;   2)理论推导。主要介绍PCA算法的理论推导以及对应的数学含义;   3)算法步骤。主要介绍PCA算法的算法流程;   4)应用实例。针对PCA的实际应用,列出两个应用实例;   5)常见问题补充。对于数据预处理过程中常遇到的问题进行补充;   6)扩展阅读。简要介绍PCA的不足,并给出K-L变换、Kernel-PCA(KPCA)的相关链接。 本文为个人总结,内容多有不当之处,麻烦各位批评指正。 一、简单示例    A-示例1:降维 先来看一组学生的成绩 学生1 学生2 学生3 学生4 ... 学生N 语文成绩 85 85 85 85 ... 85 数学成绩 96 93 78 64 ... 97 为了方便分析,我们假设N=5; 学生1 学生2 学生3 学生4 学生5 语文成绩 85 85 85 85 85 数学成绩 96 93 78 64 97 问题:

OpenGL光照3:光源

六月ゝ 毕业季﹏ 提交于 2019-11-27 15:22:48
本文是个人学习记录,学习建议看教程 https://learnopengl-cn.github.io/ 非常感谢原作者JoeyDeVries和多为中文翻译者提供的优质教程 的内容为插入注释,可以先跳过 投光物(光源) 我们目前使用的光照都来自于空间中的一个点,它能给我们不错的效果,但现实世界中,我们有很多种类的光照,每种的表现都不同 将光 投射 (Cast)到物体的光源叫做投光物(Light Caster),我们将会讨论几种不同类型的投光物,学会模拟不同种类的光源是又一个能够进一步丰富场景的工具 我们首先将会讨论平行光(Directional Light),接下来是点光源(Point Light),它是我们之前学习的光源的拓展,最后我们将会讨论聚光(Spotlight) 之后我们将讨论如何将这些不同种类的光照类型整合到一个 多光源场景 之中 平行光 当一个光源处于很远的地方时,来自光源的每条光线就会近似于互相平行,不论物体和/或者观察者的位置,看起来好像所有的光都来自于同一个方向 当我们使用一个假设光源处于 无限 远处的模型时,它就被称为平行光,因为它的所有光线都有着相同的方向,它与光源的位置是没有关系的。 比如,太阳距离我们并不是无限远,但它已经远到在光照计算中可以把它视为无限远了,所以来自太阳的所有光线将被模拟为平行光线 因为所有的光线都是平行的

OpenGL光照1:颜色和基础光照

这一生的挚爱 提交于 2019-11-27 10:57:19
本文是个人学习记录,学习建议看教程 https://learnopengl-cn.github.io/ 非常感谢原作者JoeyDeVries和多为中文翻译者提供的优质教程 的内容为插入注释,可以先跳过 前言 我们简要提到过该如何在OpenGL中使用颜色(Color),但是我们至今所接触到的都是很浅层的知识,现在我们要更深入地讨论什么是颜色,并且还会为学习光照(Lighting)创建一个场景 颜色 首先你要知道我们一直在使用有限的数值来模拟真实世界中无限的颜色,所以并不是所有现实世界中的颜色都可以用数值来表示的,然而我们仍能通过数值来表现出非常多的颜色,甚至你可能都不会注意到与现实的颜色有任何的差异 颜色可以数字化的由红色(Red)、绿色(Green)和蓝色(Blue)三个分量组成,它们通常被缩写为RGB,仅仅用这三个值就可以组合出任意一种颜色 例如,要获取一个 橙色(Coral) 色的话,我们可以定义这样的一个颜色向量: glm::vec3 coral(1.0f, 0.5f, 0.31f); 我们在现实生活中看到某一物体的颜色并不是这个物体真正拥有的颜色,而是它所反射的(Reflected)颜色,换句话说,那些不能被物体所吸收(Absorb)的颜色(被拒绝的颜色)就是我们能够感知到的物体的颜色 太阳光能被看见的白光其实是由许多不同的颜色组合而成的,看下图