在Java3D中从Point3f数组中绘制Lorenz吸引子

在Java3D中从Point3f数组中绘制Lorenz吸引子,java,graphics,3d,drawing,java-3d,Java,Graphics,3d,Drawing,Java 3d,我已经计算了需要绘制的点的值,并将它们放入Point3f数组中。我得了526435分。下一步是一个接一个地绘制点,使其看起来像一条连续的线,或者使用LineStripArray在点之间绘制线。因为我没有找到如何逐点绘制,所以我尝试使用LineStripArray 我从中获取了代码,并使用以下代码更改了方法“createLineTypes”的内容: Group lineGroup = new Group(); Appearance app = new Appearance();

我已经计算了需要绘制的点的值,并将它们放入Point3f数组中。我得了526435分。下一步是一个接一个地绘制点,使其看起来像一条连续的线,或者使用LineStripArray在点之间绘制线。因为我没有找到如何逐点绘制,所以我尝试使用LineStripArray

我从中获取了代码,并使用以下代码更改了方法“createLineTypes”的内容:

    Group lineGroup = new Group();

    Appearance app = new Appearance();
    ColoringAttributes ca = new ColoringAttributes(black, ColoringAttributes.SHADE_FLAT);
    app.setColoringAttributes(ca);

    Computing comp = new Computing();

    //the following row computes the values of the points I want to draw 
    //and it works alright; the points are saved into 
    //**static List<Vector3> computed_values** from  class Computing,
    // where Vector3 class defines a 3D point actually
    comp.do_the_job();    

    Point3f[] dashPts = new Point3f[Computing.computed_values.size()];
    for(int i = 0; i < Computing.computed_values.size(); i++)
    {
        dashPts[i] = new Point3f((int)Computing.computed_values.get(i).getX(), (int)Computing.computed_values.get(i).getY(), (int)Computing.computed_values.get(i).getZ());

    }
    System.out.print(Computing.computed_values.size());
    int[] a = {Computing.computed_values.size()};
    LineStripArray dash = new LineStripArray(Computing.computed_values.size(), LineArray.COORDINATES, a);
    dash.setCoordinates(0, dashPts);
    LineAttributes dashLa = new LineAttributes();
    dashLa.setLineWidth(1.0f);
    dashLa.setLinePattern(LineAttributes.PATTERN_SOLID);
    Shape3D dashShape = new Shape3D(dash, app);
    lineGroup.addChild(dashShape);


    return lineGroup;
Group lineGroup=新组();
外观应用=新外观();
着色属性ca=新的着色属性(黑色,着色属性。阴影为平);
应用程序设置颜色属性(ca);
Computing comp=新计算();
//下一行计算我要绘制的点的值
//它工作正常;这些点被保存到
//**静态列表计算的_值**来自类计算,
//其中Vector3类实际定义了一个3D点
公司做这项工作();
Point3f[]dashPts=新的Point3f[Computing.computed_values.size()];
对于(int i=0;i

问题是它只画了一条垂直线。有什么想法吗?

我找到了一个解决方案,就是使用PointArray。给你

    Group lineGroup = new Group();

    Appearance app = new Appearance();
    ColoringAttributes ca = new ColoringAttributes(black, ColoringAttributes.SHADE_FLAT);
    app.setColoringAttributes(ca);

    Computing comp = new Computing();
    comp.do_the_job();

    Point3f[] plaPts = new Point3f[Computing.computed_values.size()];
    for(int i = 0; i < Computing.computed_values.size(); i++)
    {           
        plaPts[i] = new Point3f((float)Computing.computed_values.get(i).getX(), (float)Computing.computed_values.get(i).getY(), (float)Computing.computed_values.get(i).getZ());            
    }

    PointArray pla = new PointArray(Computing.computed_values.size(), GeometryArray.COORDINATES);
    pla.setCoordinates(0, plaPts);
    Shape3D plShape = new Shape3D(pla, app);
    lineGroup.addChild(plShape);

    return lineGroup;
Group lineGroup=新组();
外观应用=新外观();
着色属性ca=新的着色属性(黑色,着色属性。阴影为平);
应用程序设置颜色属性(ca);
Computing comp=新计算();
公司做这项工作();
Point3f[]plaPts=新的Point3f[Computing.computed_values.size()];
对于(int i=0;i
重要提示:对于我的应用程序,我必须将值转换为float,而不是像最初那样转换为int。