Skip to content

frankcwl/Curve_Fitting_Project

Repository files navigation

Project1

代码功能

1. UI.java

GUI分为左右两个部分,左半部分为坐标系,用于绘制给定的点、拟合后的函数图像以及对用户在坐标系上的动作进行反馈(比如缩放、移动等);右半部分为功能选择界面,能够从指定的.csv和.txt文件读入给定的数据,并选择进行拟合的算法。本项目中采用Java基础类的Swing包。Swing 是一种轻量级组件,它采用纯 Java 实现,不再依赖于本地平台的图形界面,所以可以在所有平台上保持相同的运行效果,对跨平台支持比较出色。

2. MyPanel.java

    • 对所有的按钮实现监听,按下按钮后能执行正确的步骤。
    • 对鼠标移动进行跟踪,实时显示鼠标所在的坐标位置。
    • 对鼠标拖动进行跟踪,实现移动坐标系的功能。
    • 对鼠标滚轮滚动进行监听,实现缩放坐标系的功能。
  1. 界面的左半部分用于绘制坐标系及坐标系上的点和拟合函数图像。通过设置全局变量dx和dy表示坐标原点位置,times表示坐标缩放倍率,可以得到点的实际坐标与在界面上的坐标的对应关系,因此能将点和图像在坐标系中正确表示。因为函数图像为曲线,所以绘制函数时图像由(x,f(x))到(x+Δx,f(x+Δx))的许多段直线连接而成(实际程序中为600段直线)。

3. Algorithm.java

为了避免每次移动图像都需要重新进行计算,拟合函数的解析式由给定的数据计算得到后储存在全局变量中,这样每次重新绘制时只需要读取计算后的解析式,无需重新通过数据再次计算。

数据读入

数据有两种读入方式,推荐由.csv文件格式读入(.txt同理),A列储存x值,B列储存y值,一个点的坐标储存在同一行(即第n行为“x_n,y_n”);同样支持直接输入数据进行拟合,格式与从文件读入基本相同,但没有换行,由空格代替。

运行环境

在java 1.8和java 18的环境下能运行,其他java 1.8以上版本应该都能运行,环境无误时双击project.jar即可运行

本项目的github地址

https://github.com/frankcwl/Curve_Fitting_Project

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages