几何 几何表示 隐式表示 不给出点的坐标,给数学表达式 优点 可以很容易找到点与几何之间的关系 缺点 找某特定的点很难 更多的隐式表示方法 Constructive Solid Geometry .Distance Functions .Level Set Methods .Fractals 显示表示 直接给出点或者参数映射 优点 找某一点很容易 缺点 判断点与几何之间的关系很困难 更多的显式表示方法 Triangle meshes .Bezier surfaces .Subdivision s…
30分钟入门Java8之方法引用 前言 之前两篇文章分别介绍了Java8的lambda表达式和默认方法和静态接口方法.今天我们继续学习Java8的新语言特性--方法引用(Method References). 在学习lambda表达式之后,我们通常使用lambda表达式来创建匿名方法.然而,有时候我们仅仅是调用了一个已存在的方法.如下: Arrays.sort(stringsArray,(s1,s2)->s1.compareToIgnoreCase(s2)); 在Java8中,我们可以直接通过方…
跟着闫令琪老师的课程学习,总结自己学习到的知识点 课程网址GAMES101 B站课程地址GAMES101 课程资料百度网盘[提取码:0000] 计算机图形学概述 计算机图形学是一门将模型转化到屏幕上图像的一门基础学科,主要分为:Rasterization(光栅化).Curves and Meshes(几何表示).Ray Trancing(光线追踪).Animation/Simulation(动画和模拟) 图形学与计算机视觉的简单界限: (1) 计算机视觉是将屏幕上的图片转化为模型的过程; (2)…
实验目的 理解Bezier曲线.曲面绘制的基本原理:理解OpenGL中一维.二维插值求值器的用法. 掌握OpenGL中曲线.曲面绘图的方法,对比不同参数下的绘图效果差异: 代码1:用四个控制点绘制一条三次Bezier曲线 Github地址 #include "stdafx.h" #include <stdlib.h> #include <time.h> #include <GL/glut.h> //4个控制点的3D坐标——z坐标全为0 GLfloat…
NURBS 曲线和曲面参数化 什么是参数? 参数是曲线或曲面上点的唯一数值(类似于坐标).通过参数,可以沿曲线的长度方向引用特定点.参数值越大,点在曲线方向上的距离越远. 就像空间中的点具有三个维度(称为 X.Y 和 Z),点的参数是沿着曲线的一个内部维度(长度)测得的.我们将该维度称为 U. 由于曲面具有两个内部维度(长度和宽度),因此,我们需要除 U 之外的另一个参数才能指定曲面上的点.我们将该参数称为 V. 沿曲线长度方向上的每个点都有一个 U 参数,同样,曲面上的每个点都有 U 和 V…
http://my.oschina.net/sweetdark/blog/183721 参数方程表现形式 在中学的时候,我们都学习过直线的参数方程:y = kx + b;其中k表示斜率,b表示截距(即与y轴的交点坐标).类似地,我们也可以用一个参数方程来表示一条曲线.1962年,法国工程师贝塞尔发明了贝塞尔曲线方程.关于贝塞尔曲线的详细介绍可以参考(维基贝塞尔).这里只介绍OpenGL实现贝塞尔的函数. OpenGl定义一条曲线时,也把它定义为一个曲线方程.我们把这条曲线的参数成为u,它的值域就…
跟着闫令琪老师的课程学习,总结自己学习到的知识点 课程网址GAMES101 B站课程地址GAMES101 课程资料百度网盘[提取码:0000] 光栅化 着色(Shading) 在图形学中,着色的定义可以为:对物体(模型)应用某种材质. 主要是通过光照以及着色点参数进行表现. 在我们感知观察中,光线可以分为:高光.漫反射.环境光. 下面介绍一种简单的模型,对各种光照模型进行研究. Bling-Phong Reflection Model Phong反射模型 下图是光线照射到着色点上的示意图,为了便…
前言 刚回答了SegmentFault上一个兄弟提的问题<非对称解密出错>.这个属于Node.js在安全上的应用,遇到同样问题的人应该不少,基于回答的问题,这里简单总结下. 非对称加密的理论知识,可以参考笔者前面的文章<NODEJS进阶:CRYPTO模块之理论篇>. 完整的代码可以在 <Nodejs学习笔记> 找到,也欢迎大家关注 程序猿小卡的GitHub. 加密.解密方法 在Node.js中,负责安全的模块是crypto.非对称加密中,公钥加密,私钥解密,加解密对应的…
继续图形学之旅,我们已经解决了如何画线和画圆的问题,接下来要解决的是,如何往一个区域内填充颜色?对一个像素填充颜色只需调用SetPixel之类的函数就行了,所以这个问题其实就是:如何找到一个区域内的所有像素? 区域的表示方法 定义一个区域可以有两种方法,即内点表示法和边界表示法,内点表示就是指用一种颜色表示区域内的点,只要当前像素是这种颜色就在区域内,边界表示就是用一种颜色表示区域边界,只要当前像素是这种颜色就表示到达了区域边界. 简单的种子填充算法 最简单暴力的填充算法即是从区域内一点出发,向…
开一个新坑,记录从零开始学习图形学的过程,现在还是个正在学习的萌新,写的不好请见谅. 首先从最基础的直线生成算法开始,当我们要在屏幕上画一条直线时,由于屏幕由一个个像素组成,所以实际上计算机显示的直线是由一些像素点近似组成的,直线生成算法解决的是如何选择最佳的一组像素来显示直线的问题. 对这个问题,首先想到的最暴力的方法当然是从直线起点开始令x或y每次增加1直到终点,每次根据直线方程计算对应的函数值再四舍五入取整,即可找到一个对应的像素,但这样做每一步都要进行浮点数乘法运算,效率极低,所以出现了…
跟着闫令琪老师的课程学习,总结自己学习到的知识点 课程网址GAMES101 B站课程地址GAMES101 课程资料百度网盘[提取码:0000] 计算机图形学概述 计算机图形学是一门将模型转化到屏幕上图像的一门基础学科,主要分为:Rasterization(光栅化).Curves and Meshes(几何表示).Ray Trancing(光线追踪).Animation/Simulation(动画和模拟) 图形学与计算机视觉的简单界限: (1) 计算机视觉是将屏幕上的图片转化为模型的过程; (2)…
总览 Bézier 曲线是一种用于计算机图形学的参数曲线. 在本次作业中,你需要实现de Casteljau 算法来绘制由4 个控制点表示的Bézier 曲线(当你正确实现该算法时,你可以支持绘制由更多点来控制的Bézier 曲线). 你需要修改的函数在提供的main.cpp 文件中. bezier:该函数实现绘制Bézier 曲线的功能. 它使用一个控制点序列和一个OpenCV::Mat 对象作为输入,没有返回值.它会使t 在0 到1 的范围内进行迭代,并在每次迭代中使t 增加一个微小值.对于…
NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序.它提供了安装.卸载.系统设置.文件解压缩等功能.对于新手来说,它有安装包程序制作的引导,可以简单快速的制作完成一个程序安 装包:对于老鸟来说,如果学会了NSIS的一些基本操作,能使用脚本语言,阅读NSIS帮助文档,那么也能制作出漂亮堪比搜狗.腾讯的安装包界面的安装程序. 如果你从未接触过NSIS或者NSIS基础很薄弱,按照我下边的方法,保你一个星期掌握NSIS脚本…
package com.thread; /** * <join:将某线程加入进来,相当于方法调用,也叫合并某个线程> * <功能详细描述> * * @author 95Yang */ public class Thread_join { public static void main(String[] args) { Thread2 t2 = new Thread2(); t2.start();//使Thread2处于就绪状态 try { t2.join();//把线程2放入主线程…
工厂方法模式 属于23中设计模式中创建型类型. 核心思想:工厂提供创建对象的接口,由子类决定实例化哪一个子类. 来源 ​ 设计模式之禅中的例子,女娲造人,通过八卦炉来进行造人,没有烧熟的为白人,烧太熟的为黑人,刚好的为黄种人的例子进行程序展示 女娲作为client,八卦炉为工厂类,人类为具体实现类,有皮肤的区别. UML类图 图一 Factory: 工厂类的接口,根据类类型,提供只能创建Human子类,或者子孙类的方法. HumanFactory: 工厂类的具体实现,通过反射获取该对象. Hum…
Python 2.0 url = "http://www.baidu.com" print '第一种方法' response1 = urllib2.urlopen(url) print response1.getcode() print len(response1.read()) print '第二种方法' request = urllib2.Request(url) request.add_header("user-agent","Mozilla/5.0…
一. vue方法实现 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Vue方法与事件</title> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-…
一 控制语句(选择结构) 在学习控制语句之前,我们要先明确两件事情,什么是顺序结构(也叫做顺序执行),什么是选择结构 (分支结构或分支执行或选择执行),我们的代码执行是分为先后顺序的,就像我们之前写的代码,从入口执行到结束,这叫做顺序结构.如果之间有选择,执行或者不执行,就叫做选择结构. 这句话很难理解吧.我们举一个列子:小明的妈妈说小明考试一百分,就给小明买一个玩具但是就不去游乐园完了或者就领小明去游乐园完但是不能买玩具,这种二选一或者多选一就是选择结构.也就是我们将要学习的控制语句. 看下面…
说实话关于四元数这一节真的是不好懂,因为里面涉及到好多数学知识,单说推出来的公式就有很多.不怕大家笑话,对于四元数的学习我足足花了两天的时间,包括整理出这篇文章.在前面一章我写到了“变换”,这也是总结的学习笔记.我发现,写博客真是的是一个好多学习方法,加上之前一个博士师兄告诉我,要想好好的学习一本书或者一门技术,那么以此将学习笔记或者经验写成博客专栏是一种有效的方法.现在我要坚持这种方式,给自己留下学习过程中的足迹,也给大家分享一下.欢迎大家指出其中的不足,谢谢! 四元数是表示旋转的另一种数学形…
1变换 在3D游戏的整个开发过程中,通常需要以某种方式对一系列的向量进行变换.通常用到的变换包括平移,缩放和旋转. 1.1通用变换 通常可将n x n可逆矩阵M看成是一个从坐标系到另一个坐标系的变换矩阵.M的列给出了坐标系从原坐标系到新坐标系的映射.例如M是一个n x n可逆矩阵,当M与向量(1,0,0),(0,1,0)和(0,0,1)相乘时,可以得到 类似地,M-1的列给出了坐标轴从新坐标轴系到原坐标轴系的映射.这样对于任意给定的线性无关的向量U,V,W可以构造一个变换矩阵,该矩阵将这些向量映…
<易传·系辞上传>:”易有太极,是生两仪,两仪生四象,四象生八卦.” 借用一下古代先人们的智慧引一下本文的主题-三维图形中的点线面,在三维几何中也有一句话可以和上面的话相对应:由点成线,由线成面,由面成体,由体成形. 点向量和方向向量 首先我们要明确在三维空间中表示点的点向量和表示方向的方向向量的区别,例如A(x,y,z)可以表示一个点向量,而OA(x,y,z)就表示一个方向向量.方向向量在平移过程中将保持不变. 3D空间中的直线 3维空间中有两个点P1和P2,那么通过这两个点的直线可以定义为…
在此列出format()方法的一些基本使用: >>> '{}{}{}'.format('圆周率是',3.1415926,'...') '圆周率是3.1415926...' >>> "圆周率{{{1}{2}}}是{0}".format("无理数",3.1415926,"...") '圆周率{3.1415926...}是无理数' format()方法的格式控制: >>> s = "PYT…
0 引言 最近想学一下计算机图形学方面的知识,原因如下.目前本人接触了数字图像处理(opencv)以及点云处理(PCL)方面的知识,对从图像和点云中提取特征信息,并将特征转化为底层/中层语义信息有了一定经验.另一方面,通过组内交流,本人对计算机视觉中从图像/点云获取高层语义信息也有了一定的了解.但是,对于如何从语义到图形/图像这个过程我了解不多,而计算机图形学正是研究解决这个问题的学科.从OpenGL图形流水线开始学习计算机图形学是一条相当不错的途径,这便是本文的目的所在. 1 学习资料整理 (…
1.使用tostring获取当天数据 var list = ssc.Queryable<Student>().Where(o => o.CreateTime.Value.ToString("yyyy-MM-dd") == DateTime.Today.ToString("yyyy-MM-dd")).ToList(); var sql = ssc.Queryable<Student>().Where(o => o.CreateTim…
光栅化 Viewport Transform(视口变换) 将经过MVP变换后得到的单位空间模型变换到屏幕上,屏幕左边是左下角为原点. 所以视口变换的矩阵 \[M_{viewport}=\begin{pmatrix} \frac{width}{2}&0&0&\frac{width}{2}\\ 0& \frac{height}{2}&0&\frac{height}{2}\\ 0&0&1&0\\ 0&0&0&1 \e…
向量与线性代数 点乘和叉乘 Dot Multiplication 点乘在图形学的应用 (1) 求两个向量之间的夹角: $$\cos(\theta) = \frac{(\vec{a} \cdot \vec{b})}{\lVert a \lVert \lVert b \lVert}$$ 可以判断两个向量的距离.分向量与判断向量前后 (2) 投影 一个向量在另一个向量上的投影 Cross Product [1] 右手坐标系 右手坐标系 叉乘在图形学中的应用 (1) 判断一个向量在另一个向量的左右,叉乘…
跟着闫令琪老师的课程学习,总结自己学习到的知识点 课程网址GAMES101 B站课程地址GAMES101 课程资料百度网盘[提取码:0000] 目录 光线追踪 为什么要光线追踪 soft shadow 原因 基本的光线追踪算法(The Basic Ray-Tracing Algorithm) 算法前提: 算法概述 1.Ray Casting 2.Recursive (Whitted-Style) Ray Tracing 线与面的交点 线与面的隐式表示 线的隐式表示 面的隐式表示 光线与面相交 光…
一.方法概述和格式说明 为什么要用方法: 提高代码的复用性 什么是方法: 完成特定功能的代码块 方法的格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {     方法体语句;     return 返回值; } 方法的格式说明: 修饰符:目前就用 public static.后面我们再详细的讲解其他的修饰符. 返回值类型:就是功能结果的数据类型. 方法名:符合命名规则即可.方便我们的调用. 参数: 实际参数:就是实际参与运算的. 形式参数:就是方法定义上的,用…
CSV 版本6.5.0 这里的data实际上是csv中的一行数据 d3.csv("static/data/dept_cpu.csv",function (data) { console.log(data); }); 去除html页面中GET< http://localhost:8080/favicon.ico 404 (Not Found)> <link rel="shortcut icon" href="#" /> 过度…
game101的透视投影的投影矩阵是这样的 正交投影是这样的 而shader入门精要的透视投影矩阵是这样子 正交投影矩阵是这样子 game101的透视投影是这样得到的 而正交投影的时候并没有假设中心点在面的中心 所以区别在于正交投影的时候有没有进行一步位移操作. 可能引起误导的地方 书上投影矩阵这样表示 而101则是认为转换成了正方体,但其实他的w是z,所以按照书上的来看,他也还没有进行归一化. 矩阵最后一行的1乘上z就会导致w变为z.看推导过程也能知道 再来看入门精要. 除了w之后,就当成是一…