0

我跟着jzy3d的demo,在IntelliJ,win10中用AnalysisLauncher.open()做了一个3D绘图模型。它工作得很好。现在我需要迁移到 Android 以便模型可以显示在移动应用程序中。我的代码需要进行什么样的更改?具有任何 jzy3d 曲面图的示例项目将是理想的。

我阅读了如何使用 eclipse 在 android 中使用 jzy3d 页面?. 这个想法似乎很有希望,因为 jzy3d 依赖于 JOGL 2 并且 OpenGL 是跨平台的 API。但我无法理解@Martin 的所有指示。即如何替换 AWT 和“派生 CanvasNewtAwt”?我不知道如何在 Android Studio 中启动项目。jzy3d 网站 ( http://www.jzy3d.org/ ) 还说“如果启用批准 JOGL jars,Android 应该可以工作”。我该怎么做呢?

import MyColorMap.ColorMapGrayColor;
import org.jzy3d.analysis.AbstractAnalysis;
import org.jzy3d.analysis.AnalysisLauncher;
import org.jzy3d.chart.factories.AWTChartComponentFactory;
import org.jzy3d.colors.Color;
import org.jzy3d.colors.ColorMapper;
import org.jzy3d.colors.colormaps.ColorMapGrayscale;
import org.jzy3d.colors.colormaps.IColorMap;
import org.jzy3d.maths.Coord3d;
import org.jzy3d.plot3d.primitives.Point;
import org.jzy3d.plot3d.primitives.Polygon;
import org.jzy3d.plot3d.primitives.Shape;
import org.jzy3d.plot3d.rendering.canvas.Quality;

public class ChartPlot extends AbstractAnalysis {
    private int unitSize;
    private BufferedImage img;

    public static void main(String[] args) throws Exception {
        AnalysisLauncher.open(new ChartPlot("Forest.jpg", 10));
    }

    ChartPlot (String imgName, int unitSize) {
        img= getImg(imgName);
        this.unitSize= unitSize;
    }

    @Override
    public void init() {
        int[][][] xycoords= getXYCoords(img, unitSize);
        float[][][] zcoords= getZCoords(img, unitSize);
        List<Polygon>[] polygonsArray= (List<Polygon>[])new List[COUNT_COLOR];
        for (int iColor=0; iColor < polygonsArray.length; iColor++) {
            polygonsArray[iColor]= getPolygons(xycoords, zcoords, iColor);
        }
        IColorMap[] colorMaps= new IColorMap[] {new ColorMapGrayscale(), new ColorMapGrayColor(ColorMapGrayColor.RED),
                new ColorMapGrayColor(ColorMapGrayColor.YELLOW), new ColorMapGrayColor(ColorMapGrayColor.BLUE),
                new ColorMapGrayscale()};
        Shape[] surfaces= new Shape[COUNT_COLOR];
        for (int iColor= 0; iColor < surfaces.length; iColor++) {
            surfaces[iColor]= iColor == INDEX_WHITE || iColor == INDEX_BLACK ?
                    getSurface_Global(polygonsArray[iColor], colorMaps[iColor]) :
                    getSurface_Local(polygonsArray[iColor], colorMaps[iColor]);
        }

        chart = AWTChartComponentFactory.chart(Quality.Advanced, getCanvasType());
        chart.getScene().getGraph().add(surfaces[INDEX_BLACK]);
        chart.getScene().getGraph().add(surfaces[INDEX_RED]);
        chart.getScene().getGraph().add(surfaces[INDEX_YELLOW]);
        chart.getScene().getGraph().add(surfaces[INDEX_BLUE]);
        chart.getScene().getGraph().add(surfaces[INDEX_WHITE]);
}
4

0 回答 0