推荐直接阅读博客原文,更新更及时,阅读体验更佳 「十天自制软渲染器」这个标题我承认标题党了.在对图形学一无所知的情况下想十天自制一个软渲染器,就好似一节课没上过却试图一个晚上看完<30 天精通 C++>然后第二天早上八点考试得满分一样,我承认世界上有这种天才,但很可惜我不是. 就像前文所说,本系列造的轮子都是站在巨人的肩膀上完成的,需要对相关知识有一定的了解和学习,如果你是一个图形学大牛,这种软渲染器肯定是不屑于做的:如果你刚刚进入图形学的大门,造一个软渲染器的轮子,非常利于你巩固自己的底层知…
推荐关注公众号「卤蛋实验室」或访问博客原文,更新更及时,阅读体验更佳 第一天我们搭建了 C++ 的运行环境并画了一个点,根据 点 → 线 → 面 的顺序,今天我们讲讲如何画一条直线. 本文主要讲解直线绘制算法的推导和思路(莫担心,只涉及到一点点的中学数学知识),最后会给出代码实现,大家放心的看下去就好. 1.DDA 直线算法 1.1 简单实现 我们先来回顾一下中学的几何知识,如何在二维平面内表示一条直线?最常见的就是斜截式了: 其中斜率是 ,直线在 轴上的截距是 . 斜截式在数学上是没啥问题的,…
如果你喜欢我写的文章,可以把我的公众号设为星标 ,这样每次有更新就可以及时推送给你啦. 前面两天画了点和线,今天我们来画一个最简单也是最强大的面--三角形. 本文主要讲解三角形绘制算法的推导和思路(只涉及到一点点的向量知识),最后会给出代码实现,大家放心的看下去就好. 本文源码 :toyRenderer-day3-draw-triangle 1.如何画一个三角形? 在正式开始这一小节前,我们先想一下如何利用上一节的画线算法绘制一个实心的三角形. 假设现在平面内有三个不共线的点组成一个三角形,我们…
在我看来一个自动化测试平台的构建,是一种很好的了解开发语言,单元测试框架,自动化测试驱动,设计模式等等等的途径.因此,在下选择了自动化测试的这个话题来和大家分享一下本人关于软件开发和自动化测试的认识.刚刚开通了博客,就从最基础的开始吧,算是写给初学者的编程手记,也算是给对自动化完全不了解的小伙伴开个头.时间允许的话会坚持更新下去... ... 后续的文章计划会谈到一些企业级自动化测试平台的构建(但愿有时间完成哈~~). 关于自动化测试的框架,网上有很多相关的对比,在这里我我就不评论和对比了.本人…
Django 01 django基本介绍及环境搭建 #http服务器 #用来接收用户请求,并将请求转发给web应用框架进行处理 #Web应用框架 #处理完请求后在发送给http服务器,http服务器在返回给用户 一.虚拟环境相关 为什么要创建虚拟环境 #为了解决版本问题 #查看本虚拟机所有的虚拟环境 workon #创建虚拟环境 mkvirtualenv -p /usr/bin/python3 tzdj22 #在指定的目录创建一个tzdj22的虚拟环境 #退出当前虚拟环境 deactivate…
mybatis框架共四天第一天:mybatis入门 mybatis的概述 mybatis的环境搭建 mybatis入门案例 ---------------------------------------------------------------------------------------- 1.什么是框架? 它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题. 使用框架的好处: 框架封装了很多的细节,使开发者可以使用极简的方式实现功能.大大提高开发效率.2.三层架构 表现层…
with 语句和上下文管理器for.while 和 try 语句的 else 子句 with 语句会设置一个临时的上下文,交给上下文管理器对象控制,并且负责清理上下文.这么做能避免错误并减少样板代码,因此 API 更安全,而且更易于使用.除了自动关闭文件之外,with 块还有很多用途 else 子句不仅能在 if 语句中使用,还能在 for.while 和 try 语句中使用 for 仅当 for 循环运行完毕时(即 for 循环没有被 break 语句中止)才运行 else 块.while 仅…
序言:目前有个计划就是准备看一下源码,来提升自己的技术实力.同时现在好多面试官都喜欢问源码,问你是否读过JDK源码等等? 针对如何阅读源码,也请教了我的老师.下面就先来看看老师的回答,也许会有帮助呢. 我很尊敬的一位老师,他姓唐,算是我入门编程的启蒙老师,有10多年的C/C++开发经验,我有幸跟着老师的C++/C课程,自学完,而且还学了数据结构.他的讲课很有风格,幽默风趣,有条有理,深入浅出. 不过后来,我决定走Java这条不归路. 我向老师请教了一个问题:关于如何阅读源码的问题?不乏味,思路清…
弄了三天了,终于弄好了,先说结果,就是作者在网站上放了os x的工具(hrb.osask.jp,也有linux下的工具,可以自己去下载),也就是说我白忙活了三天... 再说一下这几天都干啥了,主要是想把c语言和nasm汇编连在一起.这个很多人都做过,但在网上现有的资料很少有在os X上做的的,也或者做了大家都没人说....先贴代码: extern void swap(int *,int *); void main(){ int a=1; int b=2; swap(&a,&b); whil…
本蒟蒻学习过C/C++的语法,故在学习Java的过程中,会关注于C++与Java的区别.开发前言部分,看了苏星河教程中的操作步骤.而后,主要阅读了<Java核心技术 卷1 基础知识>(第8版),本篇笔记的诞生与这本书有很大的关系. "程序设计语言的成功,更多地取决于其支撑系统的能力,而不是优美的语法." Chapter 1. 开发前言 1.1 命令提示符(CMD) 无图形界面.鼠标与光标. 1.1.1 常用快捷键 作用与功能 快捷键 启动 win+R 移动光标 ←.→ 调阅…