资源简介

应用贝泽尔函数,用于优化曲线,是曲线平滑。 输入是原曲线上的一组点; 输出是优化后曲线上的一组点

资源截图

代码片段和文件信息

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个文件信息

评论

共有 条评论

相关资源