用C++画光(三)——色散】的更多相关文章

写在前面 在先前的画光系列中,实现实体几何.反射.折射等效果,但是最大的一个缺陷是复杂度太高.当采样是1024时,渲染时间直线上升(用4线程),以至好几个小时才能完成一副作品,实现太慢.然而,当我看到用C++画光(一)这篇文章时,我有了一些思路. 我想到了[游戏框架系列]简单的图形学(一)系列文章中的思路,对啊,何必用SDF去慢慢逼近呢?用现成的解析几何算法去做不是更快吗? 过了一番摸索,终于有了题图. 要注意的地方 检测圆与直线相交的算法,我从用JavaScript玩转计算机图形学(一)光线追…
写在前面 源码:https://github.com/bajdcc/GameFramework/blob/master/CCGameFramework/base/pe2d/Render2DScene5.cpp 本文主要内容: 三角形的渲染 聚光效果的实现 色散的简易版实现 三角形的渲染 在上一文中,主要介绍了矩形的渲染,其实三角形也跟它差不多,无非就是判断线与线的关系罢了. 三角形的数据结构: // 三角形 class Geo2DTriangle : public Geo2DShape { pu…
d=1000; %两个小区中心间距离的一半 rcell=2*d/sqrt(3); %小区半径 ncell=3; %小区个数 cellposition=zeros(ncell,2); %初始化小区中心位置 theta=(0:ncell-2)'*pi/3; %角度 cellposition(2:end,1:2)= sqrt(3)*rcell*[cos(theta) sin(theta)]; %设置小区中心坐标 figure %画图 for cell=1:ncell x0=cellposition(c…
在上篇文章的基础上,做了许多调整,修复了许多BUG.在解决bug的过程中,我逐渐领悟到一个要领:枯燥地一步步调试太痛苦了,找不到问题的根源!所以我选择将中间结果打到图片上.如: (注意,里面的点是我随便点的,有互动了吧) 调试光线和最近交点法线 调试光线和最远交点法线 这就非常爽了! 本文分两个部分,一个是交并差的实现,一个是矩形的实现. 基本数据结构 // 点信息 struct Geo2DPoint { Geo2DPoint(); Geo2DPoint(float distance, cons…
参考自:用JavaScript玩转计算机图形学(二)基本光源 - Milo Yip - 博客园,主要讲述三种最基本的光源--平行光.点光源.聚光灯,其实就是三种数学模型. 代码的调整 先前的代码中,颜色是由几何物体自身计算得出,因此使用很有限.在Phong材质中,显示的效果已经很不错了,然而Phong材质是要假定有一个光源的.我们的代码需要从以面向物体渲染为面向光源渲染. 新的逻辑:https://github.com/bajdcc/GameFramework/blob/master/CCGam…
之前,我写了一个arc函数的用法:[js高手之路] html5 canvas系列教程 - arc绘制曲线图形(曲线,弧线,圆形). arcTo: cxt.arcTo( cx, cy, x2, y2, 半径 ) cx,cy表示控制点的坐标,x2,y2表示结束点的坐标,如果我们想画一条弧线,需要提供3个坐标,开始点,控制点和结束点. 开始点一般可以通过moveTo或者lineTo提供.arcTo提供控制点和结束点. <style> body { background: #000; } #canva…
关于TCP三次握手四次分手,之前看资料解释的都很笼统,很多地方都不是很明白,所以很难记,前几天看的一个博客豁然开朗,可惜现在找不到了.现在把之前的疑惑总结起来,方便一下大家. 先上个TCP三次握手和四次分手的图 网上好多都是错的,只能自己画了,一个正确的图的确可以方便理解. 疑问一,上图传递过程中出现的几个字符(SYN,ACK,FIN,seq,ack)各代表什么意思 SYN,ACK,FIN存放在TCP的标志位,一共有6个字符,这里就介绍这三个: SYN:代表请求创建连接,所以在三次握手中前两次要…
1. char buf[] = "abcdef"; //下面有啥区别? const char *p = buf; //p指向的内存不能变 char const *p = buf; //p指向的内存不能变 char * const p = buf; //p的地址不能变 const char *const *p = buf; //p的地址和指向的内存都不能改变 2. char *p1[] = {"1111", "2222", "3333&q…
关于TCP三次握手四次分手,之前看资料解释的都很笼统,很多地方都不是很明白,所以很难记,前几天看的一个博客豁然开朗,可惜现在找不到了.现在把之前的疑惑总结起来,方便一下大家. 先上个TCP三次握手和四次分手的图 网上好多都是错的,只能自己画了,一个正确的图的确可以方便理解. 疑问一,上图传递过程中出现的几个字符(SYN,ACK,FIN,seq,ack)各代表什么意思 SYN,ACK,FIN存放在TCP的标志位,一共有6个字符,这里就介绍这三个: SYN:代表请求创建连接,所以在三次握手中前两次要…
  关于TCP三次握手四次分手,之前看资料解释的都很笼统,很多地方都不是很明白,所以很难记,前几天看的一个博客豁然开朗,可惜现在找不到了.现在把之前的疑惑总结起来,方便一下大家. 先上个TCP三次握手和四次分手的图 网上好多都是错的,只能自己画了,一个正确的图的确可以方便理解. 疑问一,上图传递过程中出现的几个字符(SYN,ACK,FIN,seq,ack)各代表什么意思 SYN,ACK,FIN存放在TCP的标志位,一共有6个字符,这里就介绍这三个: SYN:代表请求创建连接,所以在三次握手中前两…