parent
c390d2dffe
commit
61e620d19d
@ -0,0 +1,117 @@
|
|||||||
|
# -*- encoding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
@Author: packy945
|
||||||
|
@FileName: fitting.py
|
||||||
|
@DateTime: 2023/5/31 14:16
|
||||||
|
@SoftWare: PyCharm
|
||||||
|
"""
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
from scipy.optimize import curve_fit
|
||||||
|
import pylab as mpl
|
||||||
|
from tkinter import *
|
||||||
|
import mpl_toolkits.axisartist as axisartist
|
||||||
|
import data as gl_data
|
||||||
|
import function
|
||||||
|
|
||||||
|
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文不显示问题
|
||||||
|
plt.rcParams['axes.unicode_minus'] = False #解决负数坐标显示问题
|
||||||
|
|
||||||
|
def draw_axis(low, high, step=250):
|
||||||
|
fig = plt.figure(figsize=(4.4, 3.2))
|
||||||
|
ax = axisartist.Subplot(fig, 111)# 使用axisartist.Subplot方法创建一个绘图区对象ax
|
||||||
|
fig.add_axes(ax)# 将绘图区对象添加到画布中
|
||||||
|
ax.axis[:].set_visible(False)# 通过set_visible方法设置绘图区所有坐标轴隐藏
|
||||||
|
ax.axis["x"] = ax.new_floating_axis(0, 0)# 添加新的x坐标轴
|
||||||
|
ax.axis["x"].set_axisline_style("-|>", size=1.0)# 给x坐标轴加上箭头
|
||||||
|
ax.axis["y"] = ax.new_floating_axis(1, 0)# 添加新的y坐标轴
|
||||||
|
ax.axis["y"].set_axisline_style("-|>", size=1.0)# y坐标轴加上箭头
|
||||||
|
ax.axis["x"].set_axis_direction("bottom")# 设置x、y轴上刻度显示方向
|
||||||
|
ax.axis["y"].set_axis_direction("left")# 设置x、y轴上刻度显示方向
|
||||||
|
plt.xlim(low, high) # 把x轴的刻度范围设置
|
||||||
|
plt.ylim(low, high) # 把y轴的刻度范围设置
|
||||||
|
ax.set_xticks(np.arange(low, high + 5, step))# 把x轴的刻度间隔设置
|
||||||
|
ax.set_yticks(np.arange(low, high + 5, step))# 把y轴的刻度间隔设置
|
||||||
|
|
||||||
|
def generate_and_plot_sample_data(low, high):
|
||||||
|
num_samples = 25#设置样本点数量
|
||||||
|
gl_data.X = np.random.randint(low=low, high=high, size=num_samples)#随机生成x值
|
||||||
|
gl_data.Y = np.random.randint(low=low, high=high, size=num_samples)#随机生成y值
|
||||||
|
draw_axis(low, high)#绘制坐标轴
|
||||||
|
plt.scatter(gl_data.X, gl_data.Y, color='red') # 绘制样本数据点
|
||||||
|
plt.savefig(r"dot.png", facecolor='w')#保存到本地
|
||||||
|
plt.close()#清除内存
|
||||||
|
set_phtot(1)#显示到主界面
|
||||||
|
|
||||||
|
# 显示数据集
|
||||||
|
def selfdata_show(x, y, low, high):# 显示数据集
|
||||||
|
num_points = len(x) # 样本数据点的数量
|
||||||
|
colors = np.random.rand(num_points, 3)# 生成随机颜色
|
||||||
|
draw_axis(low, high)
|
||||||
|
plt.scatter(x, y, c=colors)# 绘制样本数据点
|
||||||
|
plt.savefig(r"dot.png", facecolor='w') # 保存为png文件
|
||||||
|
plt.clf()
|
||||||
|
set_phtot(1)
|
||||||
|
|
||||||
|
def draw_line(xian_index, low, high, sx, sy):
|
||||||
|
draw_axis(low, high)#绘制坐标轴
|
||||||
|
popt = []#初始化curve_fit
|
||||||
|
pcov = []#初始化curve_fit
|
||||||
|
cur = function.Fun[xian_index] # 装载正在选择的函数
|
||||||
|
func = cur.get_fun()#获取当前函数func
|
||||||
|
popt, pcov = curve_fit(func, sx, sy)# 用curve_fit来对点进行拟合
|
||||||
|
curve_x = np.arange(low, high)#按照步长生成的一串数字
|
||||||
|
curve_y = [func(i, *popt) for i in curve_x]# 根据x0(按照步长生成的一串数字)来计算y1值
|
||||||
|
plt.plot(curve_x, curve_y, color='blue', label='Fitted Curve')#绘制拟合曲线
|
||||||
|
plt.legend()
|
||||||
|
# plt.show()#显示函数图像
|
||||||
|
plt.savefig(r"line.png", facecolor='w')#将图片保存到本地
|
||||||
|
plt.close()#清除内存
|
||||||
|
set_phtot(2)#将图片显示到程序中
|
||||||
|
|
||||||
|
def draw_dots_and_line(xian_index, low, high, sx, sy):
|
||||||
|
############## begin #####################
|
||||||
|
draw_axis(low, high)
|
||||||
|
popt = []
|
||||||
|
pcov = []
|
||||||
|
cur = function.Fun[xian_index] # 装载正在选择的函数
|
||||||
|
func = cur.get_fun()#获取当前函数func
|
||||||
|
popt, pcov = curve_fit(func, sx, sy)# 用curve_fit来对点进行拟合
|
||||||
|
positive_mask = sy >= 0.0#给样本点分类
|
||||||
|
negative_mask = sy < 0.0#给样本点分类
|
||||||
|
positive_colors = ['red' if x >= 0.0 else 'blue' for x in sx]#给样本点分类
|
||||||
|
negative_colors = ['green' if x >= 0.0 else 'purple' for x in sx]#给样本点分类
|
||||||
|
#根据样本点类型决定样本点颜色
|
||||||
|
plt.scatter(gl_data.X[positive_mask], gl_data.Y[positive_mask], color=np.array(positive_colors)[positive_mask], lw=1)
|
||||||
|
plt.scatter(gl_data.X[negative_mask], gl_data.Y[negative_mask], color=np.array(negative_colors)[negative_mask], lw=1)
|
||||||
|
curve_x = np.arange(low, high)#按照步长生成的一串数字
|
||||||
|
curve_y = [func(i, *popt) for i in curve_x]# 根据x0(按照步长生成的一串数字)来计算y1值
|
||||||
|
############## end #######################
|
||||||
|
plt.plot(curve_x, curve_y, color='blue', label='Fitted Curve')#绘制拟合曲线
|
||||||
|
plt.legend()
|
||||||
|
plt.savefig(r"line.png", facecolor='w')#将图片保存到本地
|
||||||
|
plt.close()#清除内存
|
||||||
|
set_phtot(2)#将图片显示到程序中
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def set_phtot(index1):
|
||||||
|
# 显示图像
|
||||||
|
Canvas2 = gl_data.Canvas2
|
||||||
|
if index1 == 1:
|
||||||
|
gl_data.Img1=PhotoImage(file=r"dot.png")
|
||||||
|
# print(gl_data.Img1)
|
||||||
|
set_img1=Canvas2.create_image(2, 10, image=gl_data.Img1, anchor=NW)
|
||||||
|
Canvas2.update()
|
||||||
|
print("已输出数据点")
|
||||||
|
elif index1 == 2:
|
||||||
|
gl_data.Img2=PhotoImage(file=r"line.png")
|
||||||
|
# print(gl_data.Img2)
|
||||||
|
set_img2=Canvas2.create_image(2, 10, image=gl_data.Img2, anchor=NW)
|
||||||
|
Canvas2.update()
|
||||||
|
print("已输出数据点和曲线")
|
||||||
|
if __name__ == '__main__':
|
||||||
|
# random_points()
|
||||||
|
|
||||||
|
pass
|
@ -0,0 +1,137 @@
|
|||||||
|
# -*- encoding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
@Author: packy945
|
||||||
|
@FileName: function.py
|
||||||
|
@DateTime: 2023/6/6 14:45
|
||||||
|
@SoftWare: PyCharm
|
||||||
|
"""
|
||||||
|
import numpy as np
|
||||||
|
import math
|
||||||
|
import data
|
||||||
|
import pandas as pd
|
||||||
|
from pandas import DataFrame
|
||||||
|
# 函数库
|
||||||
|
Show = []
|
||||||
|
Fun = []
|
||||||
|
Fit_type_library = {}
|
||||||
|
class Function:
|
||||||
|
def __init__(self, no, name, v, fun, complete='', demo=''):
|
||||||
|
# 函数名称
|
||||||
|
self.name = name
|
||||||
|
# 变量个数
|
||||||
|
self.variable = v
|
||||||
|
self.function = fun
|
||||||
|
# 函数编号
|
||||||
|
self.no = no
|
||||||
|
# 是否显示
|
||||||
|
self.show = 0
|
||||||
|
# 完整函数
|
||||||
|
self.complete = complete
|
||||||
|
# self.print = ''
|
||||||
|
self.demo = demo
|
||||||
|
def get_fun(self):
|
||||||
|
if self.variable == 2:
|
||||||
|
return self.fun2
|
||||||
|
elif self.variable == 3:
|
||||||
|
return self.fun3
|
||||||
|
elif self.variable == 4:
|
||||||
|
return self.fun4
|
||||||
|
elif self.variable == 5:
|
||||||
|
return self.fun5
|
||||||
|
elif self.variable == 6:
|
||||||
|
return self.fun6
|
||||||
|
|
||||||
|
def fun2(self, x, a0, a1):
|
||||||
|
return eval(self.function)
|
||||||
|
|
||||||
|
def fun3(self, x, a0, a1, a2):
|
||||||
|
return eval(self.function)
|
||||||
|
|
||||||
|
def fun4(self, x, a0, a1, a2, a3):
|
||||||
|
return eval(self.function)
|
||||||
|
|
||||||
|
def fun5(self, x, a0, a1, a2, a3, a4):
|
||||||
|
return eval(self.function)
|
||||||
|
|
||||||
|
def fun6(self, x, a0, a1, a2, a3, a4, a5):
|
||||||
|
return eval(self.function)
|
||||||
|
|
||||||
|
def print_f(self, a):
|
||||||
|
# print('self.show='+self.complete)
|
||||||
|
exec('self.show='+self.complete)
|
||||||
|
# print(self.show)
|
||||||
|
return self.show
|
||||||
|
def f_init():
|
||||||
|
cur = 0 # 函数编号
|
||||||
|
# 一次函数
|
||||||
|
newfun = Function(cur, '一次函数', 2, 'a0*x+a1', "f'{a[0]}x+{a[1]}'", 'ax+b')
|
||||||
|
newfun.show = 1
|
||||||
|
Fun.append(newfun)
|
||||||
|
cur += 1
|
||||||
|
# 二次函数
|
||||||
|
newfun = Function(cur, '二次函数', 3, 'a0*x*x+a1*x+a2', "f'{a[0]}x^2+{a[1]}x+{a[2]}'", 'ax^2+bx+c')
|
||||||
|
newfun.show = 1
|
||||||
|
Fun.append(newfun)
|
||||||
|
cur += 1
|
||||||
|
# 三次函数
|
||||||
|
newfun = Function(cur, '三次函数', 4, 'a0*x*x*x+a1*x*x+a2*x+a3', "f'{a[0]}x^3+{a[1]}x^2+{a[2]}x+{a[3]}'", 'ax^3+bx^2+cx+d')
|
||||||
|
newfun.show = 0
|
||||||
|
Fun.append(newfun)
|
||||||
|
cur += 1
|
||||||
|
# 四次函数
|
||||||
|
newfun = Function(cur, '四次函数', 5, 'a0*x*x*x*x+a1*x*x*x+a2*x*x+a3*x+a4'
|
||||||
|
, "f'{a[0]}x^4+{a[1]}x^3+{a[2]}x^2+{a[3]}x+{a[4]}'", 'ax^4+bx^3+cx^2+dx+e')
|
||||||
|
newfun.show = 0
|
||||||
|
Fun.append(newfun)
|
||||||
|
cur += 1
|
||||||
|
# 指数函数
|
||||||
|
newfun = Function(cur, '指数函数', 2, 'a0*np.exp(0.01*x)+a1', "f'{a[0]}e^(0.01x)+{a[1]}'", 'a*e^(0.01x)+b')
|
||||||
|
newfun.show = 0
|
||||||
|
Fun.append(newfun)
|
||||||
|
cur += 1
|
||||||
|
# 对数函数
|
||||||
|
newfun = Function(cur, '对数函数', 3, 'a0*(np.log(x) + 1e-5) / (np.log(a1) + 1e-5) + a2',
|
||||||
|
"f'{a[0]}log(x,{a[1]})+{a[2]}'", 'alog(x,b)+c')
|
||||||
|
newfun.show = 0
|
||||||
|
Fun.append(newfun)
|
||||||
|
cur += 1
|
||||||
|
# 高斯函数
|
||||||
|
|
||||||
|
# F_init()
|
||||||
|
def write():
|
||||||
|
file_path = 'functions.xlsx'#设置路径
|
||||||
|
df = pd.read_excel(io=file_path, header=1)#设置表格
|
||||||
|
print(df)
|
||||||
|
df.columns = ['no', 'name', 'variable', 'function', 'complete', 'demo', 'show']#设置表格标题
|
||||||
|
cur = 0#重置计数
|
||||||
|
for f in Fun:#遍历函数类型
|
||||||
|
df.loc[cur] = [cur, f.name, f.variable, f.function, f.complete, f.demo, f.show]#写进表格
|
||||||
|
cur += 1#计数加一
|
||||||
|
DataFrame(df).to_excel(file_path, sheet_name='Sheet1', index=False, header=True)#保存xlsx
|
||||||
|
|
||||||
|
|
||||||
|
def f_read():
|
||||||
|
file_path = 'functions.xlsx'#设置路径
|
||||||
|
df = pd.read_excel(io=file_path, header=0)#设置表格
|
||||||
|
cur = 0
|
||||||
|
for i in range(len(df)):#逐行读取excel
|
||||||
|
newfun = Function(df.loc[i][0], df.loc[i][1], df.loc[i][2], df.loc[i][3], df.loc[i][4], df.loc[i][5])
|
||||||
|
newfun.show = df.loc[i][6]
|
||||||
|
Show.append(df.loc[i][6])#读取函数显示信息
|
||||||
|
Fun.append(newfun)#读取函数信息并添加
|
||||||
|
cur += 1
|
||||||
|
for f in Fun:#建立简表fit_type_library
|
||||||
|
Fit_type_library[f.name] = [f.no, f.demo, f.name]
|
||||||
|
if __name__ == '__main__':
|
||||||
|
f_read()
|
||||||
|
# for f in fun:
|
||||||
|
# print([f.no, f.demo, f.name])
|
||||||
|
for f in Fun:
|
||||||
|
Fit_type_library[f.name] = [f.no, f.demo, f.name]
|
||||||
|
|
||||||
|
print(Fit_type_library)
|
||||||
|
a = [1,2,3,4,5]
|
||||||
|
x = 2
|
||||||
|
|
||||||
|
|
||||||
|
pass
|
Binary file not shown.
@ -0,0 +1,83 @@
|
|||||||
|
# -*- encoding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
@Author: packy945
|
||||||
|
@FileName: input.py
|
||||||
|
@DateTime: 2023/7/19 16:59
|
||||||
|
@SoftWare: PyCharm
|
||||||
|
"""
|
||||||
|
import tkinter as tk
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
import data as gl_data
|
||||||
|
from tkinter import *
|
||||||
|
global top
|
||||||
|
def input_num(root_tk):
|
||||||
|
global top
|
||||||
|
top = tk.Toplevel(root_tk)
|
||||||
|
label1 = Label(top, text="坐标点个数")
|
||||||
|
label1.grid(row=0) # 这里的side可以赋值为LEFT RTGHT TOP BOTTOM
|
||||||
|
num1 = IntVar()
|
||||||
|
entry1 = Entry(top, textvariable=num1)
|
||||||
|
num1.set(0)
|
||||||
|
entry1.grid(row=0, column=1)
|
||||||
|
Label(top, text=" ").grid(row=0, column=3)
|
||||||
|
Button(top, text="确定", command=lambda: input_data(root_tk, int(entry1.get()))).grid(row=0, column=3)
|
||||||
|
top.mainloop()
|
||||||
|
def input_data(root_tk, num):
|
||||||
|
global top
|
||||||
|
sample_x = []
|
||||||
|
sample_y = []
|
||||||
|
sample_data = []
|
||||||
|
top.destroy()
|
||||||
|
top = tk.Toplevel(root_tk)
|
||||||
|
def add_sample_data():
|
||||||
|
try:
|
||||||
|
x = float(entry_x.get())
|
||||||
|
y = float(entry_y.get())
|
||||||
|
except:
|
||||||
|
label_status.config(text="输入不合法")
|
||||||
|
return
|
||||||
|
entry_x.delete(0, tk.END)
|
||||||
|
entry_y.delete(0, tk.END)
|
||||||
|
if min(x, y) < gl_data.low or max(x, y) > gl_data.high:
|
||||||
|
label_status.config(text="输入超过范围")
|
||||||
|
return
|
||||||
|
elif len(sample_data) < num:
|
||||||
|
label_status.config(text="点对已添加")
|
||||||
|
sample_data.append((x, y))
|
||||||
|
sample_x.append(x)
|
||||||
|
sample_y.append(y)
|
||||||
|
else:
|
||||||
|
label_status.config(text="已达到最大数量")
|
||||||
|
def check_sample_data():
|
||||||
|
if len(sample_data) == num:
|
||||||
|
label_status.config(text="已达到最大数量")
|
||||||
|
gl_data.x = np.array(sample_x)
|
||||||
|
gl_data.y = np.array(sample_y)
|
||||||
|
print('已添加', sample_data)
|
||||||
|
top.destroy()
|
||||||
|
else:
|
||||||
|
label_status.config(text="还需输入{}个点对".format(num - len(sample_data)))
|
||||||
|
print(sample_data)
|
||||||
|
|
||||||
|
label_x = tk.Label(top, text="X 值:")
|
||||||
|
label_x.pack()
|
||||||
|
entry_x = tk.Entry(top)
|
||||||
|
entry_x.pack()
|
||||||
|
label_y = tk.Label(top, text="Y 值:")
|
||||||
|
label_y.pack()
|
||||||
|
entry_y = tk.Entry(top)
|
||||||
|
entry_y.pack()
|
||||||
|
button_add = tk.Button(top, text="添加", command=add_sample_data)
|
||||||
|
button_add.pack()
|
||||||
|
button_check = tk.Button(top, text="检查", command=check_sample_data)
|
||||||
|
button_check.pack()
|
||||||
|
label_status = tk.Label(top, text="")
|
||||||
|
label_status.pack()
|
||||||
|
top.mainloop()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
root = tk.Tk()
|
||||||
|
input_num(root)
|
Binary file not shown.
@ -0,0 +1,30 @@
|
|||||||
|
-1000.000000 -303.919733
|
||||||
|
-934.000000 -350.424580
|
||||||
|
-868.000000 -193.369993
|
||||||
|
-802.000000 -474.832293
|
||||||
|
-736.000000 -101.068322
|
||||||
|
-670.000000 -33.916365
|
||||||
|
-604.000000 -164.504704
|
||||||
|
-538.000000 -147.298119
|
||||||
|
-472.000000 -124.814141
|
||||||
|
-406.000000 -139.033018
|
||||||
|
-340.000000 -69.265051
|
||||||
|
-274.000000 -90.553084
|
||||||
|
-208.000000 -114.709905
|
||||||
|
-142.000000 -103.201058
|
||||||
|
-76.000000 -108.245882
|
||||||
|
-10.000000 56.710600
|
||||||
|
56.000000 18.503031
|
||||||
|
122.000000 185.633626
|
||||||
|
188.000000 152.615324
|
||||||
|
254.000000 47.216669
|
||||||
|
320.000000 256.009421
|
||||||
|
386.000000 270.790257
|
||||||
|
452.000000 61.971014
|
||||||
|
518.000000 121.635726
|
||||||
|
584.000000 163.906089
|
||||||
|
650.000000 166.204626
|
||||||
|
716.000000 315.640621
|
||||||
|
782.000000 425.649206
|
||||||
|
848.000000 454.347899
|
||||||
|
914.000000 289.943295
|
@ -0,0 +1,30 @@
|
|||||||
|
-1000.000000 -2412.037897
|
||||||
|
-934.000000 -1906.704565
|
||||||
|
-868.000000 -1515.407287
|
||||||
|
-802.000000 -1286.984468
|
||||||
|
-736.000000 -991.348043
|
||||||
|
-670.000000 -699.579002
|
||||||
|
-604.000000 -834.074507
|
||||||
|
-538.000000 -694.557977
|
||||||
|
-472.000000 -503.237387
|
||||||
|
-406.000000 -288.033015
|
||||||
|
-340.000000 -248.449961
|
||||||
|
-274.000000 -317.763223
|
||||||
|
-208.000000 -254.540871
|
||||||
|
-142.000000 -269.952677
|
||||||
|
-76.000000 -252.274149
|
||||||
|
-10.000000 -373.987676
|
||||||
|
56.000000 -129.655207
|
||||||
|
122.000000 -325.928443
|
||||||
|
188.000000 -98.240616
|
||||||
|
254.000000 -325.921235
|
||||||
|
320.000000 -161.796895
|
||||||
|
386.000000 96.648543
|
||||||
|
452.000000 -245.636986
|
||||||
|
518.000000 190.848311
|
||||||
|
584.000000 225.026237
|
||||||
|
650.000000 317.523583
|
||||||
|
716.000000 772.606080
|
||||||
|
782.000000 645.906241
|
||||||
|
848.000000 1091.495759
|
||||||
|
914.000000 1225.588183
|
@ -0,0 +1,30 @@
|
|||||||
|
-1000.000000 1318.415137
|
||||||
|
-934.000000 971.366429
|
||||||
|
-868.000000 950.320306
|
||||||
|
-802.000000 635.325663
|
||||||
|
-736.000000 774.823634
|
||||||
|
-670.000000 659.035975
|
||||||
|
-604.000000 449.284057
|
||||||
|
-538.000000 262.096521
|
||||||
|
-472.000000 141.521962
|
||||||
|
-406.000000 65.441983
|
||||||
|
-340.000000 162.273141
|
||||||
|
-274.000000 209.914028
|
||||||
|
-208.000000 62.504373
|
||||||
|
-142.000000 -160.439640
|
||||||
|
-76.000000 -201.140961
|
||||||
|
-10.000000 -178.764894
|
||||||
|
56.000000 -194.056288
|
||||||
|
122.000000 -221.386689
|
||||||
|
188.000000 -236.245098
|
||||||
|
254.000000 -317.086262
|
||||||
|
320.000000 -385.718988
|
||||||
|
386.000000 -198.736083
|
||||||
|
452.000000 -256.246461
|
||||||
|
518.000000 -226.361577
|
||||||
|
584.000000 -329.214396
|
||||||
|
650.000000 98.251218
|
||||||
|
716.000000 -132.314476
|
||||||
|
782.000000 62.741428
|
||||||
|
848.000000 120.654860
|
||||||
|
914.000000 356.397702
|
@ -0,0 +1,30 @@
|
|||||||
|
-1000.000000 6580.374854
|
||||||
|
-934.000000 5230.299130
|
||||||
|
-868.000000 4064.603309
|
||||||
|
-802.000000 2824.002023
|
||||||
|
-736.000000 2151.187862
|
||||||
|
-670.000000 1341.067791
|
||||||
|
-604.000000 997.401541
|
||||||
|
-538.000000 512.994167
|
||||||
|
-472.000000 103.881466
|
||||||
|
-406.000000 85.927912
|
||||||
|
-340.000000 -256.482213
|
||||||
|
-274.000000 -97.197686
|
||||||
|
-208.000000 -264.665117
|
||||||
|
-142.000000 -237.702195
|
||||||
|
-76.000000 -151.105677
|
||||||
|
-10.000000 -130.269796
|
||||||
|
56.000000 -102.814456
|
||||||
|
122.000000 -62.662181
|
||||||
|
188.000000 -357.518806
|
||||||
|
254.000000 -149.197016
|
||||||
|
320.000000 -350.461131
|
||||||
|
386.000000 -264.914106
|
||||||
|
452.000000 -94.032078
|
||||||
|
518.000000 -188.344844
|
||||||
|
584.000000 -60.854287
|
||||||
|
650.000000 85.277762
|
||||||
|
716.000000 413.822510
|
||||||
|
782.000000 695.033449
|
||||||
|
848.000000 1169.069640
|
||||||
|
914.000000 1762.153163
|
@ -0,0 +1,16 @@
|
|||||||
|
1.000000 -14.349565
|
||||||
|
67.000000 321.611473
|
||||||
|
133.000000 375.298867
|
||||||
|
199.000000 386.511032
|
||||||
|
265.000000 408.069269
|
||||||
|
331.000000 423.359694
|
||||||
|
397.000000 435.982565
|
||||||
|
463.000000 458.199244
|
||||||
|
529.000000 451.417416
|
||||||
|
595.000000 471.376855
|
||||||
|
661.000000 484.015127
|
||||||
|
727.000000 489.640132
|
||||||
|
793.000000 500.047206
|
||||||
|
859.000000 499.698564
|
||||||
|
925.000000 492.870266
|
||||||
|
991.000000 509.779156
|
@ -0,0 +1,30 @@
|
|||||||
|
-1000.000000 282.188733
|
||||||
|
-934.000000 -121.080276
|
||||||
|
-868.000000 89.565718
|
||||||
|
-802.000000 -36.875112
|
||||||
|
-736.000000 -2.179209
|
||||||
|
-670.000000 -33.756961
|
||||||
|
-604.000000 -199.536348
|
||||||
|
-538.000000 -50.378169
|
||||||
|
-472.000000 7.288867
|
||||||
|
-406.000000 197.918480
|
||||||
|
-340.000000 18.543165
|
||||||
|
-274.000000 -80.038062
|
||||||
|
-208.000000 -0.092604
|
||||||
|
-142.000000 24.234519
|
||||||
|
-76.000000 112.628196
|
||||||
|
-10.000000 57.868872
|
||||||
|
56.000000 -75.900181
|
||||||
|
122.000000 53.411782
|
||||||
|
188.000000 14.463053
|
||||||
|
254.000000 -157.854773
|
||||||
|
320.000000 3.419914
|
||||||
|
386.000000 -95.442953
|
||||||
|
452.000000 -511.818439
|
||||||
|
518.000000 -785.633833
|
||||||
|
584.000000 -1377.367723
|
||||||
|
650.000000 -2606.119973
|
||||||
|
716.000000 -5115.078474
|
||||||
|
782.000000 -9770.399635
|
||||||
|
848.000000 -19298.079697
|
||||||
|
914.000000 -37316.681269
|
Loading…
Reference in new issue