cos

【Ray Tracing The Next Week 超详解】 光线追踪2-7 任意长方体 && 场景案例

[亡魂溺海] 提交于 2021-02-14 14:01:58
上一篇比较简单,很久才发是因为做了一些好玩的场景,后来发现这一章是专门写场景例子的,所以就安排到了这一篇 Preface 这一篇要介绍的内容有: 1. 自己做的光照例子 2. Cornell box画质问题及优化方案 3. 新的场景几何体——长方体   轴平行长方体   任意长方体 我们这一篇重实践轻理论阐述 ready 1. 需要上一章的知识 但是,上一章的Cornell box画质优化仅限于盒子本身,如果作为场景和其他物体放在一起就不能那么优化画质 即,Cornell box像素计算失败应该返回黑色点而非白色 2. 需要图形学基本仿射变换知识 3. 玻璃球镂空技术,如有忘记,请移步 此处 先看效果 光照案例                            图7-1 Cornell box案例(最初步)     图7-2 最终版 任意轴旋转    正文 学了光照就迫不及待地整了一堆东西 终于脱开了蓝色插值背景转到正儿八经的光了 在还没学长方形之前,就先用球体做了光源 注:坐标轴按照光线追踪坐标系描述(y轴位于垂直向上方向,z轴垂直屏幕向外) 1. 图7-1 第二行左 该图是最开始的一张图,相机仍然在(13,3,2),第一卦限 而球体是一个半径为1的漫反射白球,置于原点处 下面仍然是一个大的镜面球(metal),y轴-1000处,半径999,正好和小球相切

用seaborn对数据可视化

落花浮王杯 提交于 2021-02-14 13:35:03
以下用sns作为seaborn的别名 1.seaborn整体布局设置    sns.set_syle()函数设置图的风格,传入的参数可以是"darkgrid", "whitegrid", "dark", "white", "ticks", 分别代表五种风格。sns.despine()可以去掉右边和上面的边线。 下面的代码画出五种风格的图 1 import seaborn as sns 2 import numpy as np 3 import matplotlib as mpl 4 import matplotlib.pyplot as plt 5 6 7 def sinplot(ax): 8 x = np.linspace( 0 , 14 , 100 ) 9 for i in range( 6 ): 10 y = np.sin(x+i* 5 )*( 7 - i) 11 ax.plot(x, y) 12 13 14 style = [ " darkgrid " , " whitegrid " , " dark " , " white " , " ticks " ] 15 print(style[ 0 ]) 16 17 plt.figure(figsize=( 10 , 10 )) 18 for i in range( 5 ): 19 sns.set_style(style[i])

递推关系和母函数

不想你离开。 提交于 2021-02-14 05:07:35
标签(空格分隔): 数学 推荐一篇很棒很生动的 博客http://ruanx.pw/post/%E7%89%B9%E5%BE%81%E6%96%B9%E7%A8%8B.html ##母函数 ###定义 对于任意数列$a_0,a_1,a_2\cdots$,用如下方法与一个函数联系起来:$$G(x)=a_0+a_1x+a_2x^2+\cdots$$ 则称G(x)是数列的 生成函数(generating function) ,也称为 母函数 . 说白了就是,你可以用多项式的n次项系数表示一个数列.那母函数有什么用呢?可以用来证明一些组合数学的定理...可以用来标准化一些数学组合意义...比如一个小学数学的例子,两盘水果,一盘2个苹果,一盘3个梨子,这些水果同类型都长得一模一样,问你,拿到3个水果的方案,你可能可以很快回答出来:"三种方案啊.1个苹果2个梨子,2个苹果1个梨,3个梨",但是用母函数就可以这样来算. $$(1+x+x^2)(1+x+x^2+x^3)=1+2x+3x^2+3x^3+2x^4+x^5$$ 哎!!3次项的系数是3!!第一个小括号里的就是拿苹果的方案,你可以不拿(1),可以拿1个(x),也可以拿两个($x^2$),由于多项式乘法会两两都相乘,最后合并同类项的时候,相同的个数的水果的方案数就合并到了一起,这就是母函数一个基本的作用.算方案数 ##

20145209刘一阳《JAVA程序设计》第六周课堂测试

穿精又带淫゛_ 提交于 2021-02-13 10:32:19
第六周课堂测试 1、现有以下代码,哪些选项插入到第5行可以通过编译?(BDF) 1.import java.util.*; 2. 3.Class FindStuff { 4.public static void main (String[]args) { 5.//insert code here 6.c.put ("X", 123); 7. } 8.} A .Map c= new SortedMap(); B .HashMap c= new HashMap(); C .HashMap c= new Hashtable(); D .SortedMap c= new TreeMap(); E .ArrayList c= new ArrayList(); F .Map c = new LinkedHashMap(); 2、已知list是一个合法的集合引用,getCollection()返回一个合法集合的引用,下列合法的是?(BE) A .for(Object o : list) B .for(Object o : getCollection()) C .for(Object o : list.iterator()) D .for(lterator i ; list.iterator() ; i.hasNext() ) E .for(lterator i=list.iterator();

3D图形学理论入门指南

*爱你&永不变心* 提交于 2021-02-12 08:26:40
转:http://gad.qq.com/article/detail/35096 介绍 当我还小的时候,我曾以为计算机图形学是最酷的玩意儿。但是随即我认识到,学习图形学——创建那些超级闪亮的计算机程序——比我想象的要难上许多。我四处出击,阅读OpenGL渲染管线详解之类的文章,浏览关于图形工作原理的博客、网站等,对照着教程学习,试图搞懂一切。结果呢,一无所获。当我按照NeHe的教程设置好一切,却因为错误的调用了某个glXXX()函数,导致各种错误。我不具备正确调试程序的基础理论知识,所以我放弃了——就像我那个年纪的少年在遇到挫折时通常会做的那样。 然而,在若干年之后,我有机会能够在大学里参加一些计算机图形学的课程。这次我终于知道它们是如何正确工作了。如果我早知道这些,我那时应该能获得更多成功。所以,为了帮助和我有类似困境的人们,我打算分享下我学到的东西。 图形学背后的理念 概览 先想想真实世界的样子。在3D真实世界里,光线从许多个不同的光源发出,在多个物体间跳转,然后一部分光子通过眼球刺激到你的视网膜。在真实的场景里,3D的世界投影到 2D 的表面。虽然你的大脑从环境中获取各种视觉元素然后组成一个立体的影像来反映整个3D空间,但这些都源于2D信息。当场景中的物体移动,或者你相对于你的场景发生移动,或光照改变时,视网膜上的2D图像也立刻发生改变。我们的视觉系统快速处理图像

Python练手例子(10)

[亡魂溺海] 提交于 2021-02-12 08:16:07
55、学习使用按位取反~。 程序分析: ~0=1; ~1=0; (1)先使a右移4位。 (2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4) (3)将上面二者进行&运算。 # python3.7 if __name__ == ' __main__ ' : a = 234 b = ~ a print ( ' The a\'s 1 complement is %d ' % b) a = ~ a print ( ' The a\'s 2 complement is %d ' % a) 56、画图,学用circle画圆形。 # python3.7 from tkinter import * if __name__ == ' __main__ ' : canvas = Canvas(width = 800, height = 600, bg = ' purple ' ) canvas.pack(expand = YES, fill = BOTH) k = 1 j = 1 for i in range(0, 26 ): canvas.create_oval( 310 - k, 250 - k, 310 + k, 250 + k, width = 1 ) k += 1 j += 0.3 mainloop() 57、画图,学用line画直线。 # python3.7 from

Linux 判断进程是否运行

不羁的心 提交于 2021-02-12 01:44:03
问题 linux平台 多人开发服务器,有时自己运行一个进程在服务器上,但未知原因导致停止运行了,需要添加一个定时任务,用于监控指定进程是否运行 方法 一个通用的方法,以便使用在不同项目中。 思路:定时使用 进程查看 筛选指定进程 ps -ef|grep 判断是已运行, #!/bin/ bash if [ ` ps -ef| grep com.qcloud.cos_migrate_tool.app.App | grep -v grep | wc -l` -gt 1 ]; then echo running else nohup sh start_migrate. sh >/dev/ null 2 >& 1 & fi 备注: | grep -v grep 是为了排除自身查找命令 来源: oschina 链接: https://my.oschina.net/u/4298168/blog/3745247

多项式最小二乘法拟合

和自甴很熟 提交于 2021-02-10 10:28:11
实用计算方法实验二——多项式最小二乘法拟合 实用计算方法实验二——多项式最小二乘法拟合 采用mlx,即matlab的实时脚本,便于观察结果和发布过程。 二次多项式 三次多项式 指数函数 评价拟合效果 附录:Doolittle函数解矛盾方程组 二次多项式 %二次多项式 最小二乘法 解矛盾方程组 拟合 %形如a0*1+a1*x+a2*x^2的拟合 clear clc x=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]; y=[352 211 197 160 142 106 104 60 56 38 36 32 21 19 15]; m=size(x,2); %获得数据点个数 %n=input('请输入phi(x)的个数:'); n=3; %n即为phi(x)的个数 syms symsx f = symfun([1,symsx,symsx^2],symsx); %在这里可以修改phi(x)的表达式的形式与个数,如symsx^2,在建立法方程时的值为x^2,cos(symsx)则建立法方程时为cos(x) expr = formula(f); 表达式分别为 expr(1) ans = expr(2) ans = expr(3) ans = 构建的法方程的A与Y A=zeros(m,n); %构造法方程所需的A和Y for j=1:n temp =subs

Annoy 近邻算法

自作多情 提交于 2021-02-10 07:31:32
Annoy 随机选择两个点,以这两个节点为初始中心节点,执行聚类数为2的kmeans过程,最终产生收敛后两个聚类中心点 二叉树底层是叶子节点记录原始数据节点,其他中间节点记录的是分割超平面的信息 但是上述描述存在两个问题: (1)查询过程最终落到叶子节点的数据节点数小于 我们需要的Top N相似邻居节点数目怎么办? (2)两个相近的数据节点划分到二叉树不同分支上怎么办? 针对这个问题可以通过两个方法来解决: (1)如果分割超平面的两边都很相似,那可以两边都遍历 (2) 建立多棵二叉树树,构成一个森林 (3)所有树返回近邻点都插入到优先队列中,求并集去重, 然后计算和查询点距离, 最终根据距离值从近距离到远距离排序, 返回Top N近邻节点集合 Summary of features Euclidean distance , Manhattan distance , cosine distance , Hamming distance , or Dot (Inner) Product distance Cosine distance is equivalent to Euclidean distance of normalized vectors = sqrt(2-2*cos(u, v)) Works better if you don't have too many

MySQL函数大全及用法

僤鯓⒐⒋嵵緔 提交于 2021-02-09 13:54:44
1、字符串函数 ascii(str) 返回字符串str的第一个字符的ascii值(str是空串时返回0) mysql> select ascii('2');   -> 50 mysql> select ascii(2);   -> 50 mysql> select ascii('dete');   -> 100 ord(str) 如果字符串str句首是单字节返回与ascii()函数返回的相同值。 如果是一个多字节字符,以格式返回((first byte ascii code)*256+(second byte ascii code))[*256+third byte asciicode...] mysql> select ord('2');   -> 50 conv(n,from_base,to_base) 对数字n进制转换,并转换为字串返回(任何参数为null时返回null,进制范围为2-36进制,当to_base是负数时n作为有符号数否则作无符号数,conv以64位点精度工作) mysql> select conv("a",16,2);   -> '1010' mysql> select conv("6e",18,8);   -> '172' mysql> select conv(-17,10,-18);   -> '-h' mysql> select conv(10+"10"