返回列表 回复 发帖
3d-7b坐标系原理
1.实现从3维到2维的平行投影



把平行投影稍加修改就可以得到透视投影的变换式,这里就不再叙述了,你可以参考
我发布的相应的电子书。

2.3d-7b是怎么做的?


我喜欢这种方法,这中方法获得坐标轴直线要更好一些。另中心(透视)投影的
变换式从约。
7b坐标系也可以这么理解:1.把几何画板的系统坐标系旋转θ,并沿y轴方向压缩cosφ,
得新x,新y轴。
2.再次重新把y轴,沿y轴方向压缩-sinφ,新y轴。
3.把由1生成的新x,新y轴和由2生成的新y轴放在一起依次得到空间坐标系的x,y,z轴。
4.对这所谓的空间坐标系整体上旋转α。
5.对空间坐标系给一个缩放zoom。
6.最后把坐标系平移到一点即可。
按这个方法,不去写变换式,直接用变换菜单也可以建立7b平台。但是要得到透视描点
工具,还是写变换式方便。其实创建3d-7b坐标系的方法有4种,详情请看下面的189#
3d-7b坐标洗的基本工具介绍

一.描点工具  
位于7b-create coord tool包中的工具
1.描点工具plot(x,y,z):
目的:在空间坐标系里描绘坐标为(x,y,z)的点。
用法:a)创建参数a=1,b=2,c=3
         b)选中工具,依次点选参数a,b,c
         c)接着点击7b坐标系的原点,和x,y,z轴上的三单位点x,y,z。
         到此,就在7b坐标系里面描出了坐标为(1,2,3)的点。
2.描点工具plot xy-z:
目的:把系统坐标系里的两点a,h变换成7b坐标系里面的一点P。设点a(u,v),
   点h的坐标为(r,s),则坐标为(u,v,s)就是7b坐标系里面的一点P。显然P点在
  7b坐标系里面投影到7b的xy平面,其投影的坐标就是(u,v),就是a点的坐标,
  P的高度就是h点的纵坐标。这种有2点定1点的方法,叫二定一法
用法:1.在画板平面内任意点出2点a点和h点
      2.选中工具,先点击a点,后点击h点(后点的为纵坐标)
         3.依次点击7b的原点,和三单位点x,y,z这样就在空间描绘出了
      一点P,P点的横纵坐标=a点的坐标,P点的z坐标=h的纵坐标。
注意:这个工具描出的点可以定义很好用的自定义变换,后面的节点上会讲到。
3.1.透视描点工具perspective 1
目的:把坐标为(x,y,z)的点,按透视变换描绘到空间坐标系中去。
用法:1)准备阶段:首先复制7b坐标系的系统参数Θ,φ,α。复制的方法可以手工
   复制,也可以用create coord工具包中的复制工具copy parameter(复制参数工具)
    完成。当然直接点击7b的系统参数也可以,但不主张,因为若不小心删除了系统参数,
   会导致不必要的麻烦。
      其次,通过create coord工具包里面的工具depth slider(深度滑块)创建深度滑块,
  创建深度滑块的同时会生成一个名为depth 的参数 。
  最后创建三个参数x=1,y=2,z=3,它们是空间点P(1,2,3)的坐标。
2)选中工具perspective1(透视描点1),依次点击参数x=1,y=2,z=3
  3)点击参数θ,φ,α,depth
  4)点击7b坐标原点,到此就描绘出了一个具有透视变换的空间点P(1,2,3).

3.2.透视描点工具perspective 2
目的:按二定一法描绘具有透视变换的空间点
用法:1)复制系统参数Θ,φ,α
  2)创建深度滑块,并获得参数depth。
3)创建点a,h
4)选中工具perspective2(透视描点2),依次点击Θ,φ,α,depth
5)点击7b的坐标原点,到此就描绘出了一个透视点P,P的横纵坐标=a的坐标,P的
z坐标=h的纵坐标。
注意:这样描得的定常用于定义自定义变换。这个工具描出的点拖动几何画板的系统坐标系的
单位点,这个透视点不受影响。

3.3.透视描点工具perspective 3
目的:按二定一法描绘具有透视变换的空间点,当拖动画板的系统坐标系单位点时,该点会产生
缩放现象。
用法:1)复制系统参数Θ,φ,α
  2)创建深度滑块,并获得参数depth。
3)创建点a,h
4)选中工具perspective2(透视描点2),依次点击Θ,φ,α,depth
5)点击画板的直角坐标系原点
6)点击7b的坐标原点,到此就描绘出了一个透视点P,P的横纵坐标=a的坐标,P的
z坐标=h的纵坐标。
注意:描出的点常用来定义自定义变换。通过自定义变换可以大量的减少重复描点。后面的节点会
有说明。另外,对深度滑块添加使得depth移动到深度滑块的原点的按钮,就可以实现透视投影
和平行投影的转换。
create coord(创建坐标系工具包)包的最基本的工具说明就到此。
这些描点工具都可以脱离开7b
坐标系使用,如你可以随意的在平面上点一点,画出从这点发出的三线段,把它们当成空间坐标
系,然后使用这些描点工具。
注意;这些描点工具常和自定义变换结合使用。
4.虚实线工具介绍
在7b-line 包中最常用的工具是虚实线工具dot-solid。
目的:在绘制多面体时,对凸多面体的棱用虚实线显示,看见的棱用实线显示,
挡住的棱用虚线显示。
用法:假设有一多面体的棱是AB,AB棱的左面有面ABC,AB的右面有面ABD.
又假定,我们看见面ABC时,三点A,B,C的逆转的。
1)选中工具
2)确定逆转顺序,先点A,B,在点C,保证A,B,C在你看见的时候是逆转的。
  如果平面的外法矢量为母指方向,就安右手螺旋法则点击。
3)最后点击面ABD内任意一点,如D点,这样棱AB在旋转时就会按虚实线正常
的显示。

5.明暗工具介绍
下面介绍7b-shade(明暗)包中的工具
a)shade point1(明暗点1)工具1:
  目的:创建近浅远暗的明暗点。
  用法:
准备:复制系统参数Θ,φ,α(建议复制)
,创建深度滑块,并获得参数depth。
  创建三个参数x=1,y=2,z=3这是空间点P的坐标。
1)选中工具shade point1
2)依次点击x=1,y=2,z=3
3)依次点击Θ,φ,α,depth
4)依次点击7b的原点和三单位点x,y,z,这样就在空间描绘出了一个
   坐标为(1,2,3)的具有明暗变化的点。
b)shade line1(明暗线工具1):
目的:已知线段端点坐标时,绘制具有明暗变化的线段。
用法: 准备阶段:同上。
  1)创建线段的端点参数x=1、y=1,z=1,a=1,b=2,c=3
  2)选中工具shade line2,并依次点上面的6个参数
  3)依次点击依次点击Θ,φ,α,depth
4)依次点击7b的原点和三单位点x,y,z,这样就在空间描绘出了条明暗变化的
  线段,线段的端点坐标为(1,1,1),(1,2,3),调整深度滑块的depth,会看到明暗
  变化。
其余工具介绍约去。

6.着色工具介绍
7b-light工具包中的着色工具介绍
a)dial (转盘)工具:
目的:创建一个转盘,和两个参数θ和φ,这两个参数以球坐标的方式确定入射光线
  的方向的。
用法:选中dial点击平面,得一个圆盘和一个半圆盘,两个参数θ,φ。ok。
b)skin slide(皮肤滑块):
用来创建一个合成滑块,并获得4个标签为
k1,k2,k[skin],k[skin2]的参数。
用法:选中工具,在平面上点击即可。这时就得到一个合成滑块和四个参数
k1,k2,k[skin],k[skin2]。
c)Light-Idensity(光强)工具:
目的:在空间画好了一个立体后,比如是四面条s-ABC.本工具就是用来计算
面的光强,下面就以计算面sAB的光强为例,计算光强是为了上色。
准被阶段:首先创建光转盘dial和皮肤滑块。获得参数θ,φ,k1,k2,
其次,在7b坐标系中用二定一法描绘出四面体s-ABC。假设对应关系如下:
a,h1-->A,b,h2-->B,c,h3-->C,u,h-->s.
用法:1)选中工具Light-idensity
2)依次点击a,h1;b,h2;u,h;
3)依次点击参数θ,φ,k1,k2,此时据生成一个以i 开头的参数,它就是
面sAB的光强度。
d)上色工具3-gon 2skin-base in 2 sides(3角形,2皮肤+底色,2面上色)工具:
目的:给三边形sAB两面上色,每一面的彩色下面都有一过灰色的底色。
用法:1)选中工具3-gon 2skin-base in 2 sides
  2)这次是直接点击3d-7b坐标系里面画好的立体了,依次点击这个画好的立体
  的三顶点s,A,B
  3)点击计算好的光强度 i,到此这面s-ABC就上好了色,调整光装盘,可以改变
  入射光线的方向,调整皮肤滑块可以改变彩色和底色。light包中的其它上色工
  具用法可按此类推。
  有时为了上色简单化,可以直接创建参数t=0.4,把参数值作为光强,然后直接对
  多面体上色,下面的三视图长方体的上色就是这么做的,可以看下面的图片效果。
附:基本工具就介绍到这里,更多的工具可以参考包的说明,每个包文件里都有相应的
说明,在此就无法一一说明了,7b坐标系的部分工具也在不断的调整,调整后是使用
方法上可能会有变动,但是只要参考脚本,都不会影响使用的。整个7b的工具是按包
来整理的,这是受到了著名的数学软件maple的影响。
另外,3d-7b的上色,光源是运动的,这样立体感更好一些。有的平台上色时采用的
是静态的光源。
3d-7b坐标系里使用自定义变换
这段文字最好是对着画板用线段演示,边演示边看。在演示时用工具plot xy-z
描点体会,要不就太抽象了

7b坐标系里有如下三种使用自定义变换的方法
方法1:用7b-create coord创建坐标系时,会出现3点,一个是无名点,和两个命名为A",A'的点,
这三点可以定义两个自定义变换,变换T1:无名点-->A';变换T2:无名点--->A";
【变换T1性质】把系统坐标系的点P(m,n)变成点P'(m,n,0),T1作用到图形s上,则s的象s‘将在
7b坐标系的xy平面内。
【变换T2性质】把系统坐标系的点P变到7b坐标系里的点P‘,所以这些P‘点和z轴位于同一个
平面内。
【方法2】:利用描点工具plot xy-z定义变换。
做法:
1.在平面内画出两点a,h
  2.选中描点工具plot xy-z
  3.依次点击a,h,7b坐标系的原点,单位点x,y,z。这样在7b坐标系里就会描绘出一点ah。
4.下面定义自定义变换,选中点a,点ah,打开变换菜单,定义自定义变换,
  变换T1:a--->ah;变换T2:h-->ah.
【变换T1性质】为了描述方便,把上面的点对a,h记成a~h,前一个点确定x,y坐标,第二个点
确定z坐标。

  变换T1作用在点P上,会把点P(X,Y)--->P'(X,Y,h的y坐标),其实就是把点对a~h替换成点对P~h,
然后映射到7b坐标系。作用在图形桑,会把一个图形变到和xy平面距离h的y坐标的平面
内。
【变换T2性质】把点p(x,y)-->P'(a的横坐标,a的纵坐标,y),即是把点对a~h替换成点对a~p,再
映射到7b坐标系里去。
方法3:利用透视描点工具perspective2定义变换T。
  1.在平面内画出两点a,h
   2.选中描点工具perspective2
   3.依次点击a,h,θ,φ,α,depth(参数的含义参考上面的介绍),系统坐标系的原点o,
    7b坐标系的原点o',单位点x,y,z。这样在7b坐标系里就会描绘出一点ah。
  4.定义自定义变换T:a-->ah,T1:h-->ah.
5.变换T的意义,把系统坐标系的点P(m,n),变成点(m,n,h)(变xy)
6.变换T1:h-->ah,这个变换讲把点P(m,n)变成点p'(a的横坐标,a的纵坐标,h)(变高).
  最后:利用这些自定义变换可以大为简化描点,特别是在需要描绘的点较多时,特别管用。
  简而言之,7b中的自定义变换分为两类,一类变换被原象的xy值决定(变xy变换),一类变换
  被原象的y值决定(变高变换)。这里使用变换比较复杂,最后是看了这里的提示后,亲自操作
  体会一下就知道是怎么一回事了。
通过描点定义新的变换是几何画板的特色方法。而7b坐标系的描点是二定一法,用之灵活的定义
各种变换,就可以极大的丰富解决几何问题途径,这恰好是7b坐标系的特色,下楼的空间中旋转
的车轮就是一例。正如本贴首页所说,变换法将引领一个时代。
3d-7b坐标系应用实例
消隐的圆锥,圆台,圆柱合体

下图是上面的圆台制作方法,并附上了关键工具和源文件:AC点工具。
其中要用到7b-line包(线工具包中的面的符号工具,图中sign的值是用这个工具
求算的,图中的boolean是用7b-logic逻辑包中的参数的逻辑值工具求算的),
虚实线的交换处不是椭圆的长轴端点位置,这与仰角和俯角的大小有关。
其消隐原理归结为一句话:利用切面消隐,给这种方法取个名字就叫:切面消隐法。
该法可以推广使用到规则的空间曲面上去


下图是一个园a和另一个水平放置的园b垂直,园a沿着园b滚动时,园a上的动点的轨迹显示。
花瓣的多少依赖于园a的半径大小,滚动展开圆锥时,圆锥底面圆周上的点就是这样的轨迹。
一个花瓣滚动一周。



如果改为剥香蕉的式的展开或展开面水平的放置,就容易多了。


滚动的车轮与展开圆锥,圆台圆柱下载:AC工具包之AC工具应用


展开圆锥圆台圆柱的工具包含在p12的other工具包中。展开工具是
可以脱离坐标系使用的,只要在平面上点上4点,代表空间坐标系的
原点,和和x,y,z三点即可。这些都是基于AC工具包(包在首页)
制作的。如过要体会AC工具,可以选圆柱的展开制作作为例子去
感受AC工具的用法。




--------两线夹蛋圆锥制作的数学原理----------



上面的公式取名叫:7b-偏转角公式。公式是数学原理,与平台无关。
公式的推导资料,可以到我的百度云盘下载。

两线夹蛋形圆锥,圆柱,圆台资料分享(百度云盘下载)

----------------

消隐圆锥,圆柱,圆台.zip (5.73 KB)

虚实线圆台做法(附AC点工具).zip (8.02 KB)

滚动的三角.gsp (27.36 KB)

展开三棱锥.zip (23.89 KB)

展开圆锥 copy.zip (21.78 KB)

可以用工具展开圆锥等,工具在p12的other工具包中

课件汇集
------三视图课件截图--------------------------




--------------------------



如果要在球中添加正方体等,利用球中留下的点,定义自定义变换,
先增加点,再完成内接正方体的作图。如果你对作图要求不高,就直接
在小园o‘上取点作图就可以了。确定紫色园的切点费了不少时间,突然间
发现可以用7b-偏转角公式确定切点的位置,一下就解开这个结了。
想做这过教学球的原因是我见到的球做为艺术品还可以,都不适合教学
用。椭圆面可以填色,但做为教学球大可不必。上图中棱锥的顶点本不
该在点B,但作为教学球就该这么画。球的构建原理是利用了7b不写
变换创建坐标系的方法完成的。关于椭圆的虚实线消隐方法好多种。不过我
都是使用190#的原理做的。总之这个教学球的难点在与紫色椭圆的消隐上。
再次提醒你注意:教学球不是真正的平行投影,但是学生在作业本上都这样画。
-----------------------------------------------
圆锥柱台合体

--------------------------

三视图课件.zip (8.68 KB)

多面体与旋转体.zip (55.28 KB)

平面截圆锥.zip (4.26 KB)

平行投影和中心投影概念演示.zip (9.43 KB)

更新:透视圆锥台柱合体(含平行投影).zip (53.95 KB)

两线夹蛋,透视和中心投影2013.6.7

二线夹蛋锥台柱合体.gsp (43.18 KB)

只有平行投影

教学球.gsp (16.45 KB)

2013.6.9按课本中的球的画法,以适应教学使用,

教学球中的棱锥棱柱.gsp (17.54 KB)

2013.6.9

透视的消失点工具和求作交比中的第三点工具plot(ab:?d)=σ,
工具位于首页的create coord(创建坐标系)包中。
消失点工具用来求作透视的消失点,
plot(ab:?d)=σ,用来求作交比中的第3点,
透视坐标系里面的描点工具其原理有的用的是交比。
透视坐标系里面的描点原理和平行投影下的描点原理完全不同。
当然在7b坐标系里面进行透视描点是没有必要用交比的,但是
可以利用上面的绘制交比中的第3点工具plot(ab:?d)=σ,
进行透视描点。工具是用代数法做的。透视这不分内容已经
属于射影几何的范畴了画板中的透视虽然看起来是空间的,但是它
只是处理的二维的射影几何,只是2维的,不是三维,这和平行投影在画板中是不同的
,平行投影在画板中是处理的3维几何,虽然在7b坐标系中通过depth=0,可以实现
透视和平行投影的转换,但是它们对应的几何维数是根本不一样的。玩射影几何必须死死的
盯住交比不放。
玩仿射几何就得盯住三点的比不放,就象玩欧式几何就得盯老
长度一样。

透视的消失点工具.zip (4.77 KB)

一个简单的说明消失点的文件

透视变换---射影几何







个人喜好:研究几何我不喜欢纯几何法,包括高中的立体几何,大学老师
也不喜欢纯几何法,因为纯几何法费力不讨好。古老的圆锥曲线就是用纯
几何法在研究,现在早就被人们抛弃,搞地道的纯几何法感觉就象在语文
中学文言文。这只代表我个人的观点,与对错没关系。
写这篇短文就是给对几何画板中的透视变换好奇的人看的。其实这写东
东在大学里面都学过,只是过去没在画板里面玩过。射影几何里面是没有
平行这个概念的,因为射影几何里面的任何2线都是相交的。别在说透视
时去讨论平行夹角,面积等,意思就是别在射影几何里面讨论
欧式概念,这一点学过射影几何的人都知道。
我们知道射影平面是有4点确定的,这四点就是几何画板中的三个消失点和一个
单位点(1,1),它们就构成了射影坐标系的基点。画家特别的聪明,画家使用了一个
数学原理:画家总是在用手臂和铅笔去进行测量,显然画家使用的是仿射测量。
射影几何中使用仿射测量?矛盾?不可思议?No。这是因为画家明白一个数学
定理:每一个射影(这里指透视)变换的象,都对应一个空间物体的平行投影的象。
我们可以沿着不同的逻辑体系去构建射影平面,比如说使用类似与仿射坐标系那样
的三轴,然后用交比的办法去设置描点工具,但我没有这么做,而是直接按上面的
原理打造描点工具去进行透视图的绘制,每个人的逻辑体系是不同的。
变换有两种:点动坐标系不动---叫点变换,还有一种是坐标系动点不动---叫坐标变换。
从运动的相对性来看这两种变换的效果是一样的。当然解读变换的表达式时还是有点
差别的。上面的短文都可以理解为点变换。这篇短文就是想给爱好透视的朋友指个
路,所以并没有进行更多的阐述,能让你了解何为透视,如何进行透视目的就算达到了。
注:1.新增加的透视工具在首页的create coord文件中。
2.喜欢射影几何的朋友,可以用create coord中的消失点工具,创建3消失点,
用工具透视3描绘出1个单位点,它们一起就构成了你们在射影几何课本里面熟知的
二维的射影坐标系,然后你就可以抱着射影几何的课本一摸一样的研究射影几何了。
这就是在create coord包中提供消失点和交比工具的原因。真正的射影坐标系不
是象直角坐标系那样有三轴,课本中的射影坐标系是一个三角形加一控制点。画板中
玩射影几何是在欧式平面内玩射影几何,能否先创建射影坐标系,然后特殊化就可以
变成欧式平面,应该是可以的。有兴趣的朋友可以这么去做。但工作量是巨大的。
没有1年以上的时间很难成熟的。7b采用的办法是比较传统的,先欧式平面,在慢慢的
扩展到射影平面。这么做也符合大多数人的认知过程。几何画板中讨论的是二维射影几何
看起来是空间的问题,其实不是,它就是一个二维的射影平面。有的朋友做画板文件老爱
追求文件多小多小,其实没必要,现在电脑的配置都很高,几百k的文件就是一个小kiss。
文件的大小要辩证的理解,在电脑运行困难时,才要去考虑算法的,如迭代。通常电脑
运行流畅时去比较文件的大小是毫无意义的。如果大量的使用工具,肯定会有一些废步骤,
文件就会大一点。但是如果什么都从最基本的做起有时不可能,就算可能也会累死你。

透视变换初级教程.gsp (65.21 KB)

3d-7b坐标系的创建方法2,3(不用写变换式):
不熟悉矩阵变换同样可以创建3d-7b坐标,这里提供2个方法。
下面的文件是详细教程,文件中给出了两种不写
变换式创建7b坐标系的方法。3d-7b坐标系走的是代数法,这方便理论研究。
图片字有点小,看文件就可以了。


7b平台严格遵守线性变换的表达式,请把在z轴方向的压缩写成:-sinφ。当然写为sinφ,
不影响作图,但是就无法用矩阵代数表示了。

3d-7b坐标系的创建方法2--不用写变换式.gsp (16.68 KB)

使用创建坐标系的原理解决问题.zip (4.73 KB)

平面内虚实线椭圆和园的构建方法:  
7b-line包(线工具包,位于首页)中有一个工具叫:sign plane(面的符号),利用这个工具可以方便的构建虚实椭圆和虚线实园。
用这个工具虚实线椭圆和园的构建将不在烦恼。
其实直接用转角取符号函数也可以的,还可以利用点对线的值来构建。

虚实线椭圆的一种构建方法.gsp (13.31 KB)

面的符号工具已经拷贝到这个文件中

返回列表