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点补间、拟合回归直线的更多相关文章

  1. Android动画总结#补间动画(Tween Animation/View Animation) #帧动画(Frame Animation/Drawable Animation)#属性动画(PropertyAnimation)

    1.共有三种动画,英文名字多种叫法如下 第一种动画:补间动画(Tween Animation/View Animation) 四个:RotateAnimation旋转. AlphaAnimation透 ...

  2. tween.js缓动(补间动画)

    一.理解tween.js 如果看到上面的已经理解了,可以跳过下面的部分.下面为对Tween.js的解释 下面就介绍如何使用这个Tween了,首先b.c.d三个参数(即初始值,变化量,持续时间)在缓动开 ...

  3. Android动画效果之Tween Animation(补间动画)

    前言: 最近公司项目下个版本迭代里面设计了很多动画效果,在以往的项目中开发中也会经常用到动画,所以在公司下个版本迭代开始之前,抽空总结一下Android动画.今天主要总结Tween Animation ...

  4. android 帧动画,补间动画,属性动画的简单总结

      帧动画——FrameAnimation 将一系列图片有序播放,形成动画的效果.其本质是一个Drawable,是一系列图片的集合,本身可以当做一个图片一样使用 在Drawable文件夹下,创建ani ...

  5. android 补间动画和Animation

    介绍: 补间动画是一种设定动画开始状态.结束状态,其中间的变化由系统计算补充.这也是他叫做补间动画的原因. 补间动画由Animation类来实现具体效果,包括平移(TranslateAnimation ...

  6. Android开发之补间动画、XML方式定义补间动画

    四种补间动画: 1.透明: 2.缩放: 3.位移: 4.旋转: //点击按钮 实现iv 透明的效果 动画 public void click1(View v) { //1.0意味着着完全不透明 0.0 ...

  7. Android 学习笔记多媒体技术之 Drawable类+Tween(补间动画)+Frame(帧动画)

    学习内容: 1.了解Drawable类的作用 2.如何使用Drawable... 3.了解Tween动画... 4.如何创建和使用Tween动画... 1.Drawable类...   Drawabl ...

  8. (旧)子数涵数·Flash——路径补间

    一.打开flash软件(图为flash8) 二.创建新项目->Flash文档 三.使用椭圆工具,绘制一个圆形图像(快捷键为O,很形象吧) 四.在后面若干帧中插入关键帧,并移动刚刚绘制好的图像的位 ...

  9. 补间动画TweenAnimation

    animation_translate = AnimationUtils.loadAnimation(MainActivity.this, R.anim.transalte); imageview.s ...

随机推荐

  1. sql server 取日期

    Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE( ...

  2. Sql如何自动定时备份数据库

    直接上图

  3. Hibernate单向一对多对象关系模型映射

    1 hibernate 的对象关系映射 Orm: 类-----表 属性------字段 对象------记录 表:在数据库中存在主外键的关系,反向工厂类是由表生成,在由表生成类的时候,类和类之间存在者 ...

  4. 实现Asp.Net Mvc4多级Views目录

    建立自己MyViewEngine类让他继承RazorViewEngine,之后在构造函数里面写入设置视图位置格式代码如下: public class MyViewEngine : RazorViewE ...

  5. Mysql之INFORMATION_SCHEMA解析1

    INFORMATION_SCHEMA库是Mysql提供的一个系统库,保存了数据库的原数据,方便用户监控与管理Msyql. 现在单说与INNODB相关的库:INNODB_SYS_TABLES,INNOD ...

  6. IPv6地址介绍

    IPv6地址介绍 2008 年 04 月 10 日 1. 认识IPv6地址 IPv4地址是类似 A.B.C.D 的格式,它是32位,用\".\"分成四段,用10进制表示:而IPv6 ...

  7. Java动态代理一Proxy

    什么是动态代理? 动态代理可以提供对另一个对象的访问,同时隐藏实际对象的具体事实.代理一般会实现它所表示的实际对象的接口.代理可以访问实际对象,但是延迟实现实际对象的部分功能,实际对象实现系统的实际功 ...

  8. NYOJ题目125盗梦空间

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAssAAANLCAIAAAA4rUfgAAAgAElEQVR4nOydq7LdyrKm+yXM/SDG4y

  9. EF – 4.CRUD与事务

    5.6.1 <Entity Framework数据更新概述>  首先介绍Entity Framework实现CRUD的基本方法,接着介绍了如何使用分部类增强和调整数据实体类的功能与行为特性 ...

  10. svn删除所有.svn文件

    svn 删除所有的 .svn文件 find . -name .svn -type d -exec rm -fr {} \;