阿基米德螺线图形设计_Java基础实验报告

合集下载

阿基米德的实验报告

阿基米德的实验报告

一、实验目的1. 验证阿基米德原理的正确性。

2. 加深对浮力、重力以及物体在液体中所受浮力大小与排开液体重力关系的理解。

3. 培养实验操作能力和数据分析能力。

二、实验原理阿基米德原理指出:浸在液体(或气体)中的物体受到向上的浮力作用,浮力的大小等于被该物体排开的液体(或气体)的重力。

其公式可表示为:F浮 = G排液× g × V排液其中,F浮为物体所受浮力,G排液为物体排开液体的重力,g为重力加速度,V排液为物体排开液体的体积。

三、实验仪器1. 弹簧测力计2. 溢水杯3. 被测重物4. 小桶5. 水四、实验步骤1. 将溢水杯装满水,确保水表面与溢水口相平。

2. 使用弹簧测力计测量被测重物的重力,记录为F1。

3. 将被测重物缓慢放入溢水杯中,使其完全浸没在水中,注意观察并记录弹簧测力计的示数,记为F2。

4. 使用小桶收集被测重物排开的水,将小桶连同收集的水一起称重,记录为F3。

5. 使用弹簧测力计测量小桶的重力,记录为F4。

6. 计算被测重物所受浮力:F浮 = F1 - F2。

7. 计算被测重物排开水的重力:G排液 = F3 - F4。

8. 比较F浮与G排液,验证阿基米德原理。

五、实验数据及结果实验数据:| 被测重物重力F1/N | 弹簧测力计示数F2/N | 排开水的重力F3/N | 小桶重力F4/N | 浮力F浮/N | 排开水的重力G排液/N ||-------------------|---------------------|------------------|---------------|------------|----------------------|| 10 | 5 | 8 | 2 | 5 | 6 |实验结果:通过比较F浮与G排液,发现F浮 = G排液,即被测重物所受浮力等于排开水的重力。

由此验证了阿基米德原理的正确性。

六、实验讨论1. 实验过程中,弹簧测力计示数的变化反映了物体所受浮力的变化,而排开水的重力则间接反映了物体所受浮力的大小。

阿基米德螺线的常见结论

阿基米德螺线的常见结论

阿基米德螺线的常见结论1. 螺线方程:阿基米德螺线可以用极坐标表示,其方程为$r =a \cdot \theta$,其中$r$是距离极点的距离,$\theta$是与参考方向的夹角,$a$是常数。

螺线方程:阿基米德螺线可以用极坐标表示,其方程为$r = a \cdot \theta$,其中$r$是距离极点的距离,$\theta$是与参考方向的夹角,$a$是常数。

2. 螺线的形状:阿基米德螺线具有一种平滑的曲线形状,它环绕着极点,并且逐渐远离极点。

螺线的形状类似于一根弹簧或螺旋状。

螺线的形状:阿基米德螺线具有一种平滑的曲线形状,它环绕着极点,并且逐渐远离极点。

螺线的形状类似于一根弹簧或螺旋状。

3. 螺线的对称性:阿基米德螺线具有旋转对称性,即它在围绕极点旋转一定角度后,形状保持不变。

这是因为螺线的方程中的角度$\theta$是可正可负的。

螺线的对称性:阿基米德螺线具有旋转对称性,即它在围绕极点旋转一定角度后,形状保持不变。

这是因为螺线的方程中的角度$\theta$是可正可负的。

4. 螺线的密度:阿基米德螺线的密度随着距离极点的增加而增加。

这意味着螺线越远离极点,螺线的一圈所覆盖的长度越大。

螺线的密度:阿基米德螺线的密度随着距离极点的增加而增加。

这意味着螺线越远离极点,螺线的一圈所覆盖的长度越大。

5. 螺线的应用:阿基米德螺线在许多领域有重要的应用,例如机械工程、物理学、建筑设计等。

它在螺旋形物体的建模和设计中起着重要的作用。

螺线的应用:阿基米德螺线在许多领域有重要的应用,例如机械工程、物理学、建筑设计等。

它在螺旋形物体的建模和设计中起着重要的作用。

以上是关于阿基米德螺线的一些常见结论。

阿基米德螺线的研究和应用具有广泛的意义,对于了解曲线的特性和解决实际问题都有重要意义。

阿基米德曲线

阿基米德曲线

机械工程中的阿基米德螺线探析阿基米德螺线广泛隐藏于自然界里,葡萄等藤茎植物的触须就是借鉴阿基米德螺线结构的柔韧性,使其紧紧缠绕物体,在恶劣环境中生长;动物世界中的蟒蛇盘绕起来形成的螺线,起到更好的防卫和攻击的作用,在生物微观细胞中,起遗传作用脱氧核糖核酸(DNA)就是规则的螺旋结构,利于节约空间,储存信息;机械仪表中钟表上的发条工作原理也离不开阿基米德螺线。

阿基米德螺线最先运用于灌溉技术,古代埃及人利用尼罗河水灌溉农田,由于河床低,农田地势高,只能用水桶提水灌溉,这样非常浪费劳力体力,于是阿基米德利用阿基米德螺线发明了螺杆,创造了“水往高处流”的奇迹,因此螺杆也是阿基米德螺旋提水器的最初原型。

由于先人不断研究改进,现在其已广泛运用于水利灌溉,机械动力,军事通信等领域。

随着科技快速发展,阿基米德螺线应用与生活实际也愈加紧凑,在此,有必要对其进行更深层的系统研究,现就其基本应用展开探讨,希望阿基米德螺线能不断开拓创新。

1 阿基米德基本简介阿基米德螺线,是一种具有特殊性质的螺旋线,假设点A 从O 点开始以匀速沿着OA 直线方向运动的同时,又以固定的转角速度绕点O 螺旋转动,俯视而看,点A 的轨迹为螺旋状,这种螺线被命名为“阿基米德螺线”,因为远动过程中是匀速运动,因此也可定义为“等速螺线”.如图1 所示。

阿基米德螺线在平面极坐标中的曲线方程:r(θ)= a + b(θ)其中:b 为螺旋系数,单位为mm/°,代表曲线每变化1° 时,曲线直径的变化量;θ为转角,单位为度,代表曲线转过的度数总和;a 为当θ= 0°时的极径,单位为mm.改变数值a 将改变螺线结构,b 是用来控制两相邻螺线间距的常量。

方程有两条不同方向螺线,分别被θ>0 和θ<0 分割,且在极点平稳光滑连接。

如果把其中一条翻转90° /270°,将会得到其对称曲线,这就是另一条螺线。

阿基米德螺线图形设计_Java基础实验报告

阿基米德螺线图形设计_Java基础实验报告

南京工程学院实验报告课程名称 JAVA基础实验项目名称图形用户界面设计实验题目阿基米德螺线图形设计实验学生班级网络132 实验学生姓名薛康威学号 202130834 实验时间 2015.5.25 实验地点信息楼实验成绩评定指导教师签字年月日一、实验目的和要求掌握Java Swing组件的使用方法,理解委托事件处理模型,掌握多种布局方式,掌握窗口菜单和快捷菜单设计方式,熟悉在组件上绘图的方法,设计出具有图形用户界面的、能够响应用户界面的、能够响应事件并处理异常的Java应用程序。

要求如下:(1)采用Swing组件设计图形用户界面,使用3个以上相同组件要声明组件数组。

(2)响应事件。

(3)异常处理,当输入数据错误时,弹出对话框,提示重新输入信息。

二、实验题目阿基米德螺线图形设计,指定图形大小、位置和颜色。

三、实验方法与步骤(需求分析、算法设计思路、流程图等)(1)需求分析这个程序主要由两大块组成,自定义图形用户界面和阿基米德螺线图形算法。

(2)算法设计思路首先是界面设计。

内容窗格采用边布局,North处添加设置面板,Center处添加画布。

其中设置面板采用流布局,添加设置圈数的文本框、选择颜色的单选按钮和最终“确定”的按钮。

其次是阿基米德螺线图形算法。

根据数学公式r = aθ,转换成直角坐标方程组后,在图形类Graphics中标点填充即可。

最后便是事件处理。

在按钮“确定”上注册事件监听,在响应方法里获得圈数(需要做异常处理)、颜色的参数,并调用画布类,将阿基米德螺线画出。

四、实验原始纪录(源程序、数据结构等)import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ArchimedesJFrame extends JFrame implements ActionListener{ private ArchimedesCanvas archimedes; //画布类声明private JButton jb3;private JPanel jp1;private JTextField text_q;private JRadioButton bcolor[];private double n;public ArchimedesJFrame(){super("阿基米德螺线");Dimension dim=getToolkit().getScreenSize();this.setBounds(dim.width/4,dim.height/4,dim.width/2,dim.height/2);this.setDefaultCloseOperation(EXIT_ON_CLOSE);text_q=new JTextField(10);jp1=new JPanel();jp1.add(new JLabel("圈数:"));jp1.add(text_q);jb3=new JButton("确定");jp1.add(jb3);jb3.addActionListener(this);String lk[]={" "," "};for(int i=0;i<lk.length;i++){jp1.add(new JLabel(lk[i]));}jp1.add(new JLabel("颜色:"));String colorstr[]={"红","绿","蓝"};ButtonGroup colorgroup=new ButtonGroup();bcolor=new JRadioButton[colorstr.length];for(int i=0;i<bcolor.length;i++){bcolor[i]=new JRadioButton(colorstr[i]);colorgroup.add(bcolor[i]);jp1.add(bcolor[i]);bcolor[i].addActionListener(this);}this.getContentPane().add(jp1,"North");archimedes=new ArchimedesCanvas(Color.black,this.n);this.getContentPane().add(new JScrollPane(archimedes),"Center");this.setVisible(true);}//响应方法public void actionPerformed(ActionEvent e){Color c=null;if(e.getSource()==bcolor[0]) //获得颜色c=new Color(255,0,0);if(e.getSource()==bcolor[1])//获得颜色c=new Color(0,255,0);if(e.getSource()==bcolor[2]) //获得颜色c=new Color(0,0,255);if(e.getSource()==jb3) {try{this.n=Double.parseDouble(text_q.getText());//获得圈数}catch(NumberFormatException nfex){JOptionPane.showMessageDialog(this, "无法转换成浮点数", "提醒", JOptionPane.WARNING_MESSAGE); //异常处理}}try{if(n<0||n>20)throw new Exception(" ");archimedes.setn(n); //设置所画圈数archimedes.setColor(c); //设置所画颜色archimedes.repaint();}catch(Exception qwe){JOptionPane.showMessageDialog(this, "圈数必须在0~20之间", "提醒", JOptionPane.WARNING_MESSAGE); //异常处理}}public static void main(String[] args){n ew ArchimedesJFrame();}}//画布类方法实现class ArchimedesCanvas extends Canvas {private Color color;private double x;public ArchimedesCanvas(Color color,double n){t his.setBackground(Color.WHITE);this.setColor(color);this.setn(n);}public void setColor(Color color){t his.color = color;}public void setn(double n){t his.x = n;}public void paint(Graphics g){int x0 = this.getWidth()/2;int y0 = this.getHeight()/2;g.setColor(color);g.drawLine(x0,0,x0,y0*2); //y轴g.drawLine(0,y0,x0*2,y0); //x轴for (int i=0; i<2048*this.x; i++){ //n圈double angle = i*Math.PI/1024; //角度,分成2*1024点double radius = 0.05*angle;int x=(int)Math.round(radius*angle*Math.cos(angle));int y=(int)Math.round(radius*angle*Math.sin(angle));g.drawOval(x0+x,y0+y,1,1); //画点}}}五、实验结果及分析(计算过程与结果、数据曲线、图表等)实验结果:分析说明:阿基米德螺线的圈数设为双精度浮点型,即含半圈、1/4圈等。

阿基米德螺旋实验报告

阿基米德螺旋实验报告

阿基米德螺旋实验报告引言阿基米德螺旋是古希腊数学家阿基米德在公元前3世纪提出的一种特殊曲线。

它是一个自我重复的曲线,具有许多独特的性质和应用。

本实验旨在通过实际操作,观察和研究阿基米德螺旋,并验证其特性。

实验目的- 了解阿基米德螺旋的定义和性质;- 运用数学知识,通过绘制螺旋图形,进一步理解阿基米德螺旋的特点;- 探究阿基米德螺旋的应用领域。

实验器材与方法器材:- 绘图纸;- 直尺;- 笔或铅笔;- 带刻度的坐标纸。

方法:1. 在绘图纸上,利用直尺和铅笔,画出一条直线;2. 选择一个起始点,沿着直线选取不同长度的线段;3. 以起始点为圆心,线段的长度为半径,绘制一个圆。

该圆即为阿基米德螺旋的第一个周期;4. 沿着直线选取其他线段的长度,在圆上的固定点再次绘制圆;5. 如此反复操作,使得每一个圆都与前一个圆有共同切点,绘制出完整的阿基米德螺旋曲线;6. 使用带刻度的坐标纸,标注阿基米德螺旋上的点的坐标。

实验结果和分析根据以上方法绘制出的阿基米德螺旋曲线如下所示:![阿基米德螺旋曲线图](spiral.png)通过标注坐标和观察,得出以下结论:1. 阿基米德螺旋是一种自我重复的曲线,它的形状和特性在不同的尺度下保持不变;2. 螺旋的每一个周期都具有相同的形状和角度;3. 螺旋的形状类似于扬声器的线圈、螺旋桨等自然和人造物体;4. 螺旋的扩张速度取决于起始点到直线的距离。

实验应用阿基米德螺旋曲线在现实生活中有许多应用。

以下是其中几个重要的应用领域:1. 工程设计:阿基米德螺旋在工程中的应用十分广泛,例如:螺旋桨、螺纹、弹簧、螺旋电梯等。

这些设备或构件的设计依赖于螺旋曲线的特性和运动规律;2. 应用数学:阿基米德螺旋是数学中的一个经典曲线,研究这个曲线有助于深入理解数学的几何性质和运动规律;3. 生物科学:阿基米德螺旋在生物科学中也有一些应用,例如:贝壳的结构、某些植物的生长方式等。

研究这些生物现象可以揭示大自然中阿基米德螺旋的普遍存在。

java实验报告

java实验报告

java实验报告Java实验报告实验名称:Java图形界面编程实验对象:Java初学者实验目的:通过实际操作掌握Java图形界面编程的基本知识和技巧实验过程:1. 实验准备:安装Java JDK开发环境,并准备好IDE工具(如Eclipse或IntelliJ IDEA)2. 创建工程:打开IDE工具,新建一个Java工程,并指定工程名和保存路径3. 创建界面:在工程上新建一个Java类,命名为"MainUI"4. 设计界面:在"MainUI"类中使用Swing或JavaFX等GUI库,设计界面布局和组件5. 添加事件监听:在"MainUI"类中添加事件监听器,使组件与逻辑代码进行关联6. 编写逻辑代码:在"MainUI"类中编写逻辑代码,实现界面交互和功能实现7. 编译运行:将工程编译成可执行文件,并运行程序,查看界面效果和功能是否符合预期8. 调试修复:根据实际运行情况,对代码进行调试和修复,确保程序的稳定性和正确性9. 测试验证:使用不同输入数据对程序进行测试,验证程序的鲁棒性和准确性10. 总结反思:对实验过程进行总结和反思,提出改进和优化的建议实验结果:通过实验,我成功创建了一个简单的Java图形界面程序,并实现了基本的交互和功能。

在界面设计方面,我使用了Swing库进行布局和组件的添加,通过事件监听器实现了按钮点击和文本框输入的监听。

在逻辑代码方面,我实现了简单的计算器功能,能够进行加减乘除等基本运算。

通过测试验证,程序运行稳定,结果准确。

实验心得:通过这次实验,我对Java图形界面编程有了更深入的了解和掌握。

我学会了使用Swing或JavaFX等库进行界面设计,以及如何添加事件监听器和编写逻辑代码。

通过实际操作,我发现编写图形界面程序相对于命令行程序更加复杂,需要考虑到用户的交互和界面布局,还需要注意代码的可读性和可维护性。

阿基米德螺旋线法测定原理

阿基米德螺旋线法测定原理

阿基米德螺旋线法测定原理阿基米德是古希腊数学家,他创立的螺旋线算法是非常有价值的。

螺旋线法的研究至今仍是非常重要的,在物理学中有着广泛的应用。

螺旋线法是计算物体表面距离的重要方法之一,可以根据它计算物体的体积和表面积。

阿基米德螺旋线法主要用于测量平面上物体的表面积和体积。

这种方法基于螺旋线概念,将一个物体裁剪成一个曲线,然后将这个曲线放置在一个平面上,每增加一个螺旋线,都会产生一个新的曲线,新曲线与旧曲线之间会形成一个新的物体。

最后,根据每条曲线的长度和宽度,计算物体的表面积和体积。

使用阿基米德螺旋线法测定物体表面距离的一般步骤如下:首先,根据物体的形状,确定一个尺寸合适的螺旋线,然后,将这个螺旋线放置在物体表面上,从物体的起点开始,不断增加螺旋线的长度,直到螺旋线完全绕过物体,每次都要计算增加的螺旋线长度,最后,根据每条螺旋线长度,计算出物体表面距离。

阿基米德螺旋线法也可用于测量物体表面积和体积。

与测量表面距离的方法类似,也要确定一个合适的螺旋线,然后将螺旋线放置在物体表面上,从物体的起点开始,不断增加螺旋线的长度,直到螺旋线完全绕过物体,每次都要计算增加的螺旋线长度,但在计算表面积和体积时,还要计算每个螺旋线的宽度,然后根据螺旋线长度和宽度,计算出物体表面积和体积。

阿基米德螺旋线法也可以用于测量复杂物体的表面积和体积。

对于复杂物体,仍然可以用螺旋线进行测量,但是需要把复杂的物体拆分为多个曲面或曲线,然后用螺旋线法一一测量,计算出每个曲面或曲线的长度和宽度,最后用这些长度和宽度的乘积累加计算出物体的表面积和体积。

阿基米德螺旋线法是一种非常有效的测定物体表面距离、表面积和体积的方法,它结合了精确性和简单性,也极大地提高了物体表面测量的精确度,因此,螺旋线法在物理学、摩擦学、重力学等学科中有着广泛的应用,而且它也是一类重要的测量方法。

机械设计及阿基米德螺旋线.

机械设计及阿基米德螺旋线.

机械设计及阿基米德螺旋线.一阿基米德螺旋线很多人都知道飞蛾扑火这个故事。

但是,为什么飞蛾会这么执着地扑向火光呢?这要从它的祖先谈起。

飞蛾的历史远比人类悠久。

在亿万年前,没有人造火光,飞蛾完全靠天然光源(日光、月光或星光)指引飞行。

由于太阳、月亮、星星距离地球都很远,它们发出的光线照到地球上可以认为是平行直线。

当飞蛾直线飞行时,它在任何位置的前进方向与光线的夹角都是一个固定值(如图1)。

可是,如果光源离得很近,不能将它们发出的光线看作平行光时,飞蛾再按照固有的习惯飞行,飞出的路线就不是直线,而是一条不断折向灯光光源的螺旋形路线(如图2)。

这在数学上称为阿基米德螺线。

通俗的说,阿基米德螺线就是既作匀速转动又作匀速直线运动而形成的轨迹。

举一个形象一点的例子:时钟上的指针在作匀速转动,假如有一只小虫子从时钟的中心,沿指针作匀速爬动,那么虫子最终走出的轨迹就是阿基米德螺线(如图3)。

阿基米德螺旋线的标准极坐标方程为:ρ=at+P0式中:a—阿基米德螺旋线系数,mm/°,表示每旋转1度时极径的增加(或减小)量;t—极角,单位为度,表示阿基米德螺旋线转过的总度数;ρo—当t=0°时的极径,mm。

阿基米德螺线的简单画法有一种最简单的方法画出阿基米德螺线,如图4,用一根线缠在一个线轴上,在其游离端绑上一小环,把线轴按在一张纸上,并在小环内套一支铅笔,用铅笔拉紧线,并保持线在拉紧状态,然后在纸上画出由线轴松开的线的轨迹,就得到了阿基米德螺线。

二蜗轮蜗杆的材料由于蜗杆传动啮合摩擦较大,且由于蜗轮滚刀的轮齿尺寸不可能做得和蜗杆绝对相同,被加工出来的蜗轮齿形难以和蜗杆齿精确共轭,必须跑合才能逐渐理想;因此,材料副的组合必须具有良好的减磨和跑合性能以及抗胶合性能。

所以蜗轮常采用青铜或者铸铁做齿圈,并且可能与淬硬并经磨削的钢制蜗杆相匹配。

1 蜗杆材料一般用合金钢或碳钢制成,大部分蜗杆的齿面经渗碳淬火等热处理获得较高的硬度,由于考虑蜗杆的齿数少,工作长度短,受力次数多等原因所致,因此,蜗杆的材料不用有色金属做。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南京工程学院
实验报告
课程名称 JAVA基础
实验项目名称图形用户界面设计
实验题目阿基米德螺线图形设计
实验学生班级网络132 实验学生姓名薛康威
学号 202130834 实验时间 2015.5.25 实验地点信息楼
实验成绩评定
指导教师签字年月日
一、实验目的和要求
掌握Java Swing组件的使用方法,理解委托事件处理模型,掌握多种布局方式,掌握窗口菜单和快捷菜单设计方式,熟悉在组件上绘图的方法,设计出具有图形用户界面的、能够响应用户界面的、能够响应事件并处理异常的Java应用程序。

要求如下:
(1)采用Swing组件设计图形用户界面,使用3个以上相同组件要声明组件数组。

(2)响应事件。

(3)异常处理,当输入数据错误时,弹出对话框,提示重新输入信息。

二、实验题目
阿基米德螺线图形设计,指定图形大小、位置和颜色。

三、实验方法与步骤(需求分析、算法设计思路、流程图等)
(1)需求分析
这个程序主要由两大块组成,自定义图形用户界面和阿基米德螺线图形算法。

(2)算法设计思路
首先是界面设计。

内容窗格采用边布局,North处添加设置面板,Center处添加画布。

其中设置面板采用流布局,添加设置圈数的文本框、选择颜色的单选按钮和最终“确定”的按钮。

其次是阿基米德螺线图形算法。

根据数学公式r = aθ,转换成直角坐标方程组后,在图形类Graphics中标点填充即可。

最后便是事件处理。

在按钮“确定”上注册事件监听,在响应方法里获得圈数(需要做异常处理)、颜色的参数,并调用画布类,将阿基米德螺线画出。

四、实验原始纪录(源程序、数据结构等)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ArchimedesJFrame extends JFrame implements ActionListener{ private ArchimedesCanvas archimedes; //画布类声明
private JButton jb3;
private JPanel jp1;
private JTextField text_q;
private JRadioButton bcolor[];
private double n;
public ArchimedesJFrame(){
super("阿基米德螺线");
Dimension dim=getToolkit().getScreenSize();
this.setBounds(dim.width/4,dim.height/4,dim.width/2,dim.height/2);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
text_q=new JTextField(10);
jp1=new JPanel();
jp1.add(new JLabel("圈数:"));
jp1.add(text_q);
jb3=new JButton("确定");
jp1.add(jb3);
jb3.addActionListener(this);
String lk[]={" "," "};
for(int i=0;i<lk.length;i++){
jp1.add(new JLabel(lk[i]));
}
jp1.add(new JLabel("颜色:"));
String colorstr[]={"红","绿","蓝"};
ButtonGroup colorgroup=new ButtonGroup();
bcolor=new JRadioButton[colorstr.length];
for(int i=0;i<bcolor.length;i++){
bcolor[i]=new JRadioButton(colorstr[i]);
colorgroup.add(bcolor[i]);
jp1.add(bcolor[i]);
bcolor[i].addActionListener(this);
}
this.getContentPane().add(jp1,"North");
archimedes=new ArchimedesCanvas(Color.black,this.n);
this.getContentPane().add(new JScrollPane(archimedes),"Center");
this.setVisible(true);
}
//响应方法
public void actionPerformed(ActionEvent e){
Color c=null;
if(e.getSource()==bcolor[0]) //获得颜色
c=new Color(255,0,0);
if(e.getSource()==bcolor[1])//获得颜色
c=new Color(0,255,0);
if(e.getSource()==bcolor[2]) //获得颜色
c=new Color(0,0,255);
if(e.getSource()==jb3) {
try{
this.n=Double.parseDouble(text_q.getText());//获得圈数}
catch(NumberFormatException nfex){
JOptionPane.showMessageDialog(this, "无法转换成浮点数", "提醒", JOptionPane.WARNING_MESSAGE); //异常处理
}
}
try{
if(n<0||n>20)
throw new Exception(" ");
archimedes.setn(n); //设置所画圈数
archimedes.setColor(c); //设置所画颜色
archimedes.repaint();
}catch(Exception qwe){
JOptionPane.showMessageDialog(this, "圈数必须在0~20之间", "提醒", JOptionPane.WARNING_MESSAGE); //异常处理
}
}
public static void main(String[] args){
n ew ArchimedesJFrame();
}
}
//画布类方法实现
class ArchimedesCanvas extends Canvas {
private Color color;
private double x;
public ArchimedesCanvas(Color color,double n){
t his.setBackground(Color.WHITE);
this.setColor(color);
this.setn(n);
}
public void setColor(Color color){
t his.color = color;
}
public void setn(double n){
t his.x = n;
}
public void paint(Graphics g){
int x0 = this.getWidth()/2;
int y0 = this.getHeight()/2;
g.setColor(color);
g.drawLine(x0,0,x0,y0*2); //y轴
g.drawLine(0,y0,x0*2,y0); //x轴
for (int i=0; i<2048*this.x; i++){ //n圈
double angle = i*Math.PI/1024; //角度,分成2*1024点
double radius = 0.05*angle;
int x=(int)Math.round(radius*angle*Math.cos(angle));
int y=(int)Math.round(radius*angle*Math.sin(angle));
g.drawOval(x0+x,y0+y,1,1); //画点
}
}
}
五、实验结果及分析(计算过程与结果、数据曲线、图表等)
实验结果:
分析说明:阿基米德螺线的圈数设为双精度浮点型,即含半圈、1/4圈等。

由于文本框为输入值,圈数的定义无法是负数或者非数字类字符,所以需要在这里添加两个异常处理,数值格式转换异常和超出规定范围异常,如上图所示。

六、实验改进与思考
改进:本实验是绘制阿基米德螺线,但由于计算机CPU处理速度太快,无法
还原详细的绘制过程。

所以根据所学知识,还可以添加线程,在画点与点之间添加睡眠时间,延缓画图过程。

思考:依此模板,其实什么样的图形都可以绘制出来,只需要改动画布类的算法就可以了。

相关文档
最新文档