实验一 绘制金刚石图案

基于VS2019的MFC进行完成的代码。

创建之后,只需要在OnDraw()函数里做如下修改即可使用。

老师要求实现窗体功能,然鹅我并不会,所以就没弄。

 1 void CTestView::OnDraw(CDC* pDC)
 2 {
 3     CTestDoc* pDoc = GetDocument();
 4     ASSERT_VALID(pDoc);
 5     // TODO: add draw code for native data here
 6     
 7     CPoint p[32];
 8     double r = 400;
 9     int i,j;
10     
11     pDC->Ellipse(0,0,int(r*2),int(r*2));
12 
13     for(i=0;i<30;i++)
14     {
15         p[i].x=r*cos(i*3.14/15)+r;//计算正五边形顶点
16         p[i].y=r*sin(i*3.14/15)+r;
17     }
18     
19     for(i=0; i<30; i++)
20         for(j=0; j<30; j++)
21         {
22             if(i!=j)
23             {
24                 pDC->MoveTo(p[i].x, p[i].y);
25                 pDC->LineTo(p[j].x, p[j].y);
26             }
27         }
28 
29 }

当然,我自己也用Python实现了,一并放出来。(Python实现窗体功能好麻烦,啊啊啊啊啊)

 1 # 金刚石程序
 2 
 3 import numpy as np
 4 import matplotlib.pyplot as plt
 5 from pylab import *
 6 
 7 R = 300 # 半径
 8 number_point =  30 #等分点数量
 9 
10 figure(figsize=(8,8), dpi=80)
11 temp = np.linspace(0, 2*np.pi, 1000)
12 X = np.sin(temp)*R
13 Y = np.cos(temp)*R
14 plot(X,Y,linewidth=1.0,linestyle=':')
15 
16 x=[]
17 y=[]
18 for i in range(number_point):
19   x.append(R*np.sin(i*2*pi/number_point))
20   y.append(R*np.cos(i*2*pi/number_point))
21 
22 for i in range(number_point):
23   for j in range(number_point):
24     if(i!=j):
25       plt.plot([x[i],x[j]],[y[i],y[j]])
26 
27 show()

Python画的图真的是好看

猜你喜欢

转载自www.cnblogs.com/amtop/p/10960704.html
今日推荐