1、 首先,绘制一个单位圆形和椭圆形。圆的方程是:x^2+y^2==1;椭圆的方程是:x^2/2^2+y^2==1。 然后把单位圆形转化为椭圆形。 不知道为什么,用网页版Mathematica导出的动态图就能播放一次呢?比如下面第三幅图。
2、 下面用另一种方法,把单位圆变成椭圆,其实很简单,只要在方程里面填上参数就行。x^2/a^2+y^2==1 当a从1变为2,就是一个变形过程。而且代码也简单的多:Manipulate[ContourPlot[x^2/a^2+y^2==1,{x,-2.1,2.1},{y,-1.1,1.1},AspectRatio->Automatic],{a,0,1}]
3、圆的参数方程是:{Cos[u],Sin[u]};椭圆的参数方程是:{2 Cos[u],Sin[u]}; 试图用参数方程实现图形的转化。 同样是有两种转化方法,第一种方法是:(1-a)*{Cos[u],Sin[u]}+a*{2 Cos[u],Sin[u]},其中a从0变为1; 第二种方法是:{a*Cos[u],Sin[u]},其中a从1变为2。
4、 这一次,把圆变成正方形,同时要求圆和正方形的面积都是1。 其中,正方形的方程是:Abs[x]+Abs[y]==1/Sqrt[2]; 圆的方程是:Abs[x]^2+Abs[y]^2==1/Pi。 不过,转化过程就只能使用第一种方法了,因为我没有求出Abs[x]^a+Abs[y]^a==1的面积公式,所以无法用第二种方法。 这个“化圆为方”是不完美的,中间过程并没有保持图形面积不变,好在首尾的正方形和圆形的面积都是1。 要想获得保持面积始终相等的变形过程,看看大家有没有好的办法?
5、 再来一个三维的例子,把球形变成正八面体。 不过,这一次不去刻意追求面积或体积相等,洹彭岣啬而是放宽限制,便于用第二种方法进行变形。 正八面体的方程是:Abs[x]+Abs[y]+Abs[z]==1 于是,Abs[x]^a+Abs[y]^a+Abs[z]^a==1,当a从2变为1,就实现了球到正八面体的转化。 网页版Mathematica执行不了这个互动代码,因为用时间太长?
6、 最后,请大家思考结合问题: 正方形的参数方程是什么? 正方体的隐函数方程和参数方程是什么? 正八面体的参数方程是什么? 上面第四步“化圆为方”的过程中,如果要求变形过程里所有的图形都保持面积不变,能实现吗?