作品:《用Python创建罗马文字图形》

作品:《用Python创建罗马文字图形》

Shuhang Luan Archie

Completed Image:

程序图集合

Introduction:

在我练习Python的时候,我观察了罗马字体,发现如果将把它放在平面构成里,它看起来也非常漂亮。

Reference:

大致模仿了罗马文字圆形形式,比例非常好。

Design thinking:

图形函数制作

  • 首先以turtle库为基本库绘制图像:
1
import turtle as t
  • 再创建函数并定义函数变量,以创建 “m” 为例
  • 并创建镜像:
1
2
3
4
5
6
7
8
9
10
def m_word(t,x_pos,y_pos,scale):

t.setheading(0)
scale = 0.6 * scale
for mirror in [1,-1]:
# basic
t.pu()
t.goto(x_pos+20,y_pos-10)
t.pd()
t.pencolor("#580000")
  • 然后通过判定,进行各种绘画
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#draw
if mirror:
t.lt(90)
else:
t.lt(90+180*mirror)
t.fillcolor("#580000")
t.begin_fill()
t.circle(100*scale,270*mirror)
t.circle(200 *scale,-90*mirror)
t.circle(180 *scale,-90*mirror)
t.circle(130 *scale,-70*mirror)
t.seth(-90*mirror)
t.fd(200*scale*mirror)
t.end_fill()

t.up()
t.fd(20*scale*mirror)
if mirror:
t.rt(90)
else:
t.rt(90 + 180 * mirror)

t.fd(95*scale)
t.pd()

t.fillcolor("#580000")
t.begin_fill()
t.circle(40*scale*mirror)
t.end_fill()
t.up()
  • 其他图类似 … 共完成5个函数引用文件

  • 效果图如下:

制作Main程序:

  • 建立Constants,并导入五个图形函数文件:
1
2
3
4
5
6
7
8
9
10
11
import turtle
t = turtle

t.hideturtle()
turtle.bgcolor("#FF6021")
t.speed(0)
import pattern_t
import pattern_l
import pattern_m
import pattern_p
import pattern_s
  • 定义quilt函数,并创建函数变量:
1
2
3
4
def quilt(scale, col, row, width,height,border, t):
width = width
height = height
t.setup(width, height)
  • 将每一个小图形的 “轴心/起点” 调到左下角:
1
2
startx = -width * .5 +border
starty = -height * .5 +border
  • 重点!!通过for循环,创建横向与纵向的复制,并创建”row”与”col”的变量来控制图像的数量
  • 并通过num = (i + j) %5 公式,让 0,1,2,3,4 依次横竖排列
1
2
3
4
5
6
7
8
for i in range(0, row):
curr_y = starty + i * width/5.
for j in range(0, col):
curr_x = startx + j * height/5.
t.pu()
t.setpos(curr_x, curr_y)
t.pd()
num = (i + j) % 5
  • 最后通过if判定,替换为图形函数:
1
2
3
4
5
6
7
8
9
10
if (num == 0):
pattern_t.t_word(t, curr_x, curr_y,scale)
if (num == 1):
pattern_p.p_word(t, curr_x, curr_y,scale)
if (num == 2):
pattern_l.l_word(t, curr_x, curr_y,scale)
if (num == 3):
pattern_s.s_word(t, curr_x, curr_y,scale)
if (num == 4):
pattern_m.m_word(t, curr_x, curr_y,scale)
  • 搞定!

另附杂七杂八临摹练习图:

  • Title: 作品:《用Python创建罗马文字图形》
  • Author: Shuhang Luan
  • Created at: 2022-11-18 16:05:07
  • Updated at: 2023-03-19 10:39:07
  • Link: https://archieluan.github.io/2022/11/18/Practice-plane-composition/
  • License: This work is licensed under CC BY-NC-SA 4.0.
推荐阅读
作品:《用Python创建飓风模拟器》 作品:《用Python创建飓风模拟器》 作品:《风格化森林-程序化生成工具》 作品:《风格化森林-程序化生成工具》 作品:《Lost corner》-Shader 作品:《Lost corner》-Shader
 Comments