资源简介
应用贝泽尔函数,用于优化曲线,是曲线平滑。
输入是原曲线上的一组点; 输出是优化后曲线上的一组点
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
namespace 曲线平滑
{
public static class BezierCurve
{
public static PointF[] GetBezierCurve(PointF[] knots float scale)
{
List listPF_BezierCurve = new List();
PointF[] firstControlPointFs;
PointF[] secondControlPointFs;
PointF temp_PointF;
if (scale < 0.1f)
{
throw new ArgumentNullException(“scale 不能为0或者负数“);
}
//从节点得到贝泽尔函数的控制点
BezierSpline.GetCurveControlPoints(knots out firstControlPointFs out secondControlPointFs);
//根据节点、控制点及贝泽尔方程,对曲线差值
for (int i = 0; i < knots.Length - 1; i++)
{
float d = Helper.CaculateDistance(knots[i] knots[i + 1]);
int insidePoints_number = (int)(d / scale);
//加入第i个节点
listPF_BezierCurve.Add(knots[i]);
//差值
for (int j = 1; j < insidePoints_number; j++)
{
// B(t) = (1-t)^3 P0 + 3(1-t)^2 t P1 + 3(1-t)t^2 P2 + t^3 P3
PointF p0 p1 p2 p3;
PointF inside_p = new PointF();
p0 = knots[i];
p3 = knots[i + 1];
p1 = firstControlPointFs[i];
p2 = secondControlPointFs[i];
float t;
t = (float)j/insidePoints_number ;
inside_p.X = (float)Math.Pow((1 - t) 3f) * p0.X +
3f * (float)Math.Pow((1 - t)2f) * t * p1.X +
3f * (1 - t) * (float)Math.Pow(t 2f) * p2.X +
(float)Math.Pow(t 3f) * p3.X;
inside_p.Y = (float)Math.Pow((1 - t) 3f) * p0.Y +
3f * (float)Math.Pow((1 - t) 2f) * t * p1.Y +
3f * (1 - t) * (float)Math.Pow(t 2f) * p2.Y +
(float)Math.Pow(t 3f) * p3.Y;
//加入插值点
listPF_BezierCurve.Add(inside_p);
}
}
//加入最后的节点
listPF_BezierCurve.Add(knots[knots.Length-1]);
return listPF_BezierCurve.ToArray();
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2719 2011-11-24 19:14 曲线平滑 - blog用\曲线平滑\BezierCurve.cs
文件 4813 2011-11-22 16:16 曲线平滑 - blog用\曲线平滑\BezierSpline.cs
文件 13312 2011-11-24 19:34 曲线平滑 - blog用\曲线平滑\bin\Debug\曲线平滑.exe
文件 36352 2011-11-24 19:34 曲线平滑 - blog用\曲线平滑\bin\Debug\曲线平滑.pdb
文件 14328 2011-11-24 19:36 曲线平滑 - blog用\曲线平滑\bin\Debug\曲线平滑.vshost.exe
文件 490 2009-06-11 05:14 曲线平滑 - blog用\曲线平滑\bin\Debug\曲线平滑.vshost.exe.manifest
文件 3763 2011-11-24 19:34 曲线平滑 - blog用\曲线平滑\Form1.cs
文件 5316 2011-11-22 20:00 曲线平滑 - blog用\曲线平滑\Form1.Designer.cs
文件 5814 2011-11-22 20:00 曲线平滑 - blog用\曲线平滑\Form1.resx
文件 1017 2011-11-24 19:31 曲线平滑 - blog用\曲线平滑\Helper.cs
文件 2911 2011-11-22 22:19 曲线平滑 - blog用\曲线平滑\obj\Debug\ResolveAssemblyReference.cache
文件 1422 2011-11-24 19:36 曲线平滑 - blog用\曲线平滑\obj\Debug\曲线平滑.csproj.FileListAbsolute.txt
文件 847 2011-11-22 20:00 曲线平滑 - blog用\曲线平滑\obj\Debug\曲线平滑.csproj.GenerateResource.Cache
文件 13312 2011-11-24 19:34 曲线平滑 - blog用\曲线平滑\obj\Debug\曲线平滑.exe
文件 180 2011-11-24 19:14 曲线平滑 - blog用\曲线平滑\obj\Debug\曲线平滑.Form1.resources
文件 36352 2011-11-24 19:34 曲线平滑 - blog用\曲线平滑\obj\Debug\曲线平滑.pdb
文件 180 2011-11-24 19:14 曲线平滑 - blog用\曲线平滑\obj\Debug\曲线平滑.Properties.Resources.resources
文件 493 2011-11-22 14:49 曲线平滑 - blog用\曲线平滑\Program.cs
文件 1356 2011-11-22 14:49 曲线平滑 - blog用\曲线平滑\Properties\AssemblyInfo.cs
文件 2874 2011-11-22 14:49 曲线平滑 - blog用\曲线平滑\Properties\Resources.Designer.cs
文件 5612 2011-11-22 14:49 曲线平滑 - blog用\曲线平滑\Properties\Resources.resx
文件 1097 2011-11-22 14:49 曲线平滑 - blog用\曲线平滑\Properties\Settings.Designer.cs
文件 249 2011-11-22 14:49 曲线平滑 - blog用\曲线平滑\Properties\Settings.settings
文件 3857 2011-11-24 15:56 曲线平滑 - blog用\曲线平滑\曲线平滑.csproj
文件 926 2011-11-22 14:50 曲线平滑 - blog用\曲线平滑.sln
..A..H. 20992 2011-11-24 19:49 曲线平滑 - blog用\曲线平滑.suo
目录 0 2011-11-22 16:56 曲线平滑 - blog用\曲线平滑\obj\Debug\Refactor
目录 0 2011-11-22 14:49 曲线平滑 - blog用\曲线平滑\obj\Debug\TempPE
目录 0 2011-11-24 10:58 曲线平滑 - blog用\曲线平滑\bin\Debug
目录 0 2011-11-24 19:34 曲线平滑 - blog用\曲线平滑\obj\Debug
............此处省略8个文件信息
- 上一篇:CMMI单元测试用例及测试结果记录
- 下一篇:nucleus os 源码
评论
共有 条评论