Code Monkey home page Code Monkey logo

euclidview3d's People

Contributors

codedeedope avatar dragonflycode11 avatar orat avatar

Watchers

 avatar

Forkers

jimbok8

euclidview3d's Issues

Adding other Robots other then UR5e

The .dae Files of the Robots are not aligned and centered first. So for each set of .dae files for each robot, create a specific rotateCordSystem method in the EuclidRobot class. Align them all to the right side. Also create a new addRobotX() method in GeometryView3d for each new robot, where X is the robot type.

After rotating the screen with the mouse the robot pose sliders do not work any more.

Reproducable on windows and linux

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Waited 5000ms for: <715bb635, 3959b81c>[count 2, qsz 0, owner <main-Display-.windows_nil-1-EDT-1>] -
at jogamp.common.util.locks.RecursiveLockImpl01Unfairish.lock(RecursiveLockImpl01Unfairish.java:198)
at jogamp.newt.WindowImpl.lockSurface(WindowImpl.java:1066)
at jogamp.opengl.GLDrawableImpl.lockSurface(GLDrawableImpl.java:307)
at jogamp.opengl.GLContextImpl.makeCurrent(GLContextImpl.java:607)
at jogamp.opengl.GLContextImpl.makeCurrent(GLContextImpl.java:591)
at org.jzy3d.painters.NativeDesktopPainter.getCurrentGL(NativeDesktopPainter.java:93)
at org.jzy3d.painters.NativeDesktopPainter.acquireGL(NativeDesktopPainter.java:77)
at org.jzy3d.chart.Chart.add(Chart.java:541)
at org.jzy3d.plot3d.primitives.ChessFloor.draw(ChessFloor.java:215)
at org.jzy3d.plot3d.primitives.ChessFloor.update(ChessFloor.java:128)
at org.jzy3d.plot3d.primitives.ChessFloor.getSingelton(ChessFloor.java:56)
at de.orat.math.view.euclidview3d.GeometryView3d.updateChessFloor(GeometryView3d.java:794)
at de.orat.math.view.euclidview3d.GeometryView3d.lambda$setUpRobotMovement$0(GeometryView3d.java:166)
at java.desktop/javax.swing.JSlider.fireStateChanged(JSlider.java:454)
at java.desktop/javax.swing.JSlider$ModelListener.stateChanged(JSlider.java:369)
at java.desktop/javax.swing.DefaultBoundedRangeModel.fireStateChanged(DefaultBoundedRangeModel.java:371)
at java.desktop/javax.swing.DefaultBoundedRangeModel.setRangeProperties(DefaultBoundedRangeModel.java:309)
at java.desktop/javax.swing.DefaultBoundedRangeModel.setValueIsAdjusting(DefaultBoundedRangeModel.java:238)
at java.desktop/javax.swing.JSlider.setValueIsAdjusting(JSlider.java:660)
at java.desktop/javax.swing.plaf.basic.BasicSliderUI$TrackListener.mouseDragged(BasicSliderUI.java:2135)
at java.desktop/java.awt.Component.processMouseMotionEvent(Component.java:6674)
at java.desktop/javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3407)
at java.desktop/java.awt.Component.processEvent(Component.java:6395)
at java.desktop/java.awt.Container.processEvent(Container.java:2266)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4592)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Waited 5000ms for: <715bb635, 3959b81c>[count 2, qsz 0, owner <main-Display-.windows_nil-1-EDT-1>] -
at jogamp.common.util.locks.RecursiveLockImpl01Unfairish.lock(RecursiveLockImpl01Unfairish.java:198)
at jogamp.newt.WindowImpl.lockSurface(WindowImpl.java:1066)
at jogamp.opengl.GLDrawableImpl.lockSurface(GLDrawableImpl.java:307)
at jogamp.opengl.GLContextImpl.makeCurrent(GLContextImpl.java:607)
at jogamp.opengl.GLContextImpl.makeCurrent(GLContextImpl.java:591)
at org.jzy3d.painters.NativeDesktopPainter.getCurrentGL(NativeDesktopPainter.java:93)
at org.jzy3d.painters.NativeDesktopPainter.acquireGL(NativeDesktopPainter.java:77)
at org.jzy3d.chart.Chart.add(Chart.java:541)
at org.jzy3d.plot3d.primitives.EuclidPart.addToChart(EuclidPart.java:67)
at org.jzy3d.plot3d.primitives.EuclidPart.drawPart(EuclidPart.java:57)
at org.jzy3d.plot3d.primitives.EuclidPart.rotateAroundVector2(EuclidPart.java:138)
at org.jzy3d.plot3d.primitives.EuclidRobot.rotateTheta(EuclidRobot.java:150)
at org.jzy3d.plot3d.primitives.EuclidRobot.setTheta(EuclidRobot.java:278)
at de.orat.math.view.euclidview3d.GeometryView3d.lambda$setUpRobotMovement$0(GeometryView3d.java:165)
at java.desktop/javax.swing.JSlider.fireStateChanged(JSlider.java:454)
at java.desktop/javax.swing.JSlider$ModelListener.stateChanged(JSlider.java:369)
at java.desktop/javax.swing.DefaultBoundedRangeModel.fireStateChanged(DefaultBoundedRangeModel.java:371)
at java.desktop/javax.swing.DefaultBoundedRangeModel.setRangeProperties(DefaultBoundedRangeModel.java:309)
at java.desktop/javax.swing.DefaultBoundedRangeModel.setValue(DefaultBoundedRangeModel.java:175)
at java.desktop/javax.swing.JSlider.setValue(JSlider.java:551)
at java.desktop/javax.swing.plaf.basic.BasicSliderUI$TrackListener.mouseDragged(BasicSliderUI.java:2180)
at java.desktop/java.awt.Component.processMouseMotionEvent(Component.java:6674)
at java.desktop/javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3407)
at java.desktop/java.awt.Component.processEvent(Component.java:6395)
at java.desktop/java.awt.Container.processEvent(Container.java:2266)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4592)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "java.nio.FloatBuffer.capacity()" because the return value of "org.jzy3d.plot3d.primitives.EuclidVBO2.getVertices()" is null
at org.jzy3d.plot3d.primitives.EuclidVBO2.rotateAroundVector(EuclidVBO2.java:84)
at org.jzy3d.plot3d.primitives.EuclidPart.rotateAroundVector2(EuclidPart.java:129)
at org.jzy3d.plot3d.primitives.EuclidRobot.rotateTheta(EuclidRobot.java:150)
at org.jzy3d.plot3d.primitives.EuclidRobot.setTheta(EuclidRobot.java:278)
at de.orat.math.view.euclidview3d.GeometryView3d.lambda$setUpRobotMovement$0(GeometryView3d.java:165)
at java.desktop/javax.swing.JSlider.fireStateChanged(JSlider.java:454)
at java.desktop/javax.swing.JSlider$ModelListener.stateChanged(JSlider.java:369)
at java.desktop/javax.swing.DefaultBoundedRangeModel.fireStateChanged(DefaultBoundedRangeModel.java:371)
at java.desktop/javax.swing.DefaultBoundedRangeModel.setRangeProperties(DefaultBoundedRangeModel.java:309)
at java.desktop/javax.swing.DefaultBoundedRangeModel.setValueIsAdjusting(DefaultBoundedRangeModel.java:238)
at java.desktop/javax.swing.JSlider.setValueIsAdjusting(JSlider.java:660)
at java.desktop/javax.swing.plaf.basic.BasicSliderUI$TrackListener.mouseReleased(BasicSliderUI.java:1958)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
at java.desktop/java.awt.Component.processEvent(Component.java:6391)
at java.desktop/java.awt.Container.processEvent(Container.java:2266)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Selecting and mooving elements with the mouse

Geometric elements should be movable with the mouse in its position.

Selecting an Element with the mouse and right-click should result in getting information about the location, attitude etc. of the object. This information should be shown in numbers.

Visualisation of orientation by arrows

Line: Arrow-Cones in between start- end end-point
Circle: Arrow-Cones on the circle with fix distances
Plane: Arrow-Cones at the nodes in fix distances

Lines showing only inside the volume defined by the coordinate axes

Der Graph definiiert mit Koordinatenachsen ein Volumen. Eine Linie ist grundsätzlich unendlich lang, sollte aber automatisch auf mit dem definierten Volumen der 3d view abgeschnitten werden. Vergleichbare Funktionalität braucht es auch für die Ebene, aber explizit nicht für Punkte, Kreise und Kugeln. Diese sollen nämlich gerade das dargestellte Volumen bzw. den range der Koordinatenachsen definieren.

Labeling of geometric objects

Geometric objects are labeld. But the labels are not really good to read. A better position and bold-faces is needed.

Implementation of addPlane(Point3d location, Vector3d n, Color color, String label)

The internal plane implementation needs location and two direction vectors which span of the plane.
If location and normal vector is given, the bounding box has to be analysied to determine which part of the plane should be shown. Maybe the end-points of the axes can be projected onto the plane to define points and needed directions.

Dashed circles and spheres

Geometric objects of CGA can be imaginary. Imaginary objects should be visualized by dashed lines. That is why dashed versions of circles and spheres are needed.

Descriptions

Geometric objects like planes, lines, spheres, points, ... are named. The names should be shown in the visualisation close to the corresponding element.

Transparent spheres, planes and robot - light

Especially if a robot is visualized points can lay inside the robot and therefor can be visible only if the robot is transparent. The same for spheres etc. Light would be usefull to better look.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.