WPF点补间、拟合回归直线
1,path画刷,绘制正弦 点,线;
生成正弦点
profilePoint.Value = * ( - Math.Sin(i * Math.PI / ));
profilePoint.Type = ;
画点
EllipseGeometry el = new EllipseGeometry();
el.Center = p;
el.RadiusX = 0.5;
el.RadiusY = 0.5; Path mypath = new Path();
mypath.Stroke = s;
mypath.StrokeThickness = ;
mypath.Data = el; panelCanvas.Children.Add(mypath);
画线
LineGeometry line = new LineGeometry();
line.StartPoint = startPoint;
line.EndPoint = endPoint; Path mypath = new Path();
mypath.Stroke = s;
mypath.StrokeThickness = ;
mypath.Data = line; panelCanvas.Children.Add(mypath);
2,回归直线
/// <summary>
/// 最小二乘法计算回归直线
/// </summary>
/// <param name="listPoints">最小二乘法计算单位</param>
/// <returns></returns>
public ApproximateLine calApproximateLine(List<Point> listPoints)
{
ApproximateLine appr = new ApproximateLine();
double total = ; //临时变量
double averageX = ; //X平均值
double averageY = ; //Y平均值
double dispersion = ; //协方差
double b = ; //斜率
double a = ; //y轴截距
//x平均值计算
total = ;
for (int i = ; i < listPoints.Count; i++)
{
total += listPoints[i].X;
}
averageX = total / listPoints.Count;
//y平均值计算
total = ;
for (int i = ; i < listPoints.Count; i++)
{
total += listPoints[i].Y;
}
averageY = total / listPoints.Count;
//协方差计算
total = ;
for (int i = ; i < listPoints.Count; i++)
{
total += ((listPoints[i].Y - averageY)*(listPoints[i].X - averageX));
}
dispersion = total / listPoints.Count;
//斜率计算
total = ;
double tmp = ;
for (int i = ; i < listPoints.Count; i++)
{
total += listPoints[i].Y * listPoints[i].X;
tmp += Math.Pow(listPoints[i].X, );
}
b = (total - listPoints.Count*averageX*averageY)/(tmp - listPoints.Count*averageX*averageX);
//截距计算
a = averageY - b * averageX;
//确定起止点坐标
ScaleProfilePoint p1 = new ScaleProfilePoint();
ScaleProfilePoint p2 = new ScaleProfilePoint();
p1.Type = ;
p1.ValueX = listPoints[].X;
p1.ValueZ = a + b * p1.ValueX;
p2.Type = ;
p2.ValueX = listPoints[listPoints.Count-].X;
p2.ValueZ = a + b * p2.ValueX;
//填充返回值
appr.Dispersion = dispersion;
appr.Horizontal = true;
appr.StartPnt = p1;
appr.EndPnt = p2;
return appr;
}
3,去除canvas内的元素,清空画布
this.panelCanvas.Children.Clear();
WPF点补间、拟合回归直线的更多相关文章
- Android动画总结#补间动画(Tween Animation/View Animation) #帧动画(Frame Animation/Drawable Animation)#属性动画(PropertyAnimation)
1.共有三种动画,英文名字多种叫法如下 第一种动画:补间动画(Tween Animation/View Animation) 四个:RotateAnimation旋转. AlphaAnimation透 ...
- tween.js缓动(补间动画)
一.理解tween.js 如果看到上面的已经理解了,可以跳过下面的部分.下面为对Tween.js的解释 下面就介绍如何使用这个Tween了,首先b.c.d三个参数(即初始值,变化量,持续时间)在缓动开 ...
- Android动画效果之Tween Animation(补间动画)
前言: 最近公司项目下个版本迭代里面设计了很多动画效果,在以往的项目中开发中也会经常用到动画,所以在公司下个版本迭代开始之前,抽空总结一下Android动画.今天主要总结Tween Animation ...
- android 帧动画,补间动画,属性动画的简单总结
帧动画——FrameAnimation 将一系列图片有序播放,形成动画的效果.其本质是一个Drawable,是一系列图片的集合,本身可以当做一个图片一样使用 在Drawable文件夹下,创建ani ...
- android 补间动画和Animation
介绍: 补间动画是一种设定动画开始状态.结束状态,其中间的变化由系统计算补充.这也是他叫做补间动画的原因. 补间动画由Animation类来实现具体效果,包括平移(TranslateAnimation ...
- Android开发之补间动画、XML方式定义补间动画
四种补间动画: 1.透明: 2.缩放: 3.位移: 4.旋转: //点击按钮 实现iv 透明的效果 动画 public void click1(View v) { //1.0意味着着完全不透明 0.0 ...
- Android 学习笔记多媒体技术之 Drawable类+Tween(补间动画)+Frame(帧动画)
学习内容: 1.了解Drawable类的作用 2.如何使用Drawable... 3.了解Tween动画... 4.如何创建和使用Tween动画... 1.Drawable类... Drawabl ...
- (旧)子数涵数·Flash——路径补间
一.打开flash软件(图为flash8) 二.创建新项目->Flash文档 三.使用椭圆工具,绘制一个圆形图像(快捷键为O,很形象吧) 四.在后面若干帧中插入关键帧,并移动刚刚绘制好的图像的位 ...
- 补间动画TweenAnimation
animation_translate = AnimationUtils.loadAnimation(MainActivity.this, R.anim.transalte); imageview.s ...
随机推荐
- mybatis setting配置
Mybatis配置报错元素类型为 "configuration" 的内容必须匹配 "(properties?,settings?,typeAliases?,typeHan ...
- 【leetcode】Convert Sorted Array to Binary Search Tree (easy)
Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 有序 ...
- WaxPatch中demo注意问题
问题一 https://github.com/mmin18/WaxPatch网址中提供的demo是可以运行,但是存在一个问题,如果把patch.zip换成自己的并且上传到自己的服务器(github), ...
- vs c# int & int32
在vs c#中,int就等价于int32, 所以通常也是使用int32 当在统计总数时,最好使用int32,int16数值范围太小,如果超出,就会变成随机数.
- Tomcat部署的时候 unpackWARs="true"
在部署项目到Tomcat的时候发现当Tomcat启动的时候,项目并没有解压出来,导致系统传照片的时候找不到路径,因为,系统没有解压,所以找不到路径, 进入地址==>C:\Users\ceshi\ ...
- NYOJ题目893十字架
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsYAAAQRCAIAAACl4dlPAAAgAElEQVR4nO3dO1Ljyv834P8myFkIsR
- FragmentPagerAdapter实现刷新
在fragmentpageadapter的instantiateItem方法里,他会先去FragmentManager里面去查找有没有相关的fragment如果有就直接使用如果没有才会触发fragme ...
- JS window.open()属性
一. Window 对象 Window 对象是 JavaScript 层级中的顶层对象. Window 对象代表一个浏览器窗口或一个框架. Window 对象会在 <body> 或 < ...
- Xcode 7如何免费真机调试iOS应用
Xcode 7如何免费真机调试iOS应用的简单方式: 运行Xcode后,点击菜单中的Preferences…进入Accounts标签,这里选择添加Apple ID:在弹出的对话框中登入你的Apple ...
- Java并发编程实现概览
并发概览 >>同步 如何同步多个线程对共享资源的访问是多线程编程中最基本的问题之一.当多个线程并发访问共享数据时会出现数据处于计算中间状态或者不一致的问题,从而影响到程序的正确运行.我们通 ...