本文详细分析如何使用Python turtle绘制阴阳太极图,先来分解这个图形,图片中有四种颜色,每条曲线上的箭头表示乌龟移动的方向,首先从中心画一个半圆(红线),以红线所示圆的直径作半径画一个校园,半径为红线所示圆半径的0.15倍(蓝线),之所以选择0.15倍,是因为这样嵌入红圆内的小圆直径和红圆直径接近黄金分割。
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:做网站、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的津市网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
相关推荐:《Python视频教程》
完整代码:
效果图如下:
最佳回答:奇函数关于原点对称,就像太极图,比如y=x.偶函数关于Y轴对称,比如y=|x|.增函数就是Y随X增大而增大,比如 y=x 减函数是Y随着.
太极图中体现的是对立的阴阳变化。静态的太极图中关键部位是:太极图的边界,阴阳分割线,和鱼眼。从数学上看,可以这样理解:
关于鱼眼和无穷的关系,这里简单描述一下。在数学上,无穷大是一个很有意思的概念。正无穷是比所有正数都大,负无穷比所有的负数都小。但是正无穷和负无穷却是相同的,它们可以认为是同一个点。也就是说沿着正无穷的方向,会发现是通往了负无穷。基于上面的理解,对太极图的二维方程描述进行了如下猜想。
二维太极方程猜想如下:
对应的曲线图:
从太极图的横轴上,容易看出:
于是假设太极方程是一个分式:
零点可以表示为分子为0,极点可以表示为分母为0。所以分母2个极点,就是可以表示为二元二次方程:
一共5个独立的参数。只有2个极点,所以看看这些参数有什么关系。代入极点位置(+/-x1, 0):
这样容易算出:a不可能为0,这样a就可以消去。这样d=0.所以b, c, e为任意值,可以取a为1:
再看分子,在x轴上,有3个零点,所有可以假设二元三次方程。方程的形式为如下。代入3个零点(0,0),(+/-x0,0), 由于a0不为0,所以可以消去a1,这样:
其它6个和y相关的参数都可以任意数。这样,方程可以表示为(x0表示零点,x1表示极点):
上面的方程y轴还是有很大的自由度。可以看看单x轴的变化情况,y=0,x0=1, x1=1/2方程简化如下。从曲线看来,font style="color:red"这种曲线明显不符和太极图/font。因为在极点附近发现出现正负变化的极点。而太极图的极点应该是单向的,也就是1/2或-1/2的地方出现的极点是单项往上或下的。
要做修补其实很简单。对分母取绝对值就可以。绝对值可以用平方的开根号表示。分子的形式是一个奇函数。所以方程形式修改为:
这个方程的x轴曲线x=[-2, 2],y=0的图像表示为:
再看看x=0的情况下,y轴的数值曲线情况。根据太极图,在y的[-1,1]的范围内,应该只有(0,0)和边界(0,+/-1)这三个零点,没有极点。也就是分母在[-1,1]间没有零点解。所以:
接下去,看太极图的外圆上,应该都是零点。可以取+/-45度和+/-135度来看,太极图半径为1,所以(x,y)可以为如下4个点:(+/-sqrt(2)/2, +/-sqrt(2)/2)。代入分子:
(1)+(2)=
(1)+(3)=
(1)+(4)=
现在方程的形式为:
这个方程在零点的表达上,体现出了2条曲线:一条是在半径为1的圆上,还有就是一条过原点的直线上。我们知道这个太极阴阳分割线是直线太过简单,和太极图不吻合。太极图上的阴阳分割线应该是一条弧线,而不是一条直线。 网上 有论述过分割线的数学方程 ,这比直线或半圆更合适的太极分割线。其表示方法是:
所以f(x,y)可以这样表述,分子完美描述了太极图的上的零点:
上面方程,在b2,b3,b4全部为0的时候的三维曲线图为:
对这个图的诠释就是,已经和太极图有些像了,但是极点位置由于和y不相关,所以显得不是一个匀称的点,而是一块板。对极点进行修改。期望的鱼眼是什么样子呢?从变化的趋势看,应该也是一条弧线,而不是一个点。而且我们也知道,在阴阳分割线上,鱼眼x=+/-sqrt(2)/2的地方,除了y=0的地方是极点外,其余地方应该不是极点。所以对于分母的方程,其实b2/b3/b4是不能够全部为0的。下面这个方程在太极圆内部,y=0处x有2个解。反过来看,太极圆内,当x=+/-sqrt(2)/2时候,y只能有一个解,也就是只有1个极点。当然,太极圆外部可能还有y的解,但是如果这种情况存在的话,会影响太极图的形状?所以先假设y只有一个解。这样可以看到,根据二次方程只有一个解的条件:
这样分母就成为:
这个结果是有问题的。这样的曲线是连续的椭圆,圆,或双曲线。所以分母这种形式,不是只形成2个极点的情况,而是在x,y平面上的一条曲线,都能满足极点。J(x,y)=0,在xy平面上只形成2个零点,这会是什么样的一种函数呢?直接猜想,就是如下。b2的作用是控制极点的收敛速率。如果b2大,那么收敛也快。我试下来b2=16比较好,x和y方向的收敛速度比较一致:
关于这个太极函数的极性(正负)分析 :
分母都是正数。分子在太极图内部(x 2+y 2-1)始终是负数。所以正负极性只取决于函数:
而这个函数在太极图内部的解就是阴阳分割线。所以在太极图内部,是没有其它的阴阳交错的地方。
看看局部的3维的太极图(由于鱼眼是极点,所以只取一段绘图):
从太极图上,可以看到两个转换:
至于这个太极方程能够如何用于描述阴阳转换,有待进一步分析。讨论请联系 bigstone1998@sina.com .
这个得结合 windows api写 ,我写了一个效果如下:
主要函数的代码如下:
VOID DrawTaiJi( HWND hWnd,
HDC hDc,
int cxStart,
int cyStart,
int cxEnd,
int cyEnd,
COLORREF color_yin,
COLORREF color_yang )
{
HBRUSH YinBrush = ::CreateSolidBrush(color_yin);
HBRUSH YangBrush = ::CreateSolidBrush(color_yang);
HPEN YinPen = ::CreatePen(PS_SOLID, 1, color_yin);
HPEN YangPen = ::CreatePen(PS_SOLID, 1, color_yang);
//使用阴笔、阴刷画出大圆
::SelectObject(hDc, YinBrush);
::SelectObject(hDc, YinPen);
::Ellipse(hDc, cxStart, cyStart, cxEnd, cyEnd);
//使用阳笔、阳刷画出半圆与阴中突出的阳半圆
::SelectObject(hDc, YangBrush);
::SelectObject(hDc, YangPen);
::Pie(hDc, cxStart, cyStart, cxEnd, cyEnd, cxStart + (cyEnd - cyStart) / 2 , cyStart,
cxStart + (cyEnd - cyStart) / 2 , cyEnd);
::Ellipse(hDc, (cxEnd - cxStart) / 4 + cxStart, (cyEnd - cyStart) / 2 + cyStart,
3 * (cxEnd - cxStart) / 4 + cxStart, cyEnd);
//使用阴笔,阴刷画出阳中突出的阴半圆
::SelectObject(hDc, YinBrush);
::SelectObject(hDc, YinPen);
::Ellipse(hDc, (cxEnd - cxStart) / 4 + cxStart, cyStart, 3 * (cxEnd - cxStart) / 4 + cxStart,
(cyEnd - cyStart) / 2 + cyStart);
//使用阴笔,阴刷画出阳中突出的阳小圆
int ConValue = (cxEnd - cxStart ) / 200 + 1;
::Ellipse(hDc, (cxEnd - cxStart) / 2 + cxStart - 5 * ConValue,
3 * (cyEnd - cyStart) / 4 + cyStart - 5 * ConValue ,
(cxEnd - cxStart) / 2 + cxStart + 5 * ConValue,
3 * (cyEnd - cyStart) / 4 + cyStart + 5 *ConValue
);
//使用阳笔,阳刷画出阴中的阳小圆
::SelectObject(hDc, YangBrush);
::SelectObject(hDc, YangPen);
::Ellipse(hDc, (cxEnd - cxStart) / 2 + cxStart - 5 * ConValue,
(cyEnd - cyStart) / 4 + cyStart - 5 * ConValue,
(cxEnd - cxStart) / 2 + cxStart + 5 * ConValue,
(cyEnd - cyStart) / 4 + cyStart + 5 * ConValue
);
::DeleteObject(YinBrush);
::DeleteObject(YinPen);
::DeleteObject(YangPen);
::DeleteObject(YangBrush);
}
可能复制代码后你不有直接看到效果,所以我把相关的代码都一起打包了:
我是菜鸟,希望能帮到你,观楼主英俊潇洒,风流倜傥,必当世豪杰,诚邀加入0x30百度贴吧,共商义举,建不世之功!