iPhone:将C#代码转换为Objective-C
问题描述:
你们能帮我把这个C#代码转换成Objective-C吗? 我对C#/ Visual Studio毫无头绪!iPhone:将C#代码转换为Objective-C
public static class BezierSpline
{
public static void GetCurveControlPoints(Point[] knots,
out Point[] firstControlPoints, out Point[] secondControlPoints)
{
int n = knots.Length - 1;
// Calculate first Bezier control points
// Right hand side vector
double[] rhs = new double[n];
// Set right hand side X values
for (int i = 1; i < n - 1; ++i)
rhs[i] = 4 * knots[i].X + 2 * knots[i + 1].X;
rhs[0] = knots[0].X + 2 * knots[1].X;
rhs[n - 1] = (8 * knots[n - 1].X + knots[n].X)/2.0;
// Get first control points X-values
double[] x = GetFirstControlPoints(rhs);
// Set right hand side Y values
for (int i = 1; i < n - 1; ++i)
rhs[i] = 4 * knots[i].Y + 2 * knots[i + 1].Y;
rhs[0] = knots[0].Y + 2 * knots[1].Y;
rhs[n - 1] = (8 * knots[n - 1].Y + knots[n].Y)/2.0;
// Get first control points Y-values
double[] y = GetFirstControlPoints(rhs);
// Fill output arrays.
firstControlPoints = new Point[n];
secondControlPoints = new Point[n];
for (int i = 0; i < n; ++i)
{
// First control point
firstControlPoints[i] = new Point(x[i], y[i]);
// Second control point
if (i < n - 1)
secondControlPoints[i] = new Point(2 * knots
[i + 1].X - x[i + 1], 2 *
knots[i + 1].Y - y[i + 1]);
else
secondControlPoints[i] = new Point((knots
[n].X + x[n - 1])/2,
(knots[n].Y + y[n - 1])/2);
}
}
private static double[] GetFirstControlPoints(double[] rhs)
{
int n = rhs.Length;
double[] x = new double[n]; // Solution vector.
double[] tmp = new double[n]; // Temp workspace.
double b = 2.0;
x[0] = rhs[0]/b;
for (int i = 1; i < n; i++) // Decomposition and forward substitution.
{
tmp[i] = 1/b;
b = (i < n - 1 ? 4.0 : 3.5) - tmp[i];
x[i] = (rhs[i] - x[i - 1])/b;
}
for (int i = 1; i < n; i++)
x[n - i - 1] -= tmp[n - i] * x[n - i]; // Backsubstitution.
return x;
}
}
谢谢。
答
double [] tmp = new double [n];
tmp是一个长度为n的数组。每个值都没有被显式初始化,但是它被隐式地设置为double类型的默认值,即0。所以tmp是一个n长度的零数组。 {0,0,0,0,... 0}
这就是所谓的C#。它看起来相当简单,只是乱七八糟的点/数字。 – Mau 2010-07-28 12:44:59
我怀疑它与C的味道有关... – SpaceDog 2010-07-28 12:47:51
你究竟在遇到什么麻烦?这一切对我来说都很直截了当。 – JeremyP 2010-07-28 12:58:37