本文整理汇总了C#中ZedGraph.PointPairList.SplineInterpolateX方法的典型用法代码示例。如果您正苦于以下问题:C# PointPairList.SplineInterpolateX方法的具体用法?C# PointPairList.SplineInterpolateX怎么用?C# PointPairList.SplineInterpolateX使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ZedGraph.PointPairList
的用法示例。
在下文中一共展示了PointPairList.SplineInterpolateX方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: getIntersections
public PointPairList getIntersections(PointPairList points1, PointPairList points2)
{
// Возвращает список точек пересечения ломаной с линией f
PointPairList p = new PointPairList();
double xl = points1[0].X;
double xend = points1[points1.Count - 1].X;
double step = 0.01;
while (xl < xend)
{
double xr = xl + step;
if ((points1.SplineInterpolateX(xl, tension) - points2.SplineInterpolateX(xl, tension))
* (points1.SplineInterpolateX(xr, tension) - points2.SplineInterpolateX(xr, tension)) <= 0)
{
p.Add((xl + xr) / 2.0, points1.SplineInterpolateX((xl + xr) / 2.0, tension));
}
xl = xr;
}
return p;
}
示例2: CreateGraph_SplineTest
private void CreateGraph_SplineTest( ZedGraphControl z1 )
{
GraphPane myPane = z1.GraphPane;
PointPairList ppl = new PointPairList();
ppl.Add( 4000, 150 );
ppl.Add( 7360, 333 );
ppl.Add( 10333.333, 45.333336 );
ppl.Add( 11666.667, 5 );
ppl.Add( 12483.333, 45.333336 );
ppl.Add( 13600, 110 );
ppl.Add( 15800, 184.66667 );
// ppl.Add( 18000, 187.5 );
ppl.Add( 18644.998, 186.33368 );
//ppl.Add( 18770.002, 186.66664 );
//ppl.Add( 18896.666, 187.08336 );
//ppl.Add( 18993.334, 187.50002 );
ppl.Add( 19098.332, 188.08334 );
//ppl.Add( 19285.002, 189.41634 );
//ppl.Add( 19443.332, 190.83334 );
ppl.Add( 19633.334, 193.16634 );
//ppl.Add( 19823.336, 196.49983 );
//ppl.Add( 19940.002, 199.16669 );
//ppl.Add( 20143.303, 204.66566 );
ppl.Add( 20350, 210.91667 );
// ppl.Add( 21000, 232 );
// ppl.Add( 23000, 296 );
ppl.Add( 24000, 100 );
//double y1 = ppl.SplineInterpolateX( 18000, 0.2 );
//double y2 = ppl.SplineInterpolateX( 21000, 0.2 );
//double y3 = ppl.SplineInterpolateX( 23000, 0.2 );
//ppl.Add( 18000, y1 );
//ppl.Add( 21000, y2 );
//ppl.Add( 23000, y3 );
//ppl.Sort();
LineItem curve = myPane.AddCurve( "test", ppl, Color.Green, SymbolType.Default );
curve.Line.IsSmooth = true;
curve.Line.SmoothTension = 0.5F;
PointPairList ppl2 = new PointPairList();
for ( double x = 4100; x < 24000; x += 100 )
{
double y = ppl.SplineInterpolateX( x, 0.5 );
ppl2.Add( x, y );
}
LineItem curve2 = myPane.AddCurve( "interp", ppl2, Color.Red, SymbolType.Circle );
z1.ZoomButtons2 = MouseButtons.Left;
z1.ZoomModifierKeys2 = Keys.Control;
z1.MouseDownEvent += new ZedGraphControl.ZedMouseEventHandler( Spline_MouseDownEvent );
z1.MouseUpEvent += new ZedGraphControl.ZedMouseEventHandler( Spline_MouseUpEvent );
}
示例3: CreateGraph_DifferencePlot
// Simple plot with interpolated difference curve
private void CreateGraph_DifferencePlot( ZedGraphControl z1 )
{
GraphPane myPane = z1.GraphPane;
// Generate the first data set
PointPairList list1 = new PointPairList();
for ( int i = 0; i < 13; i++ )
{
double x = i + 11.0;
double y = 150.0 * ( 1.0 + Math.Sin( i * 0.3 ) );
list1.Add( x, y );
}
// Generate a second data set that is unrelated to the first
PointPairList list2 = new PointPairList();
for ( int i = 0; i < 15; i++ )
{
double x = i * 1.2 + 10.0;
double y = 250.0 * ( 1.0 + Math.Sin( x * 0.5 ) );
list2.Add( x, y );
}
// Make sure the data are sorted and monotonically increasing
list1.Sort();
list2.Sort();
// Get the lower and upper limit of the data
// This code can throw an exception if either list is empty
double xMin = Math.Min( list1[0].X, list2[0].X );
double xMax = Math.Max( list1[list1.Count - 1].X, list2[list2.Count - 1].X );
// Create a new list that will hold the difference points
PointPairList diffList = new PointPairList();
// Select the number of points for the new difference curve
// This is completely arbitrary, but more points will make it smoother in the
// case of SplineInterpolation
const int count = 50;
// Loop for each data point to be created in the new PointPairList
for ( int i=0; i<count; i++ )
{
// Calculated X values are evenly spaced
double x = xMin + (double) i * ( xMax - xMin ) / count;
// Use spline interpolation to create the Y values for the new curve
// Note that this allows extrapolation beyond the actual data available
// A tension value of 0.5 is used, but anywhere between 0 and 1 is reasonable
//double y = list1.InterpolateX( x );
double y1 = list1.InterpolateX( x );
double y2 = list2.SplineInterpolateX( x, 0.5 );
// Add the new Point to the list taking the difference between the Y values
// If either value is Missing, it means that a point was extrapolated beyond
// the available data, which is not allowed for SplineInterpolateX()
// This won't happen with InterpolateX, since it allows extrapolation
if ( y1 == PointPair.Missing || y2 == PointPair.Missing )
diffList.Add( x, PointPair.Missing, PointPair.Missing );
else
diffList.Add( x, y1 - y2, (y1-y2) > 0 ? 1 : 0 );
}
// Create the three curves -- two datasets, plus a difference curve
LineItem diffCurve = myPane.AddCurve( "diff", diffList, Color.Red, SymbolType.None );
LineItem myCurve1 = myPane.AddCurve( "curve", list1, Color.Blue, SymbolType.Diamond );
LineItem myCurve2 = myPane.AddCurve( "curve 2", list2, Color.Green, SymbolType.Circle );
Color[] colors = { Color.Red, Color.Green };
diffCurve.Line.Fill = new Fill( colors, 90 );
diffCurve.Line.Fill.RangeMin = 0;
diffCurve.Line.Fill.RangeMax = 1;
diffCurve.Line.Fill.Type = FillType.GradientByZ;
//diffCurve.Line.GradientFill = new Fill( colors, 90 );
//diffCurve.Line.GradientFill.RangeMin = -100;
//diffCurve.Line.GradientFill.RangeMax = 200;
//diffCurve.Line.IsOptimizedDraw = true;
// Add some "pretty" stuff (optional)
myCurve1.Symbol.Fill = new Fill( Color.White );
myCurve2.Symbol.Fill = new Fill( Color.White );
diffCurve.Line.Width = 2.0f;
//diffCurve.Symbol.Fill = new Fill( Color.White );
myPane.Title.Text = "Interpolated Data Curve";
myPane.XAxis.Title.Text = "Period";
myPane.YAxis.Title.Text = "Response";
myPane.Legend.FontSpec.Size = 14;
myPane.Fill = new Fill( Color.WhiteSmoke, Color.Lavender, 0F );
myPane.Chart.Fill = new Fill( Color.FromArgb( 255, 255, 245 ),
Color.FromArgb( 255, 255, 190 ), 90F );
XDate xx = new XDate( 2007, 11, 9 );
XDate x2 = new XDate( 2007, 11, 9 );
XDate x3 = new XDate( 2007, 11, 9, 1, 1, 1 );
object junk = new object();
int i1 = xx.CompareTo( xx );
int i2 = xx.CompareTo( x2 );
//.........这里部分代码省略.........