自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(99)
  • 收藏
  • 关注

转载 像素颜色和颜色向量相加相乘的理解

首先计算机图形学的一条原则是,如果它看上去是对的,那它就是对的。所以,对于一些计算模型来说,最重要的是最后拟合的效果。它不一定符合物理,但通常计算都以物理上的考虑为基础。像素颜色和相关运算的理解我们常说某件物体是某种颜色的,仿佛颜色是物体的自有属性。其实这样的理解并不正确。颜色是物体反射的光进入眼睛以后给我们的一种感觉。也就是说,除了物体本身的属性,光照条件也是最终看到颜色的决定因素之一。我们说一张纸是白色的,其实是在说这张纸能反射所有的可见光。如果我们以单色光,比如红光照射它,我们看到这样纸就呈现

2021-03-19 22:14:39 957

转载 投影矩阵的推导(Deriving Projection Matrices)

本文乃<投影矩阵的推导>译文,原文地址为: http://www.codeguru.com/cpp/misc/misc/math/article.php/c10123__1/Deriving-Projection-Matrices.htm,由于本人能力有限,有译的不明白的地方大家可以参考原文,谢谢^-^! 译者: 流星上的潴 如需转载,请注明出处,感谢! 在3D图形程序的基本矩阵变换中,投影矩阵是其中比较复杂的。平移和...

2021-03-18 22:31:11 942

原创 参数方程

待续..

2021-03-07 14:43:02 311

转载 贝塞尔曲线

一阶贝塞尔曲线(线段):意义:由 P0 至 P1 的连续点, 描述的一条线段二阶贝塞尔曲线(抛物线):原理:由 P0 至 P1 的连续点 Q0,描述一条线段。 由 P1 至 P2 的连续点 Q1,描述一条线段。 由 Q0 至 Q1 的连续点 B(t),描述一条二次贝塞尔曲线。经验:P1-P0为曲线在P0处的切线。三阶贝塞尔曲线:通用公式:高阶贝塞尔曲线:4阶曲线:...

2021-03-07 14:11:01 95

原创 Vector3

静态变量:上下左右前后onezero变量:magnitude 向量的模长sqrMagnitudenormalized 标准化向量静态函数:Angle 返回两个向量的角度SignedAngle(from,to,Vector3.up) 返回两个向量的角度,带符号,值应该在-180~180,注意这里是以to作为视角,则顺时针为负(to的右边),逆时针为正(to的左边),例子很有意义,注意看看DotCrossDistanceLerp 线性插值LerpUnclamped

2021-03-06 19:31:27 552

原创 Transform

变量:positionlocalPositionlocalScale 相对父物体lossyScale 相对模型eulerAngleslocalEulerAnglesrotationlocalRotationforwardrightup函数:LookAt();Rotate();传入欧拉角旋转,可以使用本地坐标系或世界坐标系RotateAround();SetPositionAndRotation();Translate();沿本地Z轴或者世界Z轴移动...

2021-03-06 19:30:33 67

转载 Quaternion

https://www.cnblogs.com/tgycoder/p/5103966.htmlhttps://www.cnblogs.com/tgycoder/p/5106463.html

2021-03-06 17:45:51 985 1

转载 win7

假如64位WIN7原版解压在D:\WIN7文件夹,USB3.0驱动在D:\USB3文件夹。在D盘新建文件夹testDISM添加驱动(右键管理员打开CMD,以下每一行命令结束按回车键)cd空格 C:\Windows\System32空格 /d1、装载映像Dism空格 /Mount-Image空格 /ImageFile:D:\WIN7\sources\boot.wim空格/in

2017-08-05 13:13:45 591

原创 杂七杂八

adblock plus

2016-01-19 21:13:56 437

原创 C++基本语法

0:include ""和""会先搜索当前文件目录,然后标准搜索;自己写的文件一般用这种方式 1:静态数据成员静态数据成员的初始化在类外,静态函数成员一种用途就是用来输出静态数据成员,因为他们都不需要构造类 2:有元函数一般调用:class A{public: void pt(A *p) { coutm_nNum<<endl; }p

2011-12-18 21:19:59 7645

原创 数据存储的一个想法

//版本3struct Info3{ int nVersion; short a; int b; char name[2049]; void Update(void *p) { }};//版本2struct Info2{ int nVersion; char name[2049]; int a; void Upd

2011-12-16 15:35:40 567

原创 点点滴滴

1:DB_TRUNCATE不能被锁或者事务保护2:如果为数据库添加了环境,就已经将数据库的位置作为环境的子路径了3:项目中应该使用堆缓存文件 性能对比http://www.bdbchina.com/2011/09/oracle-berkeley-database-11g-r2-%E6%80%A7%E8%83%BD%E6%A6%82%E8%BF%B0%E7%99%BD%E7%9A

2011-12-14 14:02:45 391

原创 实例代码

BTree读写Db db(NULL,DB_CXX_NO_EXCEPTIONS);//环境指针//事务指针,数据库类别,访问标志(创建,只读,自动提交事务,线程安全),mode在windows中忽略if(db.open(NULL,"test.db",NULL,DB_BTREE,DB_CREATE|DB_TRUNCATE,0)!=0){ cout<<"同名数据库存在"<<end

2011-12-12 16:13:20 1436

原创 复制

基础1:复制将你master的写操作分发给所有参与者,你只能在master中写,其他参与者只能读,参与者的写会产生错误2:master和参与者属于一个"复制组",复制组的程序必须是事务的,他们之间发送的是日志记录3:复制的参与者都必须有自己唯一的环境,基于这个原因,如果多个参与者在同一台电脑上,他们不能使用一样的环境目录4:技术上讲,复制组是由一个master环境和多个参与者环境构

2011-12-09 14:46:56 504

原创 锁子系统

基础1:一些DB句柄是线程安全的,一些句柄在创建时可以提供一些flags来获得安全性2:DB提供独占和非独占锁3:Berkeley DB称线程安全叫Free-thread,也就是数据和对象不需要显式的加锁就能保证安全性4:DB如果得不到锁就会被阻塞,DB提供了一些办法检测和化解死锁 线程安全的句柄DbEvn环境打开的时候使用DB_THREADDb打开数据库的

2011-12-09 09:58:40 891

原创 概述

Berkeley DB由五个主要的子系统构成.包括: 存取管理子系统、内存池管理子系统、事务子系统、锁子系统以及日志子系统。其中存取管理子系统作为Berkeley DB数据库进程包内部核心组件,而其他子系统都存在于Berkeley DB数据库进程包的外部。      每个子系统支持不同的应用级别。    1.数据存取子系统    数据存取(Access Methods)子系统为创建和访

2011-12-08 00:10:14 488

原创 工厂模式

分为三种1:简单工厂:提供很多函数,直接返回new出来的对象2:简单工厂的变种:提供一个函数,传入字符串,函数中通过字符串返回不同的对象3:抽象工厂:工厂本身是抽象的,一般一个具体的工厂产生一批产品,通过动态的替换工厂实现不同组产品的生成

2011-12-07 20:58:44 356

原创 装饰模式

2011-12-07 20:05:00 567

原创 事务

chapter 2:启用事务1:打开事务步骤1:创建一个环境2:打开环境时,DbEvn::open()指定DB_INIT_TXN;启用了事务系统默认也启用了日志系统;并且,如果你在创建环境的时候没有使用事务,以后就不能使用,因为创建时没有分配锁需要的结构3:DbEvn::open()使用标志DB_INIT_MPOOL,初始化memory cache4:初始化锁子系统,DbEvn

2011-12-06 09:56:54 973

原创 基础

0:Berkeley DB的子系统1:存取管理子系统为数据库创建和读写提供支持,它不包含事务2:内存池管理子系统对DB使用的共享缓冲区进行管理,3:事务子系统提供事务管理功能4:锁子系统存取管理子系统用锁子系统同步对数据库的读写,事务子系统通过锁子系统实现多个事务的并发控制5:日志子系统用来支持事务子系统对数据的恢复,保证数据的一致性 应用程序直接调

2011-12-05 10:02:15 855 1

原创 基础语法

1:命令行运行lua xxx.lua2:Chunk是一系列语句,比如一个文件或者交互模式下的每一行3:加载文件lua -la -lb,如果要在执行后进入交互模式,则lua -i -la -lb,也可以dofile("a.lua")4:想删除一个变量,b=nil5:命令行方式执行一句话lua -e "print("A")",-l加载文件,-i执行完成转入交互模式6:lua只认为f

2011-11-07 19:45:46 419

原创 第六章:可伸缩的Winsock应用程序

1:函数1:TransmitFile,AcceptEx,ConnectEx,TransmitPackets,DisconnectEx,WSARecvMsg,GetAcceptExSockaddrs他们在MSWSOCK.H中定义TransmitFile,AcceptEx,GetAcceptExSockaddrs在MSWSOCK.DLL中实现2:我们可以通过静态连接mswsock.lib来

2011-11-05 13:40:01 2268

转载 NTDDI_VERSION,_WIN32_WINNT,WINVER,_WIN32_IE定义宏的含义

在使用AllocateUserPhysicalPages和MapUserPhysicalPages时出现错误,原因如下,在stdafx.h中加入#define _WIN32_WINNT 0x0501 在使用一些新版本的API,或者控件的新特性(比如新版的ComCtl32.dll)的时候,你可能会得到“error C2065: undeclared identifier.“这个错误。原因是这

2011-10-20 17:12:39 677

原创 SO_LINGER

struct linger { int l_onoff; //开关 int l_linger; //超时值 };1:默认设置默认状态下l_onoff==0,此时忽略l_linger,调用closesocket()会将FIN包放到队列末尾,然后函数返回效果是TCP会将队列残留的数据发完,然后发送FIN,执行三向或者四向关闭 2:l_onoff!=0&&l_li

2011-10-14 14:04:25 2344

原创 第一章:Winsock简介

1:Winsock概念1:Winsock是一种网络编程接口,而不是协议,它支持多种协议2:使用Winsock需包含winsock2.h和WS2_32.lib3:WSACleanup()能够释放所有由Winsock分配的资源,并取消进程挂起的Winsock调用,操作系统在退出的时候同样会释放这些资源,但不建议这样做4:两个错误处理函数:(1):WSAGetLastError();

2011-10-12 22:21:55 1001

原创 Windows网络编程

1:bind时如果指定的端口号已经被使用,返回WSAEADDRINUSE错误2:特殊地址INADDR_ANY表明如果有多个网卡,bind时会绑定多个地址3:特殊地址INADDR_BROADCAST用于广播UDP数据报,此功能需要设置套接字选项SO_BROADCAST4

2011-09-29 20:00:24 1000 1

原创 SYN

1:半连接1:客户端发送SYN,服务器回复SYN+ACK,此时这条连接就处于半连接状态,服务器有维护着一个半连接队列,队列长度为Backlog2:当SYN+ACK发送超时后,服务器重传,重传有次数限制和时间限制,当超过此限制,此连接从半连接队列删除 2:通过过滤网

2011-09-29 12:28:19 943

原创 套接字架构

1:架构图 2:Transport protocols1:此层是各种协议的具体实现,如TCP/IP运输层滑动窗口,Nagle算法2:Transport protocols没有为发送窗口预留空间,它依靠AFD.SYS的发送缓存或者进程缓冲区来实现发送窗口3:

2011-09-23 20:08:36 651

原创 第十五章:传输控制协议(TCP)

1:基础1:在UDP中,进程把已经定义好边界的报文发送给UDP进行发送,从进程发过来的报文称为用户数据报,并最终称为IP数据报,各个数据报之间不存在联系2:在TCP中,进程以字节流的方式传递数据,TCP是全双工通信,每一方都有自己的发送缓存和接收缓存,这些缓存是差错控制,

2011-09-22 22:21:00 3790 1

原创 第十四章:用户数据报协议(UDP)

1:基础1:UDP是无连接,不可靠协议,UDP无流量控制,弱差错控制,无拥塞控制当检验和出错,则丢弃分组2:UDP数据报长8~65535字节,包括8字节的首部,包括源端口,目的端口,总长度,检验和(首部+数据的检验和)3:UDP在IP的基础上提供端到端(进程到进程)的

2011-09-21 22:56:20 1004 1

原创 第十三章:运输层简介

1:进程通信1:运输层提供进程到进程的通信,进程通过Ip+端口号标识自己,端口号16位,取值0~65535之间2:0~1023为熟知端口号,1024~49151为注册端口号,49152~65535为动态端口号3:源点运输层执行复用,将不同进程数据放入运输层,终点运输层

2011-09-19 23:31:11 763

原创 第十二章:多播和多播路由选择

暂缓

2011-09-19 23:18:27 521 1

原创 第十一章:单播路由选择协议(RIP,OSPF和BGP)

1:引言1:路由器接收到一个分组,可能有多条路径能到达目的地,但那一个是最佳路径,其中一种方法是为每个网络指定一个代价(度量),代价低的路径就被认为是好的2:如果我们希望网络吞吐量最大化,那么高吞吐量就是低代价的,如果我们希望时延最小化,那么时延小就是代价低的3:路由

2011-09-16 22:58:23 2559

原创 第十章:移动IP

暂缓

2011-09-16 22:37:12 479

原创 第九章:网际控制报文协议(ICMP)

1:引言1:ICMP是为了解决两大问题反馈分组传送和到达中出现的各种错误查询主机或路由器信息2:ICMP是网络层协议,但它不直接传递给下层(数据链路层),而是被封装为IP数据报传递给下层3:在IP数据报中,协议字段为1则为ICMP报文 2:报文 I

2011-09-15 23:32:38 2674

原创 第八章:地址解析协议(ARP)

1:地址映射1:物理地址必须本地唯一,但不要求全局唯一,将IP映射为物理地址可用通过静态映射和动态映射两种方式实现静态映射:设备保存IP物理地址的表,但要维护这张表会影响性能动态映射:通过ARP实现 2:ARP协议1:请求者通过ARP广播请求,匹配者单播响

2011-09-15 21:58:57 706

原创 第七章:IPv4各字段和分片

1:IP数据报1:网络层分组称为数据报,各个字段含义依次如下1:版本:IP协议版本,如果一个设备不支持此版本分组,则数据报会被丢弃而不是进行错误的解读2:首部长度:IP数据报首部长度,20~60字节3:服务类型:可以定义优先级,当网络拥塞的时候,优先丢弃优先级低的

2011-09-14 23:28:31 13484

原创 第六章:IP分组的交付和转发

1:交付1:交付是指网络层对分组的总体处理方式,分为直接交付和间接交付2:直接交付是发送分组的源主机和目的主机在同一个网络,或者分组到达最后一个路由器,目的主机和路由器直连 2:转发1:转发定义了交付的具体方式2:基于目的地址的转发:2.1:路由表:主

2011-09-13 21:35:19 2863

原创 IOCP基础示例

#include "stdafx.h"#include #include "Windows.h"#include #include#pragma comment(lib,"ws2_32.lib")using namespace std;#defin

2011-09-13 00:17:28 596

原创 第五章:IPv4地址

1:分类编址1:IPv4地址被分为ABCDE5类,A类第一位为0,B类为10,C类为110...2:ABC类地址都划分为[网络标识-主机标识],D类为多播地址,E类保留3:A类地址网络标识占1个字节,B类2个字节,C类3个字节,网络标识相同的地址属于同一个地址块4

2011-09-10 19:17:17 1166

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除