我如何将此 c# 代码翻译成 java

我正在尝试测试 De-Casteljau-subdivision 代码。但是我的示例是在 c# 中,我想在 java 中测试它,因为我不知道 c#。


尤其是最后一次回归给我带来了问题,因为我做不对。我使用 Vec2D 而不是代表基本二维向量的点。在这种情况下,我用 Vec2D 数组表示点。我有像“getX”这样的方法来获取 x 部分,但如果我只是在最后一行更改它,它就会失败。总而言之,我用 Vec2D[] 交换了“Point”,用 p1.getX 交换了 p1.X。


private void drawCasteljau(List<point> list)

{

    Point tmp;

    for (double t = 0; t & lt;= 1; t += 0.001) {

        tmp = getCasteljauPoint(points.Count - 1, 0, t);

        image.SetPixel(tmp.X, tmp.Y, color);

    }

}


private Point getCasteljauPoint(int r, int i, double t)

{

    if (r == 0) return points[i];


    Point p1 = getCasteljauPoint(r - 1, i, t);

    Point p2 = getCasteljauPoint(r - 1, i + 1, t);


    return new Point((int)((1 - t) * p1.X + t * p2.X), (int)((1

                             - t) * p1.Y + t * p2.Y));

}

我的尝试:


public Vec2D[] getCasteljauPoint(int r, int i, double t) { 

    if(r == 0) return new Vec2D[i];


    Vec2D[] p1 = getCasteljauPoint(r - 1, i, t);

    Vec2D[] p2 = getCasteljauPoint(r - 1, i + 1, t);



    return new Vec2D(((1/2) * p1.getX + (1/2) * p2.getX),  ((1/2)                        

                        * p1.getY + (1/2) * p2.getY));

}

我觉得应该只做一些小的改动才能让它继续下去,但我卡住了。最后一行的错误消息说 - getX 无法解析或不是字段 - 类型不匹配:无法从 Vec2D 转换为 Vec2D[]


天涯尽头无女友
浏览 119回答 1
1回答

UYOU

您正在将p1and声明p2为Vec2D数组,并且您的方法定义指定了Vec2D数组返回类型。但是,在您的方法中,您返回一个单一的Vec2D对象。一个潜在的解决方案:public class SomeJavaClassName&nbsp;{&nbsp;&nbsp; &nbsp; ArrayList<Vec2D> points = new ArrayList<String>();&nbsp; &nbsp; // Other methods, properties, variables, etc.,&nbsp; &nbsp; // some of which would populate points&nbsp; &nbsp; public Vec2D getCasteljauPoint(int r, int i, double t) {&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; // points[] is declared outside just like in the C# code&nbsp; &nbsp; &nbsp; &nbsp; if(r == 0) return points.get(i);&nbsp; &nbsp; &nbsp; &nbsp; Vec2D p1 = getCasteljauPoint(r - 1, i, t);&nbsp; &nbsp; &nbsp; &nbsp; Vec2D p2 = getCasteljauPoint(r - 1, i + 1, t);&nbsp; &nbsp; &nbsp; &nbsp; return new Vec2D(((1/2) * p1.getX + (1/2) * p2.getX), ((1/2)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; * p1.getY + (1/2) * p2.getY));&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java