算法生成太极八卦图

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法生成太极八卦图

算法生成太极八卦图

前面一篇文章是通过算法生成一幅太极图,有道是:无

极生太极,太极生两仪,两仪生四象,四象生八卦.那么这一节就为太极生成一个八卦图.八卦图衍生自汉族古代的《河图》与《洛书》,传为伏羲所作。其中《河图》演化为先天八卦,《洛书》演化为后天八卦。八卦各有三爻,“乾、坤、震、巽、坎、离、艮、兑”分立八方,象征“天、地、雷、风、水、火、山、泽”八种性质与自然现象,象征世界的变化与循环,分类方法如同五行,世间万物皆可分类归至八卦之中,亦是二进制与电子计算机的古老始祖。

太极就是一,是道,是天地未分时物质性的浑沌元气。太极动而生阳,静而生阴,是生两仪,一阴一阳就是两仪,故《易·系辞说》说:“一阴一阳之谓道”,古人观天下万物之变化,不外乎由太极而生阴阳,故画一奇以象阳,画一偶以象阴。阳就是阳爻,用"—"表示,单为阳之数;阴就是阴爻,用"--"表示,双为阴之数。这就是构成八卦的基本符号,是(阴阳)矛盾的形态和万物演变过程中的最基本的阴阳二气的基本符号。

虽然我对易经这种玄之又玄的哲学没多少研究,但至

少八卦可以看做是二进制的鼻祖.根据二进制数的规定:有,

用1表示;无,用0表示,可以得出八卦各卦阳爻和阴爻的二进制数。

下面写出八卦各卦阳爻的二进制数(即有阳爻为1,无阳爻为0):

坤:黑黑黑,卦符阴阴阴,二进制数为000

艮:黑黑白,卦符阴阴阳,二进制数为001

坎:黑白黑,卦符阴阳阴,二进制数为010

巽:黑黑白,卦符阴阳阳,二进制数为011

震:白黑黑,卦符阳阴阴,二进制数为100

离:白黑白,卦符阳阴阳,二进制数为101

兑:白白黑,卦符阳阳阴,二进制数为110

乾:白白白,卦符阳阳阳,二进制数为111。

同样,也可以写出八卦各卦阴爻的二进制数(即有阴爻为1,无阴爻为0):

坤:黑黑黑,卦符阴阴阴,二进制数为111

艮:黑黑白,卦符阴阴阳,二进制数为110

坎:黑白黑,卦符阴阳阴,二进制数为101

巽:黑黑白,卦符阴阳阳,二进制数为100

震:白黑黑,卦符阳阴阴,二进制数为011

离:白黑白,卦符阳阴阳,二进制数为010

兑:白白黑,卦符阳阳阴,二进制数为001

乾:白白白,卦符阳阳阳,二进制数为000

好吧,写了这么多云里雾里的话,还是帖代码实际一些,希望大家能看懂我的代码.

1 struct Rect

2 {

3 float left;

4 float right;

5 float top;

6 float bottom;

7 };

8

9 inline bool IsInRect(const Rect& rect, float x, float y)

10 {

11 return (x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom);

12 }

13

14 unsigned int

CPixelTaijiEight::CalculatePixel(unsigned int x, unsigned int y)

15 {

16 float radius1 = 360.0f;

17 float radius2 = 60.0f;

18 float height = 18.0f;

19

20 float rr = radius1*radius1;

21

22 unsigned int black = 0xff000000;

23 unsigned int white = 0xffffffff;

24 unsigned int gray = 0xff404040;

25 unsigned int dise = 0xffc0c0c0;

26

27 float i = x - 512.0f;

28 float j = y - 512.0f;

29

30 const float sqrt2 = sqrtf(2.0f)*0.5f;

31

32 if ((i*i + j*j) > rr)

33 {

34 // 八卦图

35 Rect rt1 = {-radius1*0.4f, radius1*0.4f,

-radius1 - height*7, -radius1 - height*6};

36 Rect rt2 = {-radius1*0.4f, radius1*0.4f,

-radius1 - height*5, -radius1 - height*4};

37 Rect rt3 = {-radius1*0.4f, radius1*0.4f,

-radius1 - height*3, -radius1 - height*2};

38

39 Rect rtc1 = {-radius1*0.06f, radius1*0.06f, -radius1 - height*7, -radius1 - height*6};

40 Rect rtc2 = {-radius1*0.06f, radius1*0.06f, -radius1 - height*5, -radius1 - height*4};

41 Rect rtc3 = {-radius1*0.06f, radius1*0.06f, -radius1 - height*3, -radius1 - height*2};

42

43 float list_sin[8] = {0.0f, sqrt2, 1.0f, sqrt2, 0.0f, -sqrt2, -1.0f, -sqrt2};

44 float list_cos[8] = {1.0f, sqrt2, 0.0f, -sqrt2, -1.0f, -sqrt2, 0.0f, sqrt2};

45 int list_eight[8] = {0, 1, 2, 3, 7, 6, 5, 4};

46

相关文档
最新文档