【教学类-50-04】20240409“数一数”图片样式04:透明图形与边框相切,透明图形和其他透明图形相交重叠

作品展示

背景需求

已经制作了难度1.0的“数一数”——所有图形都在边框内,没有被遮挡,所有图形与其他几何图形都分开,不相交

【教学类-50-01】20240407“数一数”图片样式01:图形与边框不重合,图形和其他图形不相交-CSDN博客文章浏览阅读293次,点赞20次,收藏11次。【教学类-50-01】20240407“数一数”图片样式01:图形与边框不重合,图形和其他图形不相交https://blog.csdn.net/reasonsummer/article/details/137511583?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22137511583%22%2C%22source%22%3A%22reasonsummer%22%7Dicon-default.png?t=N7T8https://blog.csdn.net/reasonsummer/article/details/137511583?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22137511583%22%2C%22source%22%3A%22reasonsummer%22%7D

还制作2.0图形与边框重合,图形和其他图形不相交的样式,也就是部分图形会超过边框,只保留半个图案。

【教学类-50-02】20240407“数一数”图片样式02:图形与边框重合,图形和其他图形不相交-CSDN博客文章浏览阅读514次,点赞20次,收藏14次。【教学类-50-02】20240407“数一数”图片样式02:图形与边框重合,图形和其他图形不相交https://blog.csdn.net/reasonsummer/article/details/137520515icon-default.png?t=N7T8https://blog.csdn.net/reasonsummer/article/details/137520515

还有图案重叠、颜色透明度降低的3.0作品

【教学类-50-03】20240408“数一数”图片样式03:透明图形与边框不相交,透明图形和其他透明图形重叠-CSDN博客文章浏览阅读55次,点赞2次,收藏8次。【教学类-50-03】20240408“数一数”图片样式03:透明图形与边框不相交,透明图形和其他透明图形重叠https://blog.csdn.net/reasonsummer/article/details/137547784

实际上一开始AI对话大师写的代码都是图形重叠在一起的,也就是图形与边框相交,图形和其他图形相交(重叠)

最后这款04图形与边框相交,图形和其他图形重叠的样式,实际上是AI对话大师最初生成的样式。虽然代码上重叠的图案容易做,但幼儿操作时重叠图案很难操作辨认。

设定为难度4颗星

设计思路:

1、使用AI对话大师,设计需要的内容。

2、反复提出需求,输入错误的提示英文,终于获得自己想要的学具

素材准备:

先看看代码生成的图片样式

所以图形数量有多有少,有红、黄、蓝也是随机的

用透明的红黄蓝生成颜色色块

'''
中班个别化学习材料-数形颜色的点数-难度4.0
1、图形部分在边框外(有遮挡)
2、图形之间相交(有重叠部分)
3、颜色是透明的(因为有重叠,需要降低透明度)
作者:AI对话大师、阿夏
时间:2024年4月7日 20:00
'''


import matplotlib.pyplot as plt
import matplotlib.patches as patches
import numpy as np
import os,random,time
from shapely.geometry import Polygon
from shapely.ops import cascaded_union

c=int(input('画布大小(10)\n'))
num=int(input('多少张\n'))
alp=float(input('透明度(0.3=透明重叠,1.0=分开纯色)\n'))

# 创建目录
output_dir = r'C:\Users\jg2yXRZ\OneDrive\桌面\个别化\04框外连接'
os.makedirs(output_dir, exist_ok=True)

# 随机生成多个等腰直角三角形

for i in range(num):

    # 创建画布
    fig, ax = plt.subplots(figsize=(c, c))
    # 创建画布
    # fig, ax = plt.subplots()
    ax.set_xlim([0, c])
    ax.set_ylim([0, c])

    # 随机几个图形
    num_triangles = random.randint(1, 10)
    num_square = num_triangles
    num_cicle = num_triangles
    num_ellipse = num_triangles
    num_rectangle = num_triangles

    colors = ['red', 'yellow', 'blue']
    shapes = []
    for _ in range(num_triangles):
        # 随机生成等腰直角三角形的顶点坐标
        base_point = np.random.rand(2) * c
        side_length = np.random.rand() * 2 + 1

        # 计算等腰直角三角形的顶点坐标
        top_point = base_point + np.array([side_length, 0])
        height_point = base_point + np.array([0, side_length])

        # 随机选择颜色
        color = np.random.choice(colors)

        # 创建并填充等腰直角三角形
        triangle_vertices = np.array([base_point, top_point, height_point])
        triangle = patches.Polygon(triangle_vertices, closed=True, alpha=alp, color=color)
        ax.add_patch(triangle)



    # 随机生成正方形
    for _ in range(num_square):
        # 随机生成正方形的中心点坐标
        center = np.random.rand(2) * c

        # 随机生成正方形的边长
        side_length = np.random.rand() * 2 + 1

        # 随机选择颜色
        color = np.random.choice(colors)

        # 创建并填充正方形
        square = patches.Rectangle((center[0] - side_length/2, center[1] - side_length/2), side_length, side_length, alpha=alp, color=color)
        ax.add_patch(square)

    # 随机生成圆形
    for _ in range(num_cicle):
        # 随机生成圆形的中心点坐标
        center = np.random.rand(2) * c

        # 随机生成圆形的半径
        radius = np.random.rand() * 2 + 1

        # 随机选择颜色
        color = np.random.choice(colors)

        # 创建并填充圆形
        circle = patches.Circle(center, radius, alpha=alp, color=color)
        ax.add_patch(circle)

     # 随机生成椭圆形
    for _ in range(num_ellipse):
        while True:
            # 随机生成椭圆形的中心点坐标
            center = np.random.rand(2) * c

            # 随机生成椭圆形的长轴和短轴
            major_axis = np.random.rand() * 2 + 1
            minor_axis = np.random.rand() * 2 + 1

            # 检查椭圆形是否在画布内部
            ellipse_vertices = []
            num_points = 100
            angle = np.linspace(0, 2 * np.pi, num_points)
            for a in angle:
                x = center[0] + major_axis / 2 * np.cos(a)
                y = center[1] + minor_axis / 2 * np.sin(a)
                ellipse_vertices.append([x, y])
            ellipse = Polygon(ellipse_vertices)
            if not any(shape.intersects(ellipse) for shape in shapes):
                break

        # 随机选择颜色
        color = np.random.choice(colors)

        # 创建并填充椭圆形
        ellipse_patch = patches.Ellipse((center[0], center[1]), major_axis, minor_axis, alpha=alp, color=color)
        ax.add_patch(ellipse_patch)
        shapes.append(ellipse)

    # # 随机生成长方形
    # for _ in range(num_rectangle):
    #     while True:
    #         # 随机生成长方形的中心点坐标
    #         center = np.random.rand(2) * c

    #         # 随机生成长方形的长和宽
    #         width = np.random.rand() * 2 + 1
    #         height = np.random.rand() * 2 + 1

    #         # 检查长方形是否在画布内部
    #         rectangle = Polygon([(center[0] - width / 2, center[1] - height / 2),
    #                              (center[0] + width / 2, center[1] - height / 2),
    #                              (center[0] + width / 2, center[1] + height / 2),
    #                              (center[0] - width / 2, center[1] + height / 2)])
    #         if not any(shape.intersects(rectangle) for shape in shapes):
    #             break

    #     # 随机选择颜色
    #     color = np.random.choice(colors)

    #     # 创建并填充长方形
    #     rectangle_patch = patches.Rectangle((center[0] - width / 2, center[1] - height / 2), width, height,
    #                                         alpha=alp, color=color)
    #     ax.add_patch(rectangle_patch)
    #     shapes.append(rectangle)

    # 隐藏坐标轴
    ax.axis('off')

    # 保存图形
    output_path = os.path.join(output_dir, f'{i:02d}.png')
    plt.savefig(output_path, dpi=400, bbox_inches='tight')
    # 5*5 c0:430*434 200:861*848 300:1291*1302 400:1721*1723

    time.sleep(3)

    # 关闭画布
    plt.close(fig)
    # 确保每个几何图案都在画布内部,没有遮挡

图案与边缘重叠相切(部分图案切掉了),几何图案颜色、大小、数量都是随机的,有的图片多,有的图片少,并存在大量的图案相交、重叠。

4.0版本,因为有大量的图案重叠(颜色变化),而且有相切(只有半个图形),极大增加幼儿辨认的难度(可以先圈画边缘,再点数数量)

 图片生成完毕,为了实现难度分层,我还制作了其他三类图片,因此我对四类“数一数”图片统一进行批量添加星号及合并PDF处理,所以这里不展示星号添加和PDF制作的过程,感兴趣的直接看最后的代码

后续还需要对图片添加“难度星号”

【教学类-50-05】20240410“数一数”4类图片添加“难度星号”-CSDN博客文章浏览阅读55次,点赞2次,收藏2次。【教学类-50-05】20240410“数一数”4类图片添加“难度星号”https://blog.csdn.net/reasonsummer/article/details/137595258

最后读取docx,导成PDF,最后合并四份PDF 转一份打印PDF

【教学类-50-06】20240410“数一数”4类星号图片制作PDF学具-CSDN博客文章浏览阅读115次。【教学类-50-06】20240410“数一数”4类星号图片制作PDF学具https://blog.csdn.net/reasonsummer/article/details/137599757

感谢chatDPT技术让我实现了随机、分层的学具需求!

  • 21
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿夏reasonsummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值