- 博客(26)
- 收藏
- 关注
转载 基于C语言sprintf函数的深入理解
printf 可能是许多程序员在开始学习C语言时接触到的 第二个函数(我猜第一个是main),说起来,自然是老朋友了,可是,你对这个老朋友了解多吗?你对它的那个孪生兄弟sprintf了解多吗?在将各种类 型的数据构造成字符串时,sprintf的强大功能很少会让你失望。由于sprintf跟printf在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导
2016-05-26 21:24:41 2269
原创 matlab简单函数
矩阵的范数 norm函数可以求出矩阵的模。MATLAB常用的基本数学函数及三角函数:=============================================== 小整理:MATLAB常用的基本数学函数 abs(x):纯量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z):复数
2016-05-26 21:22:58 594
转载 三维坐标转换
为了方便自己记忆,记录一下三维坐标旋转矩阵的推导过程。 坐标的旋转变换在很多地方都会用到,比如机器视觉中的摄像机标定、图像处理中的图像旋转、游戏编程等。 任何维的旋转可以表述为向量与合适尺寸的方阵的乘积。最终一个旋转等价于在另一个不同坐标系下对点位置的重新表述。坐标系旋转角度θ则等同于将目标点围绕坐标原点反方向旋转同样的角度θ。 若
2016-05-26 21:21:46 27388
转载 齐次坐标的用途
一直对齐次坐标这个概念的理解不够彻底,只见大部分的书中说道“齐次坐标在仿射变换中非常的方便”,然后就没有了后文,今天在一个叫做“三百年 重生”的博客上看到一篇关于透视投影变换的探讨的文章,其中有对齐次坐标有非常精辟的说明,特别是针对这样一句话进行了有力的证明:“齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”—— F.S. Hill
2016-05-26 10:29:24 2128
原创 vector 二维
用vector取代C-style的数组 提起数组,大家想必都很熟悉,你可以用索引和指针来操作数组,给程序设计带来了很大的灵活性。但是你知道它有许多天生的缺陷吗? 首先,数组的越界可能会引起程序的崩溃(如果崩溃了,还算你走运^_^)。其次是动态性不好,包括动态改变大小,动态申请。诸如此类的事,一定会让你伤透脑筋。有什么办法可以解决这些问题吗? 你不用担心,下面
2016-05-24 15:05:31 387
原创 c++指针问题
以下四种说法中,正确的一项是( )。A.C++允许在字符串上进行整体操作B.语句:char vn []="Brown"; 将vn 定义成一个有5个元素的数组,因为"Brown" 中含有5个字符C.对指针只要赋给一个地址值就可以了D.一维的指针数组实际上是一个二维数组char vn[]="Brown" 有5个元素,但是会自动追加‘\0' 表示字符串的终结。其实有6个长度。指针是个变量 有
2016-05-23 21:41:17 654
原创 Break and Continue
//break是结束整个循环体,continue是结束单次循环比方说:while(x++ < 10){ if(x == 3) { break; } printf("%d\r\n", x);}结果是输出 1 2 就退出了整个while循环但是如果使用continuewhile(x++ < 10){ if(x == 3
2016-05-22 21:36:43 276
转载 左手坐标系和右手坐标系
今天记录一下一些基本的数学知识,左手坐标系和右手坐标系。这些对于搞图像开发或者游戏开发的朋友来说,应该是很基础的东西,不过对于大部分人来说还是比较陌生的知识。之所以看这方面资料主要是因为在使用Android Camera使用Matrix的过程中,发现需要一些数学理论支持才能理解。这是为了后面使用Android Camera和Matrix的基础。 1、空间直角坐标系 下
2016-05-22 21:35:52 823
转载 C语言中的atan和atan2
在C语言的math.h或C++中的cmath中有两个求反正切的函数atan(double x)与atan2(double y,double x) 他们返回的值是弧度 要转化为角度再自己处理下。前者接受的是一个正切值(直线的斜率)得到夹角,但是由于正切的规律性本可以有两个角度的但它却只返回一个,因为atan的值域是从-90~90 也就是它只处理一四象限,所以一般不用它。第二个atan2(d
2016-05-22 21:33:16 1099
转载 VS2013代码调试:[7]如何避免调试时加载符号
用VS2013打开代码文件,按下F5进行调试,可以看到系统会自动加载符号。可以看到此调试过程较为缓慢关闭调试,打开“工具”-“选项”-“调试”,在调试中找到符号选项在下图中取消勾选如下选项,确定并退出即可。此后再次按F5进行
2016-05-17 21:43:18 1105
转载 使用Vector实现二维数组
用vector取代C-style的数组 提起数组,大家想必都很熟悉,你可以用索引和指针来操作数组,给程序设计带来了很大的灵活性。但是你知道它有许多天生的缺陷吗? 首先,数组的越界可能会引起程序的崩溃(如果崩溃了,还算你走运^_^)。其次是动态性不好,包括动态改变大小,动态申请。诸如此类的事,一定会让你伤透脑筋。有什么办法可以解决这些问题吗?
2016-05-17 21:42:40 1261
转载 c++中vector的用法详解
vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 用法: 1.文件包含: 首先在程序开头处加上#include以包含所需要的类文件vector 还有一定要加上using name
2016-05-17 21:41:55 345
原创 作用域运算符的有什么功能
作用域:变量在程序中的起作用范围; 简单分为:全局作用域、局部作用域、语句作用域; 作用域优先级: 范围越小优先级越高; 作用域运算符:“::” 如果希望在局部变量的作用域内使用同名的全局变量,可以在该变量前加上“::” ,“::”称为作用域运算符。
2016-05-17 21:41:22 3435
转载 内联函数
内联扩展是用来消除函数调用时的时间开销。它通常用于频繁执行的函数。 一个小内存空间的函数非常受益。如果没有内联函数,编译器可以决定哪些函数内联 。 程序员很少或没有控制哪些只能是内联的,哪些不是。 给这种控制程度,作用是程序员可以选择内联的特定应用 。
2016-05-17 21:40:46 236
转载 C++的头文件和实现文件分别写什么
++编程过程中,随着项目的越来越大,代码也会越来越多,并且难以管理和分析。于是,在C++中就要分出了头(.h)文件和实现(.cpp)文件,并且也有了Package的概念。对于以C起步,C#作为“母语”的我刚开始跟着导师学习C++对这方面还是感到很模糊。虽然我可以以C的知识面对C++的语法规范,用C#的思想领悟C++中类的使用。但是C#中定义和实现是都在一个文件中(其实都是在类里面),而使用
2016-05-17 21:40:09 261
转载 OpenCV学习笔记(01)我的第一个OpenCV程序(环境配置)
一、安装前准备1、VS2012(网上看到很多用的VS2010,但是基本不影响)2、OpenCV 安装包(我下载的是最新的2.4.9)二、安装OpenCV 1、解压OPenCV 说是安装,其实就是解压,OpenCV的Windows安装程序就是一个自解压程序:这里我解压到C:\Program Files(你也可以解压
2016-05-17 21:38:27 457
转载 Main函数中的argc和argv应用举例
尽管之前写过一篇关于argc,argv方面的文章(http://blog.csdn.net/carson2005/article/details/5766192)但依然有朋友搞不太清楚。所以,这里,我举两个简单的例子来详细说明,并告诉你一步一步的操作步骤。例1:打开指定路径下的一个文本文件,读取其内容,并将其写入到指定路径下的另一个文件当中。其中,采用argv来传递输入文件路径和输出文件路
2016-05-17 21:36:55 356
转载 C语言中memset函数详解
功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作 用 法: void *memset(void *s, char ch, unsigned n); 程序例: #include #include #include int m
2016-05-17 21:36:13 317
原创 #include”* .h“ 在查找预编译头使用时跳过
出现以下情况的解决办法1>------ 已启动生成: 项目: OpenGL, 配置: Debug Win32 ------1> render_opengl.cpp1>h:\tddownload\3d绘图程序设计\projects\chap06\blending_solar_system\render_opengl.cpp(2): warning C4627: “
2016-05-17 21:34:57 2672
原创 i++;++i;i--;--i 的区别
两次运行下面的程序,如果从键盘上分别输入6和3,则输出结果是( )。int x;scanf("%d",&x);if(x++>5) printf("%d",x);else printf("%d\n",x - -);A. 7和5 B. 6和3 C. 7和4 D. 6和4++i, 表示参与运算之前先自加1.i++,表示参与运算以后再加
2016-05-16 21:25:58 988
转载 namespace的用法理解
C++中采用的是单一的全局变量命名空间。在这单一的空间中,如果有两个变量或函数的名字完全相同,就会出现冲突。当然,你也可以使用不同的名字,但有时我们并不知道另一个变量也使用完全相同的名字;有时为了程序的方便,必需使用同一名字。比如你定义了一个变量string user_name, 有可能在你调用的某个库文件或另外的程序代码中也定义了相同名字的变量,这就会出现冲突。命名空间就是为解决C++中的变量、
2016-05-16 21:24:10 2144
转载 浅析栈区和堆区内存分配的区别
一直以来总是对这个问题的认识比较朦胧,我相信很多朋友也是这样的,总是听到内存一会在栈上分配,一会又在堆上分配,那么它们之间到底是怎么的区别呢?为了说明这个问题,我们先来看一下内存内部的组织情况.从上图可知,程序占用的内存被分了以下几部分.1、栈区(stack)由编译器自动分配释放 ,存放函数的参数值,局部变量的值等,内存的分配是连续的,类似于平时我们所说的栈,如
2016-05-16 21:23:13 256
原创 C++调试
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。提醒:再牛×的老师也无法代替学生自己领悟和上厕所!单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是
2016-05-16 21:22:10 285
转载 C++静态成员变量和静态成员函数
数据成员可以分静态变量、非静态变量两种. 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员. 非成静态员:所有没有加Static的成员都是非静态成员,当类被实例化之后,可以
2016-05-16 21:20:48 258
转载 pitch yaw roll
三维空间的右手笛卡尔坐标如图1所示。图1在航空中,pitch, yaw, roll如图2所示。pitch是围绕X轴旋转,也叫做俯仰角,如图3所示。yaw是围绕Y轴旋转,也叫偏航角,如图4所示。roll是围绕Z轴旋转,也叫翻滚角,如图5所示。图2图3图4图5
2016-05-16 21:17:25 358
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人