图形跟班

从零开始学图形(2016.11)

问题六十三:怎么用ray tracing画sphere sweeping图形(2)——teapot

63.5 组合rotational sweeping和sphere sweeping画一个teapot ----------------------------------------------main.cpp ---------------------------------------...

2017-01-24 01:56:14

阅读数:254

评论数:1

问题六十三:怎么用ray tracing画sphere sweeping图形

63.1 概述 Translational sweeping、conic sweeping、rotational sweeping都是任意曲线以某种固定方式移动后形成的图形。 接下来,我们要画的sphere sweeping则是球沿着任意曲线形成的图形:球心沿着三次b-spline曲线移动,在...

2017-01-24 01:36:52

阅读数:359

评论数:2

问题六十二:怎么求一元十次方程在区间内的所有不相等的实根(2)——修正“区间端点零值”问题

前续“问题六十二:怎么求一元十次方程在区间内的所有不相等的实根”和“问题五十九:怎么求一元六次方程在区间内的所有不相等的实根(3)——修正一个问题” 不管是求解一元六次方程还是一元十次方程,都存在这样一个区间端值问题: 当区间端值为0时,在求该区间上不等实根总个数时出错。 下...

2017-01-23 10:37:32

阅读数:333

评论数:1

问题六十二:怎么求一元十次方程在区间内的所有不相等的实根

在“问题五十九”中解一元六次方程时,就有提到,对应的方法可以推广到更高次多项式方程。 现在,由于要用ray tracing画sphere sweeping图形,若对应的曲线是3次b-spline曲线,则需要解一元十次方程(10=2*(2*3-1))。 我们接下来就看看一元十次方程怎么解?  ...

2017-01-20 17:15:24

阅读数:542

评论数:1

问题六十一:三次b样条(b-spline)曲线的控制点和曲线形状的对应——以回旋体的“基本曲线”为例(2)

前续“问题六十一:三次b样条(b-spline)曲线的控制点和曲线形状的对应——以回旋体的“基本曲线”为例” 之前是保持控制点BCDEF不变,只改变A的位置。 接下来,控制点ABCEF不变(A在(-1,5,0)),改变D的位置。 这六个控制点的坐标是: vec3 ctrl_points[6] ...

2017-01-20 12:45:44

阅读数:585

评论数:0

问题六十一:三次b样条(b-spline)曲线的控制点和曲线形状的对应——以回旋体的“基本曲线”为例

“问题六十:怎么用ray tracing画回旋体(rotational sweeping / revolution)”中的“基本曲线”是由三次b-spline曲线段拼接而成。 在这一章节,我们以其中一段曲线段为例,改变其对应的控制点,看看曲线段形状的改变,同时也看看对应的回旋体图形的改变。 ...

2017-01-19 20:48:56

阅读数:825

评论数:0

问题五十九:怎么求一元六次方程在区间内的所有不相等的实根(3)——修正一个问题

前续:问题五十九:怎么求一元六次方程在区间内的所有不相等的实根(2) 我们在画“问题六十”的各种回旋体时,遇到这样的问题: 当“基本曲线”的控制点为: //8--meet some problems vec3 ctrl_points[6] = {vec3( 4.0, 4.0...

2017-01-19 20:09:38

阅读数:219

评论数:0

问题六十:怎么用ray tracing画回旋体(rotational sweeping / revolution)

60.1 概述 回旋体,大概是长这个样子:   回旋体是指曲线(称为“基本曲线”)围绕y轴转一圈得到的图形。 (基本曲线是由多段b-spline曲线段连接而成)   这里先强调一下: 上图中有两个坐标系:熟悉的空间三维xyz坐标系和曲线的局部二维uv坐标系。   对于回旋体,有如下特点: 上面...

2017-01-19 02:06:10

阅读数:423

评论数:1

问题五十九:怎么求一元六次方程在区间内的所有不相等的实根(2)

59.2 求一元六次方程在区间内的所有不相等的实根 59.2.1 理论分析 在“59.1”中,我们已经求得一元六次方程在区间内不相等的实根的总个数。接下来,我们将具体求出方程在区间内的所有不相等的实根。   分两步进行:   第一步:将区间分成若干个只包含一个不相等实根的子区间。 1...

2017-01-18 23:23:28

阅读数:230

评论数:1

问题五十九:怎么求一元六次方程在区间内的所有不相等的实根(1)

为什么要求一元六次方程在某区间的所有根? 原因是: 后面在用ray tracing画回旋体(rotational sweeping/ revolution)时,若侧面曲线是三次b样条曲线,求光线和回旋体的交点时会出现一元六次方程,而且我们要求的是离光线起点最近的交点,所有,我们需要先求出所有交...

2017-01-18 22:03:31

阅读数:281

评论数:0

问题五十八:怎么用ray tracing画conic sweeping图形

58.1 概述 在上一章节中画的translational sweeping图形是将曲线沿着y轴平移后得到的,在平移的过程中曲线保持不变。接下来,我们要画的是conic sweeping图形。这种图形也是曲线沿着y轴平移后得到的,但是,在平移的过程中对曲线进行了一定比例的缩放,这个比例一般是和y...

2017-01-16 00:10:19

阅读数:358

评论数:1

问题五十七:怎么用ray tracing画translational sweeping图形

57.1 概述 我们这里考虑的translational sweeping是XOZ平面的封闭曲线沿着y轴平移得到的图形。类似于如下图形:我们把这种图形称为“prism”。我们这里的封闭曲线是由多段三次b-spline曲线组成的。   光线和prism相交有如下图中所示的几种情况: 第一种情...

2017-01-15 23:37:17

阅读数:302

评论数:1

问题五十六:怎么用ray tracing画参数方程表示的曲面(3)—— b-spline surface

接“问题五十四”,已经简单学习了bezier曲线曲面,知道了双三次bezier曲面的矩阵表示形式,同时也以此画出了曲面图形。 这一章节主要以对比bezier曲线曲面和b-spline曲线曲面的方式来简单学习b-spline曲线曲面。   56.1 b-spline曲线...

2017-01-15 23:21:20

阅读数:316

评论数:0

问题五十五:怎么用ray tracing画Utah teapot (bicubic bezier patches)

55.1 Utah teapot简介 Utah teapot是长这个样子: 先声明一下,这种效果的Utah teapot,个人还画不出来。当前只是在学方法概念,相关的算法并没有优化,所以运行起来很慢很慢。   首先,建立一个概念:这个茶壶由多个双三次bezier曲面片组合起来的...

2017-01-15 23:03:05

阅读数:416

评论数:2

问题五十四:怎么用ray tracing画参数方程表示的曲面(2)—— bezier surface

首先,需要说明的是: 这一章节可以看作“问题五十三”的另一个例子——bicubic bezier surface; 之前已经用“球面”和“牛角面”作为例子画了图。 现在,之所以再举一个例子,原因有二:其一,进一步验证之前算法的正确性;其二,学习bezier曲线曲面。   简单说来,这一章...

2017-01-15 22:38:18

阅读数:509

评论数:0

问题五十三:怎么用ray tracing画参数方程表示的曲面(1)

首先,以球面为例学习怎么用ray tracing画参数方程表示的曲面;然后,再画一个牛角面。   特别说明:这一章节所画的曲面只是示意性的,所以先不care图片上的瑕疵。   53.1 数学推导 球面的参数方程f(φ,θ)如下: 画参数方程表示的球面的步骤如下:   第一步: 将φ分成n...

2017-01-15 22:06:35

阅读数:550

评论数:1

问题五十二:怎么用C++实现矩阵运算

最近学习过程中用到矩阵,这里汇总一下用到的矩阵的各种运算。包括: 求转置矩阵(4*4); 求矩阵的乘积(4*4_4*4) 求逆矩阵(3*3); 53.1求矩阵的乘积(4*4_4*4) 我们程序中A、B都是4*4的矩阵。   C++代码如下:  bool matrix_4_4_m...

2017-01-15 22:02:32

阅读数:1577

评论数:0

问题五十一:怎么用ray tracing画tear drop

tear drop是长这个样子的: 51.1 数学推导 在网上找到tear drop的参数方程:   51.2 看C++代码实现 ----------------------------------------------vec3.h ...

2017-01-15 21:40:33

阅读数:214

评论数:0

问题五十:怎么用ray tracing画blobs

这一节,画这个: 参考文献: Blinn, J.F., A generalization of algebraic surfacedrawing. ACM Trans. Graph.  1(3) , 235-256, July 1982. 50.1 数学推导 引入密...

2017-01-15 21:13:30

阅读数:200

评论数:0

问题四十九:怎么用ray tracing画supertoroid(超级圆环)

49.1 数学推导 49.2 看C++代码实现 ----------------------------------------------supertoroid.h ------------------------------------------ super...

2017-01-15 20:56:43

阅读数:188

评论数:0

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