Ich brauche einen Vorschlag/Idee, wie man eine 3D Tag Cloud in Java (Swing) erstellt (genau wie hier gezeigt: http://www.adesblog.com/2008/08/27/wp-cumulus-plugin/) , könnten Sie bitte helfen?Wie erstelle ich 3D Tag Cloud in Java
Antwort
Ich würde entweder mit Swing und Java2D oder OpenGL (JOGL) gehen.
Ich benutze OpenGL einige Male und Zeichnung Text ist einfach mit JOGL Erweiterungen (TextRenderer).
Wenn Sie Swing wählen, dann ist der schwierige Teil die Implementierung einer 3D-Transformation. Sie müssten eine Art Partikelsystem schreiben. Die Partikel müssten sich auf einer 3D-Kugel befinden. Sie wären persönlich verantwortlich für jede 3D-Transformation, aber mit einer orthogonalen Projektion, die trivial wäre. Es ist also eine schöne Übung - was Sie brauchen, ist hier: Wiki's spherical coord sys und hier 3d to 2d projection.
Nachdem Sie alle die Transformation gemacht nur Zeichnung bleibt übrig. Und Java2D und Swing haben dafür eine sehr praktische API. Es würde herunterkochen, um Schriftgröße auszuwählen und Text an gegebenen Koordinaten zu zeichnen. Benutzerdefinierte JPanel mit überschreiben paintComponent
Methode wäre genug zu starten und zu beenden.
Wie für die zweite Wahl der schwierigste Teil ist OpenGL API selbst. Es ist verfahrenstechnisch, wenn Sie hauptsächlich mit Java vertraut sind. Sie würden es schwer haben, Nicht-OO-Zeug zu verwenden. Es kann sich daran gewöhnen und, um ehrlich zu sein, kann es sehr lohnend sein, da man viel damit machen kann. Wenn Sie OpenGL ausgewählt haben, erhalten Sie alle 3D-Transformationen kostenlos, müssen sich aber dennoch selbständig vom sphärischen Koordinatensystem in ein kartesisches transformieren (der erste Wiki-Artikel ist immer noch hilfreich). Danach ist es nur eine Frage der Verwendung einer Textzeichenklasse wie TextRenderer
, die mit JOGL-Distribution geliefert wird.
So OpenGL hilft Ihnen mit Projektion Berechnungen und ist hardwarebeschleunigt. Das Java2D würde mehr Mathematik erfordern, aber meiner Meinung nach scheint dieser Ansatz etwas einfacher zu sein. Oh, und übrigens - das Java2D versucht, irgendeine Grafikbeschleunigung zu verwenden, die es (OpenGL oder DirectDraw) intern gibt. Sie sind also vor bestimmten Low-Level-Problemen geschützt.
Für beide Optionen müssen Sie auch Mauskoordinaten s an die Rotationsgeschwindigkeit der Kugel binden. Ob Java2D oder OpenGL, der Code sieht sehr ähnlich aus. Zeichnen Sie die Mauskoordinaten, die sich auf die Mitte des Panels beziehen, einfach auf einen Geschwindigkeitsvektor auf. Zum Zeitpunkt des Zeichnens können Sie den Vektor verwenden, um die Kugel entsprechend zu drehen.
Und noch etwas: Wenn Sie OpenGL ausprobieren möchten, würde ich empfehlen: Processing language erstellt am MIT speziell für reiche Grafik-Applets. Ihre 3D-API ist nicht zufällig, ist fast das gleiche wie OpenGL, aber ohne viel von der Gruft. Also, wenn Sie den schnellsten Prototyp wollen, ist das die beste Wette. Beraten Sie this discussion thread für aktuelles Beispiel. Hinweis: Die Verarbeitung wird in Java geschrieben.
Warum nicht einfach download den Quellcode, und schauen? Selbst wenn Sie PHP nicht schreiben können, sollte es dennoch möglich sein, es zu lesen und herauszufinden, wie der Algorithmus funktioniert.
Ich werde es tun, wenn es nicht weniger schmerzhaft ist :) Wie Java-Quelle. BTW, was Rendering-Technik könnten Sie vorschlagen - JPanel/JLabel oder möglicherweise OpenGL oder etw. sonst? – xolmc
Es ist ein Flash-Film, die Quelle ist in ActionScript - nicht PHP. – Rekin
Alternativ, 'svn co http: // svn.wp-plugins.org/wp-cumulus/trunk'. – trashgod
Das ist nicht wirklich 3D. Es gibt keine perspektivischen Transformationen oder Mapping der Text auf einige 3D-Form (wie etwa eine Kugel). Was Sie haben, ist eine Reihe von Strings, wobei jeder String eine zugehörige Tiefe (oder Z-Reihenfolge) hat. Strings "näher" zu Ihnen sind mit einem stärkeren Grauton und größerer Schriftgröße gemalt.
Die Bewegung jeder Saite beim Bewegen der Maus ist in der Tat eine 3D-Form, die wie ein schräger Kreis um ein festes Zentrum aussieht - wobei die Neigung davon abhängt, wo sich der Mauszeiger befindet.Das ist einfache Mathematik - wenn Sie es für eine Zeichenfolge herausfinden, finden Sie es für alle heraus. Und dann wäre das letzte Stück, die Stränge so zu streuen, dass sie sich nicht zu sehr überlappen, und jedem das Anfangsgewicht basierend auf ihrer Frequenz zu geben.
Das ist, was most of the code tut. Sie müssen also entweder rechnen oder das ActionScript blind in Java2D übersetzen. Und nein, JOGL ist nicht nötig.
+1 Mathematisch Ihre Antwort scheint eine solide Basis zu haben. Werde es ausprobieren. Danke. – Favonius
- 1. Wie erstelle ich eine Tag-Cloud in ASP.NET?
- 2. Tag Cloud in C#
- 3. Wie erstelle ich eine Karte in Java?
- 4. Wie erstelle ich einen Ordner in Java?
- 5. Wie erstelle ich Kafka ZKStringSerializer in Java?
- 6. HTML Tag Cloud in Python
- 7. PHP Tag Cloud
- 8. Wie erstelle ich ein 3D-Kreisdiagramm? -Asp.net MVC
- 9. Wie erstelle ich UI "Eingabefelder" im Panel (3D Blender 2.55)?
- 10. Nhibernate Tag Cloud
- 11. Django-Tag-Cloud-Plugin
- 12. Wie erstelle ich 'Remove Tag' Links mit Acts_As_Taggable_On in Rails?
- 13. Wie kann ich eine Tag Cloud in Java generieren, mit OpenCloud?
- 14. Wie kann ich Post-Titel-Cloud (statt Tag Cloud) in Wordpress erstellen?
- 15. Wie erstelle ich ausführbares Java-Programm?
- 16. Java - Wie erstelle ich ein benutzerdefiniertes Dialogfeld?
- 17. Tag-Cloud basierend auf Gewicht/order_id
- 18. Wie zeichne ich eine transparente Ebene in Java 3D?
- 19. Wie dreh ich die Kamera/viewPlatform in Java 3d
- 20. Wie setze ich benutzerdefinierte FPS in Java 3D?
- 21. Tag Cloud-Steuerelement für WPF
- 22. Wie erstelle ich benutzerdefinierte Tag-Helfer für den Rasierer?
- 23. Wie erstelle ich ein Input-Tag über einer Schaltfläche
- 24. Wie erstelle ich [youtube] -Tag für PECL BBCode Erweiterung?
- 25. Wie implementiert man die Tag-Cloud in Sharepoint 2007?
- 26. Wie erstelle ich ein ziehbares Objekt in Java?
- 27. Wie erstelle ich ein eigenes Java-Objekt in FTL
- 28. Wie erstelle ich eine Datei in Java (kein Ordner)?
- 29. Wie erstelle ich ein Overlay-Fenster in Java?
- 30. Wie erstelle ich die folgende GUI in Java Swing?
Vielen Dank für die ausführliche und hilfreiche Antwort! Entschuldigung, ich habe keinen ausreichenden Ruf für die Abstimmung :( Die Java2D-Lösung würde passen, aber ich brauche den Text anklickbar sein. Könnten Sie mir bitte sagen, bietet JOGL einige Mechanismen ermöglicht es, die Klicks auf gerenderten Text zu hören? Also - Ich werde auf einer Reise beginnen ... – xolmc
Ja, es gibt eine spezielle Einrichtung - OpenGL Kommissionierung (siehe http://www.lighthouse3d.com/opengl/picking/). Es funktioniert, dass Sie einen bestimmten Namen festlegen Objekt und dann spezielle Render-Modus verwenden, um es zu identifizieren.Es kann ziemlich chaotisch werden, weil es sehr niedrige Ebene ist, aber ich habe es einige Male getan, so kann hilfreich sein, wenn nötig – Rekin