# axis-paintpad **Repository Path**: vincent-winner/axis-paintpad ## Basic Information - **Project Name**: axis-paintpad - **Description**: Amaziograph procreate 绘制轴心对称/旋转图形 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-10-20 - **Last Updated**: 2021-11-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 该应用用于绘制轴心对称/旋转图形 ### 按ESC退出程序并保存图片 ### 项目结构: ``` cvutil.py opencv工具 dual_matrix_transform.py 二维矩阵工具 global_settings.py 配置文件(软件设置) main.py 主文件(运行主文件启动程序) ``` ### 配置文件说明: ``` # 直接运行配置文件会输出配置信息 # 轴线数量 axisNum = 4 # 画布大小(单位:像素) paintGroundSize = (600, 600) # 轴线中心点偏移(单位:像素) axisCenterOffset = 50 # 背景颜色(B, G, R, A) bgColor = (255, 255, 255, 255) # 对称轴颜色(B, G, R, A) axisColor = (125, 125, 125, 255) # 轴线宽度(单位:像素) axisThickness = 1 # 画笔颜色(B, G, R, A) paintColor = (248, 231, 28, 255) # 画笔宽度(单位:像素) paintThickness = 1 # 显示轴线 displayAxis = True ``` ### 矩阵变换: ``` # 点矩阵 point_matrix # x,y 为点所在的x轴和y轴坐标 [x, y, 1] # 原点旋转矩阵 rotate_matrix # rotateAngle为旋转角度,弧度制 [[cos(rotateAngle), sin(rotateAngle), 0], [sin(rotateAngle), cos(rotateAngle), 0], [0, 0, 1]] # 平移矩阵 translation_matrix # delta_x,delta_y 为x轴和y轴的平移距离 [[1, 0, delta_x], [0, 1, delta_y], [0, 0, 1]] # 自定锚点旋转矩阵 # 平移矩阵的x轴和y轴平移距离为锚点的x和y轴坐标值 平移矩阵 x 旋转矩阵 x -平移矩阵 # 缩放矩阵 # scale_w 宽度缩放 # scale_h 高度缩放 [[scale_w, 0, 0], [0, scale_h, 0], [0, 0, 1]] # 反射矩阵(对称矩阵) # 原点对称矩阵 [[-1, 0, 0], [0, -1, 0], [0, 0, 1]] # x轴对称矩阵 [[1, 0, 0], [0, -1, 0], [0, 0, 1]] # y轴对称矩阵 [[-1, 0, 0], [0, 1, 0], [0, 0, 1]] # 关于直线y=x对称 [[0, 1, 0], [1, 0, 0], [0, 0, 1]] # 关于直线y=-x对称 [[0, -1, 0], [-1, 0, 0], [0, 0, 1]] # 任意直线对称轴矩阵 (1 / (pow(a, 2) + pow(b, 2))) * [[pow(b, 2) - pow(a, 2), -2 * a * b, -2 * a * c], [-2 * a * b, pow(a, 2) - pow(b, 2), -2 * b * c], [0, 0, 1]] ```