Как использовать библиотеку 3D-диаграмм Jzy3d Java?

Может ли кто-нибудь дать мне дополнительный базовый пример того, как следует использовать jzy3d?
(Примеры исходного сайта не работают для меня)

Я попробовал следующий код:

import org.jzy3d.chart.Chart;
import org.jzy3d.colors.Color;
import org.jzy3d.colors.ColorMapper;
import org.jzy3d.colors.colormaps.ColorMapRainbow;
import org.jzy3d.maths.Range;
import org.jzy3d.plot3d.builder.Builder;
import org.jzy3d.plot3d.builder.Mapper;
import org.jzy3d.plot3d.builder.concrete.OrthonormalGrid;
import org.jzy3d.plot3d.primitives.Shape;

public class Test {

    public static void main(String[] args) {

        JFrame frame = new JFrame();
        Chart chart = getChart();

        frame.add((javax.swing.JComponent) chart.getCanvas());

        frame.setSize(800, 800);
        frame.setLocationRelativeTo(null);
        frame.setTitle("test");
        frame.setVisible(true);
    }

    public static Chart getChart() {
        // Define a function to plot
        Mapper mapper = new Mapper() {
            public double f(double x, double y) {
                return 10 * Math.sin(x / 10) * Math.cos(y / 20) * x;
            }
        };

        // Define range and precision for the function to plot
        Range range = new Range(-150, 150);
        int steps = 50;

        // Create the object to represent the function over the given range.
        org.jzy3d.plot3d.primitives.Shape surface = (Shape) Builder.buildOrthonormal(new OrthonormalGrid(range, steps, range, steps), mapper);
        surface.setColorMapper(new ColorMapper(new ColorMapRainbow(), surface.getBounds().getZmin(), surface.getBounds().getZmax(), new Color(1, 1, 1, .5f)));
        surface.setWireframeDisplayed(true);
        surface.setWireframeColor(Color.BLACK);
        //surface.setFace(new ColorbarFace(surface));
        surface.setFaceDisplayed(true);
        //surface.setFace2dDisplayed(true); // opens a colorbar on the right part of the display

        // Create a chart
        Chart chart = new Chart();
        chart.getScene().getGraph().add(surface);
        return chart;
    }
}

Но когда я пытаюсь запустить его, я получаю это исключение:

Исключение в потоке «основной» java.lang.UnsatisfiedLinkError: нет jogl в java.library.path

Кто-нибудь может помочь?


person Jsncrdnl    schedule 08.11.2011    source источник


Ответы (2)


Вы должны добавить jogl.jar к classpath и jogl.dll к PATH.
Дополнительную информацию см. здесь и здесь.

jogl Инструкции по установке здесь.

person Alex K    schedule 08.11.2011
comment
Я следую первому совету по этой ссылке: (code.google.com/p/jzy3d/ вики/Часто задаваемые вопросы). Но теперь я получаю другую ошибку :: Exception in thread main java.lang.UnsatisfiedLinkError: C:\Users\UserName\workspace\Test\bin2\win32\jogl.dll: не удается загрузить 32-битную IA .dll на AMD 64-битная платформа - person Jsncrdnl; 08.11.2011
comment
Прочтите этот пост: stackoverflow.com /вопросы/5328951/ - person Alex K; 08.11.2011
comment
comment
Ссылки помогли мне найти 64-битную версию для использования в моем проекте. И теперь я могу пойти дальше. Теперь проблема связана с интеграцией в мой интерфейс. Действительно, я следовал этим инструкциям :: (code.google.com/p/jzy3d/wiki /). С Swing::Exception в потоке main java.lang.ClassCastException: org.jzy3d.plot3d.rendering.canvas.CanvasAWT нельзя привести к javax.swing.JComponent. С AWT :: Исключение в потоке AWT-EventQueue-0 java.lang.UnsatisfiedLinkError: com.sun.opengl.impl.JAWTFactory.JAWT_GetAWT0(Ljava/nio/ByteBuffer;)Z - person Jsncrdnl; 08.11.2011
comment
Я действительно прочитал эту часть сайта и вызвал новую диаграмму (качели), но я все еще получаю эту ошибку. - person Jsncrdnl; 08.11.2011

Вы должны запускать свою программу или демонстрацию там, где стоят нативные библиотеки JOGL, т. е. ./bin/{platform}. Если вы работаете с Eclipse, щелкните проект правой кнопкой мыши, выберите «Свойства», «Путь сборки Java», затем вкладку «Библиотеки». Под пунктом «jogl.jar - …» выберите «Расположение собственной библиотеки: (Нет)» и нажмите кнопку «Изменить». Нажмите кнопку Workspace... и выберите папку ./bin/{platform}.

person Martin    schedule 08.11.2011
comment
Я следую первому совету по этой ссылке, но теперь получаю другую ошибку :: Exception in thread main java.lang.UnsatisfiedLinkError: C:\Users\UserName\workspace\Test\bin2\win32\jogl.dll: не удается загрузить IA 32-разрядная .dll на 64-разрядной платформе AMD - person Jsncrdnl; 08.11.2011
comment
Возможно, вы используете не те двоичные файлы. Попробуйте загрузить бинарники AMD. - person Martin; 15.11.2011
comment
Потому что вы пытаетесь запустить 32-битную демонстрацию на 64-битной JVM. paltform, о котором говорил @Martin, должен быть amd64 или win64 или любой другой путь, содержащий jogl.dll для 64 бит. Или вы можете использовать 32-битную JVM для ее запуска (выбирается в конфигурации «Выполнение»). - person Matthieu; 08.06.2013