如何制作卡片
◆ ◆ ◆
作者 | 王至宏
广州大学数学系
前段时间,表弟恩恩在好玩的数学商城淘了套益智玩具(点击查看>>),里边有三张别致的卡片勾起了我的兴趣。
这三张卡片都可以无限翻折
卡片1 每个画面四个小块
卡片2 每个画面三个小块
卡片3 平面六边形的无限翻折
把弄这些奇特的卡片同时,自然想到了两个问题
1. 这些卡片怎么实现无限翻折的?
2. 怎么利用卡片无限翻转的特性?
– 即 –
△ 应用问题:利用折纸创意制作贺卡
△ 理论问题:讨论无限翻折的原理
回应本篇标题,先解决应用问题
如何设计折纸效果?
制作流程
1. 以卡片1 为例,获取素材图
2. Photoshop 描出素材框线
3. 菱块分为四组,每组对应一个画面
4. 分别填充图片,电子版完成
5. 打印并按框线折纸
扫描或长按二维码
查看图文教程
▼
高级玩法
△ 一定视觉差下,四个菱块可组成方形
△ 巧用视觉差
视觉错觉-别盯着我
△ 按图示裁切,菱块上顶点为原图顶点
△ 成品效果
PS:图片裁切费时,多卡片制作容易忙不过来
这时候,万能工具 Python 就该登场了。
Python 编码
Python 有PIL,OpenCV,Scikit-Image 等丰富的图片处理库,这里主要用 skimage 库裁切图片,附参考代码:
函数代码:
from skimage import transform,io
from PIL import Image
def diamond_math(img,size,alpha=45,n=1) :
#旋转拉伸
img = transform.resize(im,size)
#转格式
io.imsave(file,img)
return im
def pil_to_ski(img,file=’1.png’) :
img = io.imread(file)
return img
#输入:粘贴对象,文件,大小,位置
def pic_paste(img,file,size,loc) :
#初始图片im
#图片信息
min(height,width)
b = 2*a+1
#切块顺序,左上,右上,右下,左下
x,y = lo
c#储存拉伸后的图片
for i,pic in enumerate(im_list):
#粘贴图像
for i,pic in enumerate(im_list2):
img.paste(im_list2[0],(x+4*w,y))
return img
主函数代码:
h = 300 #设定方块默认像素
int(300*1.426)
int(4.5*w),int(2.5*h)),’black’)
int(4.5*w),int(2.5*h)),’black’)
input(‘Please input the file names,pic1:’)
input(‘Please input the file names,pic2:’)
input(‘Please input the file names,pic3:’)
input(‘Please input the file names,pic4:’)
pic_paste(empty_img1,file1,(h,w),(0,2*h))
pic_paste(empty_img2,file3,(h,w),(-w//2,-h//2))
pic_paste(empty_img2,file4,(h,w),(-w//2,h//2))
img2 = pil_to_ski(empty_img2,’02.png’)
input(‘输出完毕!’)
程序制卡效果
designed by python
– 小结 –
△ 方法1 Photoshop 填充模板图
△ 方法2 Python 运行代码
理论篇
理论是数学探究必不可少的部分,本篇只做铺垫
代码用了菱块对角线比例,有一定测量误差
理论探究正好可以求出所需精确数据
翻转八连粽的菱块对角线
菱块的比例需精确计算,否则有下边两种情况
菱块过高,无法翻转
菱块过长,中间有空隙
近期学业忙碌,理论下次细说
感兴趣的点击下边好看,
1000+点赞拟稿下篇
无限翻折汇总
三阶菱块
四阶菱块
(类似地,可设计 n 阶菱块)
平面六边形
立体八边形
方块翻折
如有更多补充,欢迎下边留言~
图文编辑:王至宏
排版审稿:金娜
—————-
哪里可以买到这套学具?
请看↓↓↓
动手动脑 玩转数学
江苏省数学文化素质教育资源库特别推荐
做中学、玩中学的数学学具
>>点击这里查看更多介绍<<
长扫识别二维即可购买
▼
1. 学具专题 | 数学文化创意折纸作品秀
2. 学具专题 | 数学文化创意折纸作品秀
3. 学具专题 | 数学文化创意折纸作品秀
传播数学,普及大众
长按识别二维码关注我们
欢迎把我们推荐给你身边的朋友
▼
▼▼▼点击阅读原文购买学具。