orat / euclidview3d Goto Github PK
View Code? Open in Web Editor NEWViewer for 3d geometrical objects like planes, spheres, points, circles.
License: Apache License 2.0
Viewer for 3d geometrical objects like planes, spheres, points, circles.
License: Apache License 2.0
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.
Updating the chess floor before updating the robot/skeleton leads to the rotation having stutters. Also having smaller squares slows down the rotating performance, this performance issues is a framerate drop. (at least at 50.f size).
For now: First update the robot (with update parameter false) then update the chessfloor (with update paramter true).
read the data from the dae- files saved in the above github repo. How to handle position and orientation of these objects?
Maybe also showing the stl files for collission detection is useful - optional visualisation.
The xacro files contain inertial and other useful data - there is a template-like format - so it is a question how to read the data from it.
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)
Element to visualize the floor (z==0 plane) by a chess pattern with configurable square length.
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.
vielleicht bei line immer in der Nähe des point-arguments
Switching from awt to newt results in an error message.
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
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.
Geometric objects are labeld. But the labels are not really good to read. A better position and bold-faces is needed.
see https://enkimute.github.io/ganja.js/examples/coffeeshop.html#cga3d_points_circles_lines
based on CroppableLineStrip, sie the method addCircle() in the viewer test class
Simply complete the implementation
Implementation is complete but defined planes are not shown.
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.
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.
Geometric objects like planes, lines, spheres, points, ... are named. The names should be shown in the visualisation close to the corresponding element.
This happens on Unbuntu-Linux on a T15 Laptop. It is unclear if this also happens on other devices or operation systems.
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.