- 博客(48)
- 资源 (22)
- 收藏
- 关注
原创 Games101 作业1提高 绕任意向量旋转
数学还是很重要呀,决定温习手推一把绕任意过原点的向量旋转的旋转矩阵,做个小记录。在正式推导前,先给出绕不同轴旋转的旋转矩阵,以方便代入,直接截取101课程中的截图(3个矩阵的推导比较容易,这里就不展开):下面进入推导流程:设目标轴向量p⃗\vec{p}p为(u,v,w)(u,v,w)(u,v,w), 旋转θ\thetaθ角度,处理分为6步:Step 0. 为方便计算,将向量[公式]归一化,得到[公式]Step 1. 将向量绕z轴旋转到xz平面,旋转矩阵为:定义 d为归一化向量p⃗\v
2021-05-23 22:44:41
724
原创 Games101 Win环境搭建
跟风学习一把games101,确实很好的课程,温故而知新。把一些课程和作业中的心得做个分享。课程本身提供了一个虚拟环境供使用,但公司不允许使用虚拟机,只能额外配置一下了。过程参考了链接所需的环境主要为:eigenopencv为了简化配置流程,采用了Win10 + Visual Studio 2019 + vcpkg的方式。安装cmake安装下载链接安装vcpkggit clone https://github.com/microsoft/vcpkg.\vcpkg\bootstr
2021-05-23 22:36:51
1876
1
原创 Games101 作业5 求解一元二次方程
Games101 作业5 易惑点1求解一元二次方程在Ray Tracing的第一份作业中,源码中有一段计算一元二次方程的代码,与数学中的求解公式略有不同,这里做一些解释,以方便有同样疑惑的童鞋可以参考:bool solveQuadratic(const float &a, const float &b, const float &c, float &x0, float &x1){ float discr = b * b - 4 * a * c;
2021-05-23 22:20:10
311
原创 Mac 域名解析不了,能ping通ip,但ping不通网址
重装mac系统后遇到一个奇怪的现象,部分网址浏览器可以访问,但却ping不通,但ping ip又能ping通。检查DNS设置似乎也正确,最后通过如下方式解决:打开终端,输入:sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistsudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
2021-04-26 23:11:35
7404
1
原创 法向量转换
法向量转换对于顶点的转换相对直接,可以通过model,view,projection三次转换得到转换结果。法向量一般会在view space进行计算,那么直接进行如下计算是否正确呢?normalview=view∗model∗normalmodelnormal_{view} = view * model * normal_{model}normalview=view∗model∗normalmodel答案是否定的,一旦缩放不是等比例的,转换后的法向量也将不再垂直于表面。T、R、S详细说明T
2021-04-25 15:55:24
1356
原创 Unity Reflection Probe 烘焙Skybox时的模糊问题
Unity Reflection Probe 烘焙Skybox时的模糊问题我们有时候会利用Reflection Probe来烘焙一个Cubemap出来,然后赋给Material作为天空盒填入Lighting设置中,但默认的流程会出现一个奇怪的现象:画面存在一些模糊感,如下图:此时只需要更改下bake出来的cubemap的一个参数,将Mapping _ ConvolutionType改成Non...
2020-01-31 18:13:04
1799
1
原创 Win10无法搜索应用解决
Win10无法搜索应用解决发现Win10重装后,出现无法搜索已安装应用的情况,哪怕重建了索引、或者打开了Windows Search的服务,均无效,网上的方法主要是:在powershell输入Get-AppXPackage -Name Microsoft.Windows.Cortana | Foreach {Add-AppxPackage -DisableDevelopmentMode -R...
2018-12-05 12:20:37
5585
原创 Octave Plot无反应 解决方案
Octave Plot无反应 解决方案学NG的课程时,plot函数调用总是卡死,研究发现了以下解决方案:尝试 指令 setenv('GNUTERM','qt') or setenv('GNUTERM','x11')若无效则重新安装gnuplot brew reinstall gnuplot --with-qt进 Octave安装路径 例如: /usr/local/Cellar...
2018-08-08 14:21:02
2740
原创 xcode安装simulator失败解决方法
xcode安装simulator失败解决方法众所周知因为某墙,我们下载国外的一些资源总是比较困难,每次出来一个新版本的ios版本后我们都要在xcode中更新simulator,但由于网络问题常常下载一会后就超时,或者安装失败,我经过研究总结了一套最有效的方法:打开xcode——preference——downloads;打开osx的console,点击清除显示,以方便定位;回到xcode的do
2017-05-27 17:42:34
5053
2
原创 Unity导入HoloToolkit时报错error CS0227
在开发HoloLens时一般会导入一个HoloToolkit包来协助开发,但导入时会报一个错:“error CS0227: Unsafe code requires the `unsafe’ command line option to be specified”,解决方案如下:在工程的Assets目录下,创建两个文件:“csc.rsp”,“smcs.rsp”,用记事本打开,分别都输入:-uns
2016-09-08 10:09:15
4191
原创 Win10安装.net3.5 出现错误代码0x800f0922 解决方法
Win10安装.net3.5 出现错误代码0x800f0922 解决方法看到很多人在Win10/Win8上安装.net 3.5都会报这个错,然而网上的答案并不靠谱,所以笔者这里提供一个正确的打开方式。 1. 按Win+X——程序和功能——左侧的启用或关闭功能 2. 去掉.net 4.6的勾选,点确定,等待完成 3. 重复第1步,勾选.net 3.5,点确定,等待完成 4. 重复第1步,勾选.
2016-07-29 14:57:58
35746
6
原创 Unity 5 physX CPU 水印去除
Unity 5 physX CPU 水印去除笔者发现Unity 5版本中(Nvidia显卡的机器)容易出现physics cpu的水印,去除方式如下: 打开Nvidia控制面板——上方工具栏中点击“3D设置”——不勾选“显示physX视觉指示器” 即可。
2016-07-28 16:29:42
5122
转载 C++ Union
转自:点击打开链接联合(union)在C/C++里面见得并不多,但是在一些对内存要求特别严格的地方,联合又是频繁出现,那么究竟什么是联合、怎么去用、有什么需要注意的地方呢?就这些问题,我试着做一些简单的回答,里面肯定还有不当的地方,欢迎指出!1、什么是联合?“联合”是一种特殊的类,也是一种构造类型的数据结构。在一个“联合”内可以定义多种不同的数据类型, 一个被说明为该“联合
2016-07-24 23:44:53
250
转载 c printf格式总结
转自:点击打开链接1.调用格式为 printf("格式化字符串>", 参量表>); 其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出; 另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个规定字符, 用来确定输出内容格式。参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多, 各参数之间用","分开, 且顺序一一对应
2016-07-24 23:00:39
578
转载 java final和static的区别
转自:点击打开链接一、final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。 final类不能被继承,没有子类,final类中的方法默认是final的。 final方法不能被子类的方法覆盖,但可以被继承
2016-06-02 15:43:29
410
原创 微软笔试-Professor Q's Software
时间限制:10000ms单点时限:1000ms内存限制:256MB描述Professor Q develops a new software. The software consists of N modules which are numbered from 1 to N. The i-th module will be started up by sig
2016-03-24 20:49:35
343
原创 微软笔试-Divisors
时间限制:10000ms单点时限:1000ms内存限制:256MB描述Given an integer n, for all integers not larger than n, find the integer with the most divisors. If there is more than one integer with the same
2016-03-24 14:56:30
458
转载 钻石型继承模型的内存分布
转自:点击打开链接 并更正一个小错误以及增加了自己的一些理解关于C++对象内存布局的资料和书籍也有很多,比如陈皓老师的博客:1、C++对象的内存布局(上)2、C++对象的内存布局(下)白杨:RTTI、虚函数和虚基类的实现方式、开销分析及使用指导左手为你画猜:C++类对象内存模型与成员函数调用分析(上、中、下)关于讲解C++对象内存模
2016-03-13 21:31:08
1139
转载 c++合成默认构造函数
转自:点击打开链接对于C++默认构造函数,我曾经有两点 误解 :类如果没有定义任何的构造函数,那么编译器(一定会!)将为类定义一个合成的默认构造函数。合成默认构造函数会初始化类中所有的数据成员。第一个误解来自于我学习C++的第一本书 《C++ Primer》,在书中392页: “只有当一个类没有定义构造函数时,编译器才会自动生成一个默认构造函数” 。实际上这句话也没
2016-03-09 20:10:10
459
转载 c++ string和char* char[]的互转
转自:点击打开链接string 与char* char[]之间的转换,有需要的朋友可以参考下。1、首先必须了解,string可以被看成是以字符为元素的一种容器。字符构成序列(字符串)。有时候在字符序列中进行遍历,标准的string类提供了STL容器接口。具有一些成员函数比如begin()、end(),迭代器可以根据他们进行定位。注意,与char*不同的是,s
2016-02-26 10:41:58
7259
1
转载 c++编译器何时会生成默认构造函数
转自:点击打开链接默认的构造函数是指为所有参数都提供了默认值的构造函数,通常是指无参的构造函数。比如下面的类Test,它的默认构造函数就是Test()。class Test{public: Test(){} // default constructor} ;如果你没有为你的类提供任何构造函数,那么编译器将自动为你生成一个默认的无参构造函数。一旦你为你的类定义了构造
2016-02-16 23:22:44
3572
转载 c++对象内存布局模型
转自:点击打开链接首先介绍一下C++中有继承关系的类对象内存的布局: 在C++中,如果类中有虚函数,那么它就会有一个虚函数表的指针__vfptr,在类对象最开始的内存数据中。之后是类中的成员变量的内存数据。 对于子类,最开始的内存数据记录着父类对象的拷贝(包括父类虚函数表指针和成员变量)。 之后是子类自己的成员变量数据。 对于子类的子类,也是同样的原理。但是无论继承了多少个子类,对
2016-02-16 22:26:01
425
转载 c++成员函数存储方式
转自:点击打开链接用类去定义对象时,系统会为每一个对象分配存储空间。如果一个类包括了数据和函数,要分别为数据和函数的代码分配存储空间。按理说,如果用同一个类定义了10个对象,那么就需要分别为10个对象的数据和函数代码分配存储单元,如图8.4所示。图8.4 能否只用一段空间来存放这个共同的函数代码段,在调用各对象的函数时,都去调用这个公用的函数代码。如图8.5
2016-02-16 22:10:18
407
转载 c++虚拟继承
转自:点击打开链接虚拟继承《c++ primer 3th》p813在缺省情况下,C++中的继承是按值组合的一种特殊情况。当我们写:class Bear : public ZooAnimal { ... };每个Bear 类对象都含有其ZooAnimal 基类子对象的所有非静态数据成员,以及在Bear中声明的非静态数据成员。类似地,当派生类自己也作为一个基类对象时,如:cla
2016-02-16 21:53:22
711
转载 c#泛型约束
转自:点击打开链接一、泛型简介1.1泛型通过使用泛型,可以创建这样的类、接口和方法,它们以一种类型安全的工作方式操作各种数据。本质上,术语“泛型”指的是“参数化类型”(parameterized types)。参数化类型非常重要,因为它们可以在创建类、接口、方法和委托的时候将要操作的数据类型作为参数进行指定。通过泛型,可以创建一个类,使其自动处理不同类型的数据。使用参数化类
2016-02-16 17:12:54
970
1
转载 c++迭代器和traits特性提取
转自:http://www.cnblogs.com/tracylee/archive/2012/10/26/2741907.html一、迭代器的概念迭代器是STL将数据容器和算法分开后连接的纽带,也是泛型思维发展的必然结果。泛型算法就是通过迭代器操作容器的,使得算法和容器本身分离开来。迭代器模式:提供一种方式,可以依次访问一个聚合物(容器)中所有元素而不暴露聚合物内部的
2016-02-16 16:43:26
1016
转载 c++ 迭代器
转自:点击打开链接迭代器是一个纯粹的抽象概念:任何东西,只要其行为类似迭代器,它就是一个迭代器。因此,你可以撰写一些类别(classes),具备迭代器接口,但有着各不相同的行为。C++标准程序库提供了数个预先定义的特殊迭代器,亦即所谓迭代器配接器(iterator adapters)。它们不仅起辅助作用,还能赋予整个迭代器抽象概念更强大的能力。 1、Insert itera
2016-02-16 16:34:08
499
转载 c++模板的特化和偏特化
转自:点击打开链接前言说到C++模板,这个已经不是什么新东西了,自己在实际开发中也用过;对于C++模板特化和偏特化,对于别人来说,已经不是什么新东西了,但是对于我来说,的确是我的盲区,那天在群里讨论这个问题,自己对于这部分确实没有掌握,又联想到在《STL源码剖析》一书中,对于此也是有着介绍。所以,今天就对此进行详细的总结,以备后忘。C++模板说到C++模板特化与偏特
2016-02-16 15:56:11
558
转载 c++四种类型转换
转自:点击打开链接类型转换有c风格的,当然还有c++风格的。c风格的转换的格式很简单(TYPE)EXPRESSION,但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向非const对象的指针,把一个指向基类对象的指针转换成指向一个派生类对象的指针,这两种转换之间的差别是巨大的,但是传统的c语言
2016-02-16 14:56:06
403
转载 c++ vilatile
转自: 点击打开链接1. 为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明:A volatile specifier is a hint to a c
2016-02-16 14:42:25
678
转载 c++虚基类
转自:点击打开链接虚基类的作用 当一个基类被声明为虚基类后,即使它成为了多继承链路上的公共基类,最后的派生类中也只有它的一个备份。例如:class CBase { };class CDerive1:virtual public CBase{ };class CDerive2:virtual public CBase{ };class CDerive12:publ
2016-02-16 14:11:57
318
转载 c++中int和string的互转
转自:点击打开链接int本身也要用一串字符表示,前后没有双引号,告诉编译器把它当作一个数解释。缺省情况下,是当成10进制(dec)来解释,如果想用8进制,16进制,怎么办?加上前缀,告诉编译器按照不同进制去解释。8进制(oct)---前缀加0,16进制(hex)---前缀加0x或者0X。string前后加上双引号,告诉编译器把它当成一串字符来解释。注意:对于字符,需要区分字
2016-02-07 00:19:18
411
原创 c++中int a, int *a=new int和 int *a=new int()
首先有以下3条代码:int a1;int *a2=new int;int *a3=new int();这里分一个情况来讨论,似乎c++ 98中和c++11中情况不同,分别输出这些参数,会发现c++11中每次输出时,均是0,因此这三条效果上等价,但是第一条是分配在栈空间中,而后面两条则是在堆空间中。但根据网上的资料,博主并未进行尝试,在c++ 98的编译器中,这三条是不同的,
2016-02-06 23:56:49
10148
原创 c++ const在重载overload和覆盖override上使用区别
1.overload 重载首先讲讲const在重载上的使用,重载的目的是为了根据不同的输入来调用不同的同名函数。const的位置不同会引起不同的效果,我在一篇转载文章中具体阐述过:点击打开链接再归纳一下,能否构成重载的区别在于用户能否知晓函数的不同:1)放在函数尾部修饰作为对函数不会修改成员变量的修饰,即void fun() const;和void fun(); 这种情况下cons
2016-02-06 14:09:11
8020
转载 c++拷贝函数
转自:点击打开链接一、C++中拷贝构造函数的定义:有一个参数的类型是其类类型的构造函数是为拷贝构造函数。如下所示:?123X::X(constX& x); Y::Y(constY& y, int=0 ); //可以是多参数形式,但其第二个即后继参数都有
2016-02-06 13:10:51
656
原创 const, static, inline函数在类外定义时注意点讨论
类中定义成员函数(类或对象成员)常用到三种修饰符: const, static, inline,而我们知道在类中直接定义函数,将自动变为inline函数,一般内联函数是一些经常被调用的小型函数,因此很多函数我们还是会以类外定义的方式来定义,这时部分关键字仍然需要再次出现,本文针对上述3个关键字进行讨论。首先给出个例子:class Decl{public: Decl();//默认
2016-02-04 14:22:07
1525
转载 const引起重载的情况讨论
注:博主尚未找到最原始来源,若能提供原始地址的朋友麻烦在下面评论,我将注明转处,谢谢。const到底是不是一个重载的参考对象,请看下面的例子class A{public: void f(int i){ std::cout void f(int i) const { std::cout};这个地方的重载是没有问题的,说明const 修饰函数能够区分重载
2016-02-04 14:01:29
1126
转载 使用stl for_each的三种方法
注:博主暂未找到原始来源,因此并未引出具体转载处,如有朋友知晓,也可评论留言,我会加上具体出处,谢谢!Abstract之前在(原創) 如何使用for_each() algorithm? (C/C++) (STL) 曾經討論過for_each(),不過當時功力尚淺,只談到了皮毛而已,這次看了effective STL的item 41、43後,對for_each()又有了更深入的了解,
2016-02-03 23:18:35
717
原创 c++的typename的使用注意点
typename关键字经常出现定义模板类/函数中,但是在实际使用中,除了定义模板中的类型之外在其他代码中也偶尔需要用到typename关键字作为修饰,本文简单概括下常见的情况。对于常规的定义,如下所示:template OutputIterator filter(InputIterator input_vec_first, InputIterator input_vec_last,
2016-02-03 22:08:31
1072
转载 几种排序算法
转自:点击打开链接1. 简述 本文主要说明一些常用的内部排序算法的分类、复杂性和稳定性。主要基于现在的理解和学习,详细准确的复杂度可以参见维基百科等比较权威的网站,对于一些算法的不同实现,复杂度也不同,这里给出的复杂度都是相对较好的算法的复杂度。2. 分类 3. 复杂性和稳定性 冒泡排序:在已经有序的情况,取得O(N)的复
2016-02-01 14:28:33
865
卡耐基ssd答案搜索神器
2012-10-12
C#N皇后问题
2011-11-24
C#矩阵类(实现相加,相乘,转置,求逆)
2011-11-07
C#矩阵类(相加,相乘,转置,求逆)
2011-11-07
C#实现的矩阵算法(相加,转置,求逆)
2011-11-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人