求用C# 构造二次曲线的模块(分少再加!) 代码太多了,给我发邮件吧! [email protected] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 下面是一个函数,我会给你发一个完整的工程,有需要的留下地址呀,还有许多需要改进的的方,共同探讨了。比如 二次系数和一次系数之间的关系等等。 /// <summary> /// 构造自定义二次曲线 /// </summary> /// <param name="dubXS">二次系数</param> /// <param name="dubQJ">坐标区间</param> /// <param name="dubX">X采样点</param> /// <returns>二次曲线采样点坐标</returns> public static ArrayList retrunLstCurve(double[,] dubXS,double[] dubQJ,double dubX) { int count = 0; count = Convert.ToInt32(Math.Floor((dubQJ[1] - dubQJ[0]) / dubX)); ArrayList lstCYD = new ArrayList(); for(int i = 0 ; i < count; i++ ) { /// aX^2 + 2bXY + cY^2 + 2dx + 2ey + f = 0 /// dubXS[0,0] dubXS[0,1] dubXS[0,2] dubXS[1,0] dubXS[1,1] dubXS[1,2] double dubXx = dubQJ[0] + dubX * i; double dubYy = 0; lstCYD.Add(dubXx); double dubA = dubXS[0,2]; double dubB = 2 * dubXS[0,1] * dubXx + 2 * dubXS[1,1]; double dubC = dubXS[0,0] * dubXx * dubXx + 2 * dubXS[1,0] * dubXx + dubXS[1,2]; double dub4AC = dubB * dubB - 4 * dubA * dubC; if(dub4AC >= 0) { /// if A != 0 if(dubA != 0 ) { dubYy = (-dubB + Math.Sqrt(dub4AC)) / 2 * dubA; lstCYD.Add(dubYy); } else { /// if B != 0 if(dubB != 0) { dubYy = -dubC / dubB; lstCYD.Add(dubYy); } else { dubYy = dubB; lstCYD.Add(dubYy); } } } else { continue; } } return lstCYD; } C#怎么编写com组件? VS中ProjectAssemblies文件夹处理的问题? win和web下静态方法使用区别 如何检测一个remoting的对象是否开启? 侄儿快一岁了,还没取名,重谢! 有一个关于窗口控件在网页中使用的问题 我画的线怎么总是丢失? C# 按钮图片 背景 分段 显示 求助一个C#写的年历 求教正则表达式的问题 怎么在架设ftp 怎么把数组封装到类中 可以作为属性引用
/// <summary>
/// 构造自定义二次曲线
/// </summary>
/// <param name="dubXS">二次系数</param>
/// <param name="dubQJ">坐标区间</param>
/// <param name="dubX">X采样点</param>
/// <returns>二次曲线采样点坐标</returns>
public static ArrayList retrunLstCurve(double[,] dubXS,double[] dubQJ,double dubX)
{
int count = 0;
count = Convert.ToInt32(Math.Floor((dubQJ[1] - dubQJ[0]) / dubX));
ArrayList lstCYD = new ArrayList();
for(int i = 0 ; i < count; i++ )
{
/// aX^2 + 2bXY + cY^2 + 2dx + 2ey + f = 0
/// dubXS[0,0] dubXS[0,1] dubXS[0,2] dubXS[1,0] dubXS[1,1] dubXS[1,2]
double dubXx = dubQJ[0] + dubX * i;
double dubYy = 0;
lstCYD.Add(dubXx);
double dubA = dubXS[0,2];
double dubB = 2 * dubXS[0,1] * dubXx + 2 * dubXS[1,1];
double dubC = dubXS[0,0] * dubXx * dubXx + 2 * dubXS[1,0] * dubXx + dubXS[1,2];
double dub4AC = dubB * dubB - 4 * dubA * dubC;
if(dub4AC >= 0)
{
/// if A != 0
if(dubA != 0 )
{
dubYy = (-dubB + Math.Sqrt(dub4AC)) / 2 * dubA;
lstCYD.Add(dubYy);
}
else
{
/// if B != 0
if(dubB != 0)
{
dubYy = -dubC / dubB;
lstCYD.Add(dubYy);
} else
{
dubYy = dubB;
lstCYD.Add(dubYy);
}
}
}
else
{
continue;
}
}
return lstCYD;
}