递归打印旋转正方形


package test;

import java.util.Arrays;

/**
 *
 * @author Administrator
 */
public class Square {


    final static char star='*';
    final static char space=' ';
    static void  nextRow(char[][] a,int row,int col){
        a[row][col]=star;
        a[a.length-1-row][col]=star;
        if(col<a[0].length&&col>0&&row<a.length/2){
            nextRow(a, row+1,col+1);
            nextRow(a, row+1,col-1);

        }
      
    }
    public static void main(String[] args) {
        int n=5;
        int peak=n-1;
        char[][] s=new char[2*n-1][2*n-1];
        nextRow(s, 0,peak);
        String m;
        for(char[] a:s){
        m=Arrays.toString(a).replace(',',space).replace('[', space).replace(']', space);
        System.out.println(m);
    }
    }
}

计算机图形学 课 程 设 计 报 告 题目 姓名 学号 同组成员 学院 信息与工程学院 专业 计算机科学与技术 班级 指导教师 谢钟扬 2025年 月 日 目 录 1 课程设计目的 1 2 课程设计要求 1 2.1 任务要求 1 2.2 纪律要求 2 3 课程设计内容 2 3.1 基本图元光栅扫描演示系统 2 3.2 递归动态球体演示系统 5 4 需求分析 9 5 总体设计 10 6 详细设计 11 7 源程序 12 8 运行效果 13 9 实验总结 14 10 参考文献 15 要求: 1、采用系统自动生成目录 统一格式要求:小4号宋体,行距20磅 课程设计任务书 1 课程设计目的 培养对图形建模、变换、投影、消隐、光照原理的理解和应用。培养图形类的编程能力。培养计算机图形学应用软件开发的能力。 2 课程设计要求 2.1 任务要求 任务I:基本图元光栅扫描演示系统。 任务II:递归动态球体演示系统 任选一个题目完成课程设计。可选题目为:基本图元光栅扫描演示系统、递归动态球体演示系统。 考虑到完整的开发过程一般需要付出很多的时间,因此可选择如下的完成方式: (1)独立方式(1人),要求完成“基本图元光栅扫描演示系统”的全部基本内容。 (2)小组方式(3人),要求完成“递归动态球体演示系统”的全部基本内容,并对每人完成的内容作具体分工,合作完成。 课程设计任务完成后,应以导出工程的压缩包的形式提交程序源代码,应认真完成课程设计报告的撰写,报告内容应全面包含课程设计内容要求的各个部分,报告应严格遵守格式要求,电子档每人上交一份,纸质档每组打印一份上交。 课程设计报告由封面、需求分析、总体设计、详细设计、源程序、程序运行效果图、实验总结、参考文献组成。  封面包括课程设计题目、学号、姓名、指导教师姓名和完成时间;  需求分析包括项目的功能要求;  总体设计给出类的结构;  详细设计给出算法流程图;  源程序给出主要模块的头文件和源文件;  运行效果图给出程序的动态效果图;  实验总结应对整个实验过程中遇到的问题及解决过程,实验的收获,心得体会,团队协作情况进行总结描述。  参考文献给出课程设计中引用的文献,并在报告中使用角标给出引文出处。 课程设计成绩根据提交的课程设计报告以及软件系统的验收成绩进行综合评定,分为优,良,中,及格,不及格5个等级。要求在完成具体课程设计项目所要求功能的同时注重课程设计的创新性。 2.2 纪律要求  独立完成实验内容,不得抄袭或剽窃他人工作。  在实验报告中详细记录实验过程、遇到的问题及解决方案,并对实验结果进行分析。  积极参与课堂讨论和小组合作,尊重他人意见,共同推动项目进展。  鼓励创新思维,鼓励在满足基本要求的前提下尝试新的编程方法和解决方案。 3 课程设计内容 3.1 基本图元光栅扫描演示系统 (1) 设计目标 图形的绘制实质上是像素的操作,像素有三个参数,位置坐标x、y以及颜色c。本设计使用正方形模拟像素,保持屏幕的纵横比为4:3,将基本图元(直线、圆和椭圆)在像素级别上绘制出来。由于圆是椭圆的特例,即长轴和短轴长度相等的椭圆,可以使用键盘的约束来解决。本设计要求在像素级别演示直线的走样、反走样和颜色渐变;演示椭圆(含圆)的走样和反走样。详细功能要求如下: 使用静态切分视图,将屏幕切分为左右窗格。左窗格是控制窗格,右窗格为显示窗格。 保持右窗格的二维设备坐标系不变,原点位于客户区左上角,x轴水平向右为正,y轴铅直向下为正。 在右窗格内绘制40×30个正方形代表虚拟像素网格,使用橡皮筋技术动态演示基本图元的绘制过程。 在左窗格内借助快捷颜色按钮选择直线的起点和终点颜色,或双击“起点”或“终点”颜色按钮弹出系统颜色对话框,从中选择直线的起点和终点颜色。在右窗格选择直线段的起点像素和终点像素位置,分别绘制走样直线、反走样直线、颜色渐变直线。要求:在移动鼠标的过程中时,按下Shift键可绘制水平或垂直直线。 在左窗格选择椭圆(含圆)的线条颜色,在右窗格内选择两个像素作为椭圆(包含圆)的外接矩形的左上角点和右下角点,分别绘制走样椭圆(含圆)、反走样椭圆(包含圆)。要求:在移动鼠标的过程中,按下Shift键可以绘制圆。 在状态栏动态显示鼠标在右窗格内的虚拟像素坐标,虚拟像素的坐标取为虚拟像素网格的中心点坐标,需要从设备坐标系转换到虚拟像素坐标系,即右窗格网格左上角点的虚拟像素坐标为(0,0),网格右下角点的虚拟像素坐标为(39,29)。 (2) 设计效果 单击左窗格的“直线”按钮后,在右窗格内使用鼠标绘制的走样直线,如图Ⅰ-1所示。 单击左窗格的“直线”按钮,同时选中“反走样”复选框后,在右窗格内使用鼠标绘制的反走样直线如图Ⅰ-2所示。 单击左窗格的“直线”按钮,同时为直线选择了起点和终点颜色后,在右窗格内使用鼠标绘制的颜色渐变直线如图Ⅰ-3所示。 单击左窗格的“直线”按钮,为直线选择了起点和终点颜色后,同时选中“反走样”复选框,在右窗格内使用鼠标绘制的颜色渐变反走样直线如图Ⅰ-4所示。 单击左窗格的“椭圆”按钮后,在右窗格内使用鼠标绘制的走样椭圆如图Ⅰ-5所示。 单击左窗格的“椭圆”按钮同时选中“反走样”复选框后,在右窗格内绘制的反走样椭圆如图Ⅰ-6所示。 单击左窗格的“椭圆”按钮后,在右窗格内拖动鼠标的同时按下Shift键绘制的走样圆如图Ⅰ-7所示。 单击左窗格的“椭圆”按钮同时选中“反走样”复选框后,在右窗格内拖动鼠标的同时按下Shift键绘制的反走样圆如图Ⅰ-8所示。 3.2 递归动态球体演示系统 (1) 设计目标 在正八面体的基础上构建球体。正八面体的顶点位于球面上,正八面体的体心设为球心。 将正八面体每个正三角形表面的三条边的中点连接形成四个小正三角形,并将三个中点拉伸到球面上。对每个小正三角形进行同样的递归操作可以构造出球体线框模型。 请使用不同深度的递归划分法分别绘制无光照线框球,有光照线框球、无光照表面球和有光照表面球。给定沿x,y,z坐标轴3个方向的位移量和绕x,y,z坐标轴的旋转角度,控制球体在窗口客户区内运动。当球体和客户区边界发生碰撞后,改变运动方向。请使用三维正交变换绘制递归动态球体。 (2) 设计效果 使用静态切分视图,将窗口切分为左右窗格。左窗格为继承于CForemView类的表单视图类CLeftPortion,右窗格为一般视图类CTestView。 右窗格的三维坐标系原点位于客户区中心,x轴水平向右为正,y轴铅直向上为正, z轴垂直于屏幕指向观察者。 左窗格放置代表“球体控制”、“模型分类”、“光源开关”、“平移变换”和“旋转变换”4个组框控件。“球体控制”组框提供“球体半径”和“球面级数”2个滑动条;“模型分类”组框提供“线框”和“表面”2个单选按钮;“光源开关”分类组框提供“关”和“开”2个单选按钮;“平移变换”组框提供“X方向”、“Y方向”和“Z方向”3个滑动条;“旋转变换”组框提供“绕X轴”、“绕Y轴”和“绕Z轴”3个滑动条。 球体在右窗格内根据左窗格的设定值运动,并和客户区边界发生碰撞。 当球面级数的值为8时,右窗格内的球体退化为正八面体。当球面级数的值为32时,在右窗格内的正八面体的每个等边三角形的三条边上取3个中点并用直线连接,形成4个小正三角形。将3个中点的模长扩展至球体半径长度,得到递归球体。当球面级数增加时,对每个小正三角形面片继续进行同样的递归,最终生成递归球体。 根据左窗格的参数值,分别绘制无光照和有光照消隐线框球、无光照和有光照表面球。其中无光照消隐线框采用走样直线绘制,颜色为白色;有光照消隐线框球采用反走样颜色渐变直线绘制;光照表面球使用Gouraud双线性光强插值模型绘制,无光照球体表面填充为白色。 在左窗格的“模型分类”组框内选择“线框”后,“光照开关”为“关”,“球面级数”为0,当前球体面片数为8,右窗格内绘制的初始消隐正八面体线框模型效果如图Ⅱ-1所示。 在左窗格的“模型分类”组框内选择“线框”后,“光照开关”为“关”,“球面级数”为1,当前球体面片数为32,右窗格内绘制的消隐递归球体线框模型效果如图Ⅱ-2所示。 在左窗格的“模型分类”组框内选择“线框”后,“光照开关”为“关”,“球面级数”为2,当前球体面片数为128,右窗格内绘制的消隐递归球体线框模型效果如图Ⅱ-3所示。 在左窗格的“模型分类”组框内选择“线框”后,“光照开关”为“关”,“球面级数”为3,当前球体面片数为512,右窗格内绘制的消隐递归球体线框模型效果如图Ⅱ-4所示。 在左窗格的“模型分类”组框内选择“线框”后,“光照开关”为“关”,“球面级数”为4,当前球体面片数为2048,右窗格内绘制的消隐递归球体线框模型效果如图Ⅱ-5所示。 在左窗格的“模型分类”组框内选择“线框”后,“光照开关”为“开”,“球面级数”为4,当前球体面片数为2048,右窗格内绘制的消隐递归球体光照线框模型效果如图Ⅱ-6所示。 在左窗格的“模型分类”组框内选择“表面”后,光照开关为“关”,“球面级数”为4,当前球体面片数为2048,右窗格内绘制的消隐递归球体无光照表面模型效果如图Ⅱ-7所示。 在左窗格的“模型分类”组框内选择“表面”后,光照开关为“开”,“球面级数”为4,当前球体面片数为2048,右窗格内绘制的消隐递归球体光照表面模型效果如图Ⅱ-8所示。 课程设计报告 4 需求分析 [需求分析包括项目的功能要求,如有组队则应包括分组情况与组内分工说明] 5 总体设计 [总体设计给出类的结构] 6 详细设计 [详细设计给出算法流程图] 7 源程序 [源程序给出主要模块的头文件和源文件] 8 运行效果 [运行效果图给出程序的动态效果图] 9 实验总结 [实验总结应对整个实验过程中遇到的问题及解决过程,实验的收获,心得体会,团队协作情况进行总结描述。] 10 参考文献 [参考文献给出课程设计中引用的文献,并在报告中使用角标给出引文出处。] -----------------------文档格式要求 撰写完成后删除此段落-------------------- (1)用A4纸排版,单面或双面打印都可,除特殊要求,黑白打印即可 (2)封面排版及格式要求按封面页,已在封面页上规定 (3)目录页排版格式要求: 1)目录标题:小3号黑体,1.5倍行距 2)目录项:小4号宋体,行距20磅 (4)正文及标题排版格式要求: 1)正文内容:小4号宋体,1.5倍行距,首行缩进2字符 2)标题格式要求:  一级标题:如“1” 4号黑体 加粗 段前0.5行,段后0.5行 ,无缩进,每章开始另起一页 二级标题 如“ 1.1”小4号黑体 1.5倍行距,无缩进 三级标题 如“1.1.1”,如存在,同二级标题格式要求 3)图表标题:图和表都需要有名称,宋体五号,图名位于图下方,编号为“图1-X”(表示第1章节的第1副图);表名位于表上方,编号为“表1.x” (表示第1.1章节的第1张表) 4)参考文献应包括:文章名称. 第一作者,第二作者,第三作者等(超过3个用“等”). 出版物名称,参考年.第几期 如:[1]几种图像分割阈值选取方法的比较与研究. 陈冬岚,刘京南,余玲玲.机械制造与自动化,2003.1 成 绩 评 定 表 评分 姓 名 成 绩 评 分 人 复 评 人 指导老师 评价 指导老师: 日 期:
06-17
【轴承故障诊断】基于融合鱼鹰和柯西变异的麻雀优化算法OCSSA-VMD-CNN-BILSTM轴承诊断研究【西储大学数据】(Matlab代码实现)内容概要:本文提出了一种基于融合鱼鹰和柯西变异的麻雀优化算法(OCSSA)优化变分模态分解(VMD)参数,并结合卷积神经网络(CNN)与双向长短期记忆网络(BiLSTM)的轴承故障诊断模型。该方法利用西储大学公开的轴承数据集进行验证,通过OCSSA算法优化VMD的分解层数K和惩罚因子α,有效提升信号分解精度,抑制模态混叠;随后利用CNN提取故障特征的空间信息,BiLSTM捕捉时间序列的动态特征,最终实现高精度的轴承故障分类。整个诊断流程充分结合了信号预处理、智能优化与深度学习的优势,显著提升了复杂工况下轴承故障诊断的准确性与鲁棒性。; 适合人群:具备一定信号处理、机器学习及MATLAB编程基础的研究生、科研人员及从事工业设备故障诊断的工程技术人员。; 使用场景及目标:①应用于旋转机械设备的智能运维与故障预警系统;②为轴承等关键部件的早期故障识别提供高精度诊断方案;③推动智能优化算法与深度学习在工业信号处理领域的融合研究。; 阅读建议:建议读者结合MATLAB代码实现,深入理解OCSSA优化机制、VMD参数选择策略以及CNN-BiLSTM网络结构的设计逻辑,通过复现实验掌握完整诊断流程,并可进一步尝试迁移至其他设备的故障诊断任务中进行验证与优化。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值