返回列表 回复 发帖
谢谢myzam老师毫不吝啬的传授!
个人站点---MathCai
111# mathcai
大家都是版友,互相学习,共同进步,呵呵。
3d-7b平台使用的光照模型
简   单   光   照   模   型
一.简单光照模型的概念
   当光照射到物体上时,在物体的表面就会产生明暗效果,这就是光照效应。当用数学模型去模拟
光照效应,我们把建立的数学模型叫光照模型。光照模型分为局部光照模型和整体光照模型两大类。
   局部光照模型又叫简单光照模型,这种模型只考虑环境光,慢反射,镜面反射组成的光照效应,而
把光在物体间的传播对物体的影响模拟为环境光。所谓整体光照模型就是要考虑光在物体间的传播对
物体的影响。历史上最早出现的简单光照模型是Phong提出的,今天这个模型就叫Phong模型。
  一般的简单光照模型要考虑三类光对物体的作用:环境光,漫反射,镜面反射。由于本文的目的是
建立几何画板中的3d-7b模型,这个模型不考虑镜面反射,所以本文整个讨论过程中都不涉及到镜面反射
光对物体的影响。本文首先讨论光照模型的理论,最后建立几何画板中的3d-7b光照模型。现在就开始吧。
二 .环境光对物体的影响模型
   环境光在空间是均匀分布的,也就是说环境光在任何方向的光强度是相同的。其光强度计算公式
为:  I=k1*I1,
其中I1-----环境光强度,
   k1-----环境光的反射率,因为光强为I1,当光照射到物体表面时,能量会损失一部分。不同材质的
   物体其反射率是不一样的。
     I---是物体表面实际呈现的亮度。
仅仅依赖于环境光这个因素还不足以建立光照模型,因为只考虑环境光,物体表面的明暗过度显得极不
自然。所以我们还要更进一步的考虑漫反射对物体表面的明暗影响。
四 .漫反射对物体的影响模型
  1.点光源
  我们认为点光源发出的光,均匀的分布到四面八方,在各个方向上,其光强度是相同的。点光源照射
  到物体的表面,物体的表面的各个部位呈现的亮度是不相同的。这样物体表面的不同部位就有不同的
  明暗效果。当然点光源距离物体表面越远,物体表面就越暗。3d-7b模型中是省约了距离这个因素对
  物体表面的明暗的影响的。
  2.光强度公式
     
漫反射的光强度公式为:
I=I2*K2*cos(t)
其中 I2----为入射的漫反射光强度
     K2----为漫反射率
     t---为入射角
      I---物体表面的亮度。
你可以想像的到入射角越小,物体的表面就越亮。
当物体一经给定,漫反射率就是一常数,在光源
固定的情况下,I2也是常数,所以物体表面的亮度
完全被入市就决定。上面的方程叫朗伯(Lambert)
余弦定理。
  如果反射面的单位法向量为N,入射光的单位方向矢量是L,如图所示,则LN=COS(t),
从而
   I=I2*K2*LN.
这是一个便于计算的公式。
五 .环境光与漫反射的作用
   物体在点光源的照射下,不考虑光源到物体的距离这因素,只考虑环境光和漫反射光对物体的影响,
在这种情况下,物体表面的光强度方程为:
     I=K1*I1+K2*I2*LN.
根据经验,环境光强度I1约取为漫反射光强度的0.2倍到0.02倍之间。这样画出来的图形是比较美观的。
总之,我们有公式:
     光强=环境光强+ 漫反射光强+ 镜面反射光强(省约不考虑)。
到此,我们就建立了一个简单的光照模型。
仅仅考虑这两个因素建立的光照模型,对于不是象玻璃瓶那样具有光洁表面的物体,都能够较好的反
应出物体表面的明暗变化规律。但对于具有光洁表面的物体,的确不能较好的反应物体表面的明暗效果。
但是对于几何画板中的几何体,这个模型已经足够用了。这便是3d-7b使用的光照模型。
要知道更多,请在11页(上一页)下载电子书阅读《光照处理技术》。电子书于2012.7.25下午发布。
百度云下载地址工具包  如有更新,看日期
1)杂项工具包7b-otherTool:含制作选择题的工具,放大镜工具
表格制作工具,圆台(锥,柱)的展开工具
v2012.9.10
=工具: 7b-OtherTool.zip (114.13 KB) =
=实例: 小数展为幂级数.zip (2.99 KB) =
2)三视图工具包7b-view tool:
v2012.8.1
=工具: 7b-view tool.zip (30.88 KB) =
=实例: 三视图工具包应用一例.zip (14.92 KB) =  

=图片- # -  
3)逻辑工具包(在几何画板中演绎逻辑代数)7b-logic tool:
v2012.8.4
=工具: 7b-logic tool.zip (14.71 KB) =
=实例: 点在角区域的位置2判断.gsp (7.28 KB) =
=实例:点在四边形内部的判断=
=实例:  
门电路 =
4)线性规划工具包(用起来很顺手)7b-LP tool:
v2012.7.29
=工具: 7b-LP tool.zip (21.57 KB) =
=实例: 线性规划.gsp (48.93 KB) =
工具包有三部分组成:描线,判断,求值=把放到逻辑包里面属于规划的部分转移进了这个LP(线性规划linea program~LP),逻辑包中就删除了属于LP的内容,高中的线性规划能够很快的作出图,求出解来,我已经做了反复的测试。
5)矩阵运算工具7b-matrix tool:
v2012.7.29
=工具包: 7b-matrix tool.zip (6.27 KB) =

¥¥¥¥¥¥¥¥¥
我的迭代观
=集合演示工具: 7b-set tool.zip (86.17 KB)
¥主要是绘制维恩图,和生产随机数的工具,p18页有图片演示2013.4.27号更新完成¥
--
####
=函数工具包 7b-function tool-:把原来在other tool 包中的有关函数坐标系工具分离成了一个包,含直角坐标系工具(该直角坐标系继承了系统坐标系的属性,所以可以直接使用系统命令绘制函数图象),
含Lagrange(拉格朗日) 插值工具,含Bezier曲线(3次贝塞尔曲线)工具,求极值工具
7b-Function Tool.zip (33.75 KB)
--------
=分形工具:代数法扫描法,[attach]18709[/attach]=

choice2.gsp (31.59 KB)

画板中的人性化编程.gsp (33.22 KB)

关于逻辑工具包logic-tool:
数学背景:参数t>=0对应布尔值1,参数t<0对应布尔值0,如果参数不在这个范围就需要化归到这个范围处理。
1.工具包现在能做什么?
  可以完成逻辑代数里面的全部逻辑运算。
工具包刚做成的时候,发现有一个问题对参数t=10用工具:NOT t求非,得逻辑值b1=0,接着在用工具:NOT t对b1求非发现无法递归了,或者说递归的结果不合法。分形原因是打造的工具:not t
其运算对象只能是普通参数。所以今天下午添加了专门处理布尔值的4个小工具:
bool1 and bool2,bool1 or bool2,not bool,bool1 xor bool2,比如求非工具:not t和not bool
不同点在于前一个工具的运算对象是非布尔参数,后一求非工具处理的对象是布尔值,正是因为有了后面的新四个小工具,逻辑代数里的一切运算才得以完成,递归总是可以进行了。
工具包提供的是逻辑代数的完整功能,所以可以利用工具包自行进行二次开发。
2.工具包难用吗?
不用学习,自动会,因为你只要点一个到而个参数就可以了。你就按照你平时理解的逻辑代数操作就可以了。其次,每个工具在脚本里面都写了说明,说明含两点,1是目的,2是用法。为啥要写说明?
因为,如果不写说明,时间久了我自己都不知道工具是干什么用的了。所以我看重写说明这项工作。
我个人的感觉工具包很好用是一个成功的工具包。
3.工具包完备了吗?
从逻辑代数的角度看完备了。因为逻辑代数的问题都能演算了。从解决具体问题的角度看又不完备,这得依赖于使用工具包的人二次开发出自己需要的工具。
4.注意事项是什么?
注意事项就一点:与,或,非,异或运算请注意有两套工具,它们的操作域不同,操作域分别是
非布尔参数和布尔值。这直接从工具的名字上看的出来。凡事名称中有bool(boolean布尔的意思),操作域都是布尔值,凡事工具名字中有t1,t2,t的操作域就是普通的参数。
5.工具名称难记吗?
我用的是标准的逻辑代数符号:
与----and
或---or
非--not
异或----xor。
学过逻辑代数的人对次应该很熟悉。
上尖号,与下尖尖号表示与,或运算是数理逻辑里面的标准语言,数理逻辑和逻辑代数是两门不同的学科。所以我没有采用数理逻辑的记号。
----逻辑包中新增的工具:
a)新增加了一个工具:“商,余数”,用这个工具可以很方便的对数a,b进行展转相除,从而很容易求出这两数的最大公约数,当然互质判断也得也完成。
b)同余判断工具:a=b mod(m)
c)整除判断工具:a=0(mod m)
关于线性规划包(LP包)
1.LP可以做什么?
是用来解决高中课本中的LP图形,并求其最值的,这就是包的功能。
2.包例有什么工具?
工具没几个,主要有:一个是作图工具plot(ax+by+c=0),一个是求解方程组的工具solveEquations,这两个工具就足够解决高中的LP问题了。
3.工具怎么用?
很简单。脚本中写了详细的帮助。主要就是点击方程的系数a,b,c。ok。
4.另外的工具还有什么?
LP包的工具原则上是直接在系统直角坐标系里面作图。考虑到(当然很少很少)有时要把坐标原点选在非系统原点这种另类的要求,所以又增加了工具T-plot(作图),T-solveEquations(解方程组)。T是什么意思,T是平移的第一个字母。
5.文件有102kb有点大?
为啥?是因为第一页全是实例。如果删除实例,文件顿时变小了。删除吗?
6.工具使用的数学原理:
首先定义直线的正侧~设点P(X1,Y1),如果满足ax1+by1+c>=0,就叫这一侧为直线的正侧,正侧正好是法向量所指的一侧,正侧是同过一个点来判断的,作图时会自动生成这个判断点。。本包处理的可行域的边界
不等式都必须是大于或等于零的情形。
其次,目标函数为z=ax+by,但我们绘制的是ax+by+c=0的图形,这条直线也有正侧,但该直线沿其正侧平移时,目标函数的值会变大,反之变小。
同故对直线正侧的判断就可以作做规划的可行域,通过对准目标函数z‘=ax+by+c的。参数c的控制,就可以实现目标函数的平移。用起来很顺手
更新了首页的AC工具包。
今天和昨天我利用两天时间在AC包中增加了专用描点工具,解决了AC包没有专用描点工具描点不便的问题。
并在文档中增加了两页的共8个例子,分别对应包中的主要工具说明,每个例子都可以用画板操作,可以看着例子操作工具。
关于三视图工具包view:
主要是有一组描点工具和一套标签命名方法组成。描点工具可以方便的在标架内描点,标签的命名方式让你可以读着标签点选点。因为一个三视图的制作要描绘很多点,如果点的标签混乱,则描点会是一场灾难,所以制作三视图标签命名及其重要,我采用了上标和下标,字母组合,颜色等要素来区分不同的点。同过字母组合可以容易找到对应点,通过上标和颜色可以确定点是否是在坐标面内的投影点是在哪个坐标面内的投影。工具包的第一页为工具使用实例。另在包中专门制作了使用方法,使用工具可以先调查使用方法到页面,这是一张图片上的文字,可以看着说明操作工具。
二阶递推与展转相除法~逻辑包logic tool新增工具介绍:
在逻辑工具包中新添加了迭代法求a,b的最大公约数的工具。其数学原理是辗转相除法。迭代的结果以表格的形式显示,表格的 r 列就是余数列,zero列是判断余数是否为o的列,余数已经为0时,zero这个布尔值=1,表格中的最后一个非0的余数就是a,b的最大公约数。
其实逻辑工具包中的“商余数”工具就已经可以求a,b的最大公约数了。
所谓辗转相除法指的是:
a =bq1+r1
b=r1q2+r2
r1=r2q3+r3
r2=r3q4+r5,......,
r[n]=r[n+1]q[n+2]+0,
那么最后一个非0的余数为r[n-1]=(a,b).最大公约数数学上通常记着(a,b),有是也记成'**'(a,b),
其中g---greate大,c---common公共,d---divisor约数。
由辗转相除法知道,数列{a,b,r1,r2,r3,...}为二阶递推数列,其初值为a,b。二阶递推用迭代完成时我们要
采用串列式迭代才可以完成,具体的讲迭代的对应法则如下:
a--->b,
b--->r1
r1-->r2
...,
n为迭代深度。
如此便得到了辗转相除法的迭代算法。逻辑包中的布尔值运算工具真好用。方便。
注:关于二阶递推可以参考论坛的“几何画板部分问题解答”
==这张图片贴的我汗流浃背,因为图片名字叫**,结果网站不认,又改名为**ivisor网站还是限制,最后更名为divisor才成功。**多办是**gong chan dan.=

我的逻辑工具包应用实例:求a和b的最大公约数,把a/b化为既约分数
最大公约数 最小公倍数 既约分数.zip (3.9 KB)
用Julia集玩玩变换。
华丽的半球面,修改一点点就是放大镜=
变换无穷的魅力=
=曲面-一切皆因变换=
著名的混沌模型:逻辑斯蒂映射==
网页:混沌与分形入门---名言:不懂分形21世纪在科学上不能称作文化人
布尔运算构造逻辑变量轻松实现分段上色 逻辑帝斯的分段上色.zip (3.02 KB) =
混沌系统的含义:一个物理上的动力系统,可以用微分方程(组)去描述它。当微分方程(组)的初值有细微的改变时,其解如果有明显的波动,就说该动力系统混沌。微分方程的解若以级数表出,进一步可以用递推公式表出,
所以也简单的说IFS(iterte function system递推函数系统)有时会出现混沌。
=利用变换把M set 描绘到马鞍面上 把M集合描绘到马鞍面上.zip (2.67 KB) =

玩玩变换.zip (5.19 KB)

logistic.zip (1.73 KB)

复数列z[n]=z[n-1]^2+c范围的估算:
1.设|c|<=t,我们来探究一下复数列的单调性,为此计算
|z[n]|-z[n-1]|
=|z[n-1]^2+c|-|z[n-1]
>=|z[n-1]^2|-|c|-|z[n-1]|
=|z[n-1]|(|z[n-1]|-1)-|c|
>=|z[n-1]|(|z[n-1]|-1)-t,
如果|z[n-1]|>m>=0,则有
|z[n]|-z[n-1]|>=m(m-1)-t,令m(m-1)-t>=0,
可解得不等式的解为:m>=m0>1,
这个结果说明m>1时一定有:|z[n]|-z[n-1]|>=0,即复数列是递增无界的,当然此时不收敛。
这样就有:
如果在复平面内,以原点为圆心做一个圆盘,这个圆盘的半径取1,无论c取什么样的值,该复数列的收敛点如果存在,则只可能在这个半径为1的圆盘内部。
2.下面探究复数列{z[n]}在模小于等于1时,是否存在递减
的子列,由于网页无法输入更详细的记号,在这里我把其
子列还是记成:{z[n]},
|z[n]-z[n-1]|<=|z[n-]^2+c|-|z[n-1]|
<=|z[n-1]|^2+|c|-|z[n-1]|
=|z[n-1]|*(|z[n-1]-1|)+|c|.
设|c|<=t,并令|z[n-1]|*(|z[n-1]-1|)+t<=0,
解这个不等式得:
0<|z[n-1]|<=0.5,或0.5<|z[n-1]|<=1,其中0<t<=1/4.
从而|z[n]|<=|z[n-1]|,递减。(注意由于记号的关系,
这里指的是复数列的子列)
这说明当c的模小于等于1/4时,在圆盘|z|<=1内,一定
存在复数列{z[n]}的递减的收敛子列。这是这个原因,
Mandlbort set在圆盘|z|<=1/4的范围内总是有图像出现。
返回列表