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 ...
随机推荐
- 【leetcode】Decode Ways(medium)
A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' - ...
- 【XLL API 函数】xlStack
查看堆栈区还剩余多少空间 原型 Excel12(xlStack, LPXLOPER12 pxRes, 0); 参数 此函数没有带任何参数 属性值/返回值 返回堆栈区还剩余的字节数 备注 返回最新版本的 ...
- php curl get post
post有3种. 1.post方式 privatefunction send_post($url,$post_data){ $ch = curl_init($url); curl_setopt($ch ...
- C++静态代码分析PreFast
1历史 Prefast是微软研究院提出的静态代码分析工具.主要目的是通过分析代码的数据和控制信息来检测程序中的缺陷.需要强调的是,Prefast检测的缺项不仅仅是安全缺陷,但是安全缺陷类型是其检测的最 ...
- java中带继承类的加载顺序详解及实战
一.背景: 在面试中,在java基础方面,类的加载顺序经常被问及,很多时候我们是搞不清楚到底类的加载顺序是怎么样的,那么今天我们就来看看带有继承的类的加载顺序到底是怎么一回事?在此记下也方便以后复习巩 ...
- 线段树(main函数自由)
都是一些裸线段树的模板,无主函数! #include<cstdio> #include<algorithm> #include<cstring> #include& ...
- JS_ECMA基本语法中的几种封装的小函数-1
今天给大家介绍js ECMA中几个封装的小函数以及一些常用的函数小案例: 1,找重复的函数 <script> //在数组里面找重复: function findInArr(n,arr){ ...
- 20145206邹京儒《Java程序设计》第8周学习总结
20145206 <Java程序设计>第8周学习总结 教材学习内容总结 第十四章 NIO与NIO2 14.1 认识NIO NIO使用频道(Channel)来衔接数据节点,在处理数据时,NI ...
- @ifconfig eth0|awk -F "[ :]+" 'NR==2{print $4 "/" $NF}'中"[ :]+" 是什么意思?@
http://blog.csdn.net/zhuying_linux/article/details/6822987
- Extjs ComboBox 动态选中第一项
有时候我们希望通过Store加载过来的数据,ComboBoxItem能够选择第一条数据作为默认数据,我们可以这么操作: var storeinfo = Ext.create('Ext.data.Sto ...