Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR ha finalmente lanciato il suo nuovo flagship: Magic 8 Pro. Lo abbiamo provato a fondo in queste settimane e ve lo raccontiamo nella nostra recensione completa. HONOR rimane fedele alle linee della versione precedente, aggiungendo però un nuovo tasto dedicato all'AI. Ma è al suo interno che c'è la vera rivoluzione grazie al nuovo Snapdragon 8 Elite Gen 5 e alla nuova MagicOS 10
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Le webcam Insta360 Link 2 Pro e Link 2C Pro sono una proposta di fascia alta per chi cerca qualità 4K e tracciamento automatico del soggetto senza ricorrere a configurazioni complesse. Entrambi i modelli condividono sensore, ottiche e funzionalità audio avanzate, differenziandosi per il sistema di tracciamento: gimbal a due assi sul modello Link 2 Pro, soluzione digitale sul 2C Pro
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-12-2008, 16:18   #1
som
Member
 
Iscritto dal: Apr 2008
Messaggi: 82
[JAVA3D] Utilizzare 2D in Canvas3D

Salve a tutti,
ho la necessità di utilizzare delle forme bidimensionali in un canvas3D.
Per fare ciò ho ridefinito il metodo postRender() della classe Canvas3D

Codice:
public class CustomCanvas3D extends Canvas3D {
	public CustomCanvas3D(GraphicsConfiguration gcIn) {
		super(gcIn);
	}
        @Override
	public void postRender()
	{
                J3DGraphics2D g = getGraphics2D();
                g.setColor(Color.orange);
                g.fillOval(0, 0, 50, 50);
                g.flush(true);
	}
}
fin qui tutto ok. L'ovale in esempio mi compare nel canvas.

Ora avrei la necessità di capire quando il mouse viene cliccato su questo oggetto in modo da poterlo spostare nel canvas (e magari anche ridimensionarlo.. ma per ora vorrei solo traslarlo).

Il pick implemento per intercettare il click sull'oggetto 3d mi pare non funzionante per l'oggetto 2D (anche perchè questo non fa parte del BranchGroup associato al PickCanvas), quindi dovrei fare diversamente.

Qualcuno ha idea di come si possa fare a gestire degli oggetti 2D in un canvas3D?
Intanto vi ringrazio per l'attenzione.
Ciao

ps. Avevo provato anche a definire i miei oggetti 2D come trasformazione della ViewingPlatform dell'Universo, ma non mi convinceva perchè a me servirà estrarre dei punti di intersezione tra questi oggetti 2D e quelli 3D.
som è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2008, 18:09   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
[Premesso che non conosco il framework Java3D]
Quello che vuoi fare temo non sia proprio banale.
Guardando lo spezzone di codice vedo che tu hai eseguito delle operazioni di disegno sul canvas 2d ottenuto dal canvas 3d, punto.
Credo proprio che non ci sia da nessuna parte un oggetto corrispondente al tuo ovale da poter chiedere al canvas 3d e con cui farlo inteagire.

Già per poter individuare un click sul canvas 2d e dire se è interno o meno all'ovale c'è bisogno di un oggetto/modello della figura, credo che al tuo caso potrebbe essere utile utilizzare qualche strumento già pronto nel Framework di Java, in particolare:

- l'interfaccia java.awt.Shape
- alcune classi in java.awt.geom (tra cui PathIterator)

Lo scopo sarebbe quello di evitare di disegnare direttamente con i comandi la figura; invece la si "costruisce" come un percorso (un PathIterator, che poi è un'implementazione di una Shape, vedi sopra) in modo da poter poi fare i confronti con le coordinate del mouse ed essere agevolati anche per quanto rigurda traslazioni varie (e rotazioni nel piano 2d, se dovesse servire).

Per quanto riguarda invece l'intersezione della figura 2d con quelle 3d francamente non saprei.

Per curiosità, cosa stai cercando di ottenere? Cioè quale sarebbe lo scopo di trovare le intersezioni delle figure 2d con le 3d?
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 09-12-2008 alle 18:26.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2008, 23:09   #3
som
Member
 
Iscritto dal: Apr 2008
Messaggi: 82
Intanto ti ringrazio per la risposta.

In effetti credo tu abbia ragione, proverò a disegnare in questo modo (per la parte 3d utilizzo già delle Shape3D)

L'intersezione tra gli oggetti 2D e il solido 3D che c'è sotto mi serve perchè rappresenteranno delle coordinate da mandare ad un macchina a controllo numerico. In pratica sto cercando di capire se posso riuscire a creare un cad/cam con java 3d ( il limite non è detto che sia java3d ... anzi potrei benissimo essere io ).
Se hai suggerimenti in merito sono qui!

Comunque ti aggiorno sugli sviluppi!

Ultima modifica di som : 09-12-2008 alle 23:16.
som è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 00:00   #4
nico159
Senior Member
 
Iscritto dal: Aug 2003
Città: Barletta (BA)
Messaggi: 939
Non so se ti può essere utile
http://labs.trolltech.com/blogs/2008...sion-wolfenqt/
Ci sono i sorgenti, magari potresti usare la stessa tecnica con Java (comunque le QT funzionano anche con Java)
__________________
In a world without fences, who needs Gates?
Power by: Fedora 8 - Mac OS X 10.4.11

Ultima modifica di nico159 : 10-12-2008 alle 00:02.
nico159 è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 08:13   #5
som
Member
 
Iscritto dal: Apr 2008
Messaggi: 82
Grazie nico159, ci dò subito un'occhiata.
som è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 12:29   #6
som
Member
 
Iscritto dal: Apr 2008
Messaggi: 82
Ho risolto la questione del disegno2D selezionabile e traslabile aggiungendo all'Universo un nuovo BranchGroup che contiene il mio 2D ottenuto con Shape3D con quota z fissata.
Ora però devo fare in modo che questo si porti sulla superficie per poi ricavare le mie coordinate. Mi piacerebbe ottenere un effetto magnetico tra la superficie del solido e il mio 2D ... ma chissà
som è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 12:44   #7
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da som Guarda i messaggi
Ho risolto la questione del disegno2D selezionabile e traslabile aggiungendo all'Universo un nuovo BranchGroup che contiene il mio 2D ottenuto con Shape3D con quota z fissata.
Ora però devo fare in modo che questo si porti sulla superficie per poi ricavare le mie coordinate. Mi piacerebbe ottenere un effetto magnetico tra la superficie del solido e il mio 2D ... ma chissà
Immagino che la superficie del solido 3D rappresenti il "pezzo" da lavorare...
Invece il solido 3D a quota Z fissa (nel senso che ha spessore costante?) cosa rappresenta? La lavorazione che deve effettuare la testa della macchina CN? (Sto ipotizzando che la macchina in questione sia una sorta di pantografo).

Forse sbaglio, ma se la superficie 3D del "pezzo" rappresenta la superficie di lavoro, non puoi in qualche modo ricavarti la sua quota Z e usarla come quota Z di base per la Shape3D della "lavorazione" nel nuovo BranchGroup?

Cioè non ho capito in che senso vuoi ottenere l'effetto magnetico: immagino si tratti di quando catturi e processi gli eventi del mouse per la traslazione (sei già riuscito a riconoscere un click del mouse sulla Shape?)...
In quel caso basta che tieni "bloccata" una coordinata e lasci che la traslazione agisca sulle altre due... credo
[Ricordo che non consco Java3D, e quindi non so nulla, manco cos'è un BranchGroup e che funzione ha nell'architettura di questo framework]
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 13:41   #8
som
Member
 
Iscritto dal: Apr 2008
Messaggi: 82
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Immagino che la superficie del solido 3D rappresenti il "pezzo" da lavorare...
Invece il solido 3D a quota Z fissa (nel senso che ha spessore costante?) cosa rappresenta? La lavorazione che deve effettuare la testa della macchina CN? (Sto ipotizzando che la macchina in questione sia una sorta di pantografo).
Esattamente!

Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Forse sbaglio, ma se la superficie 3D del "pezzo" rappresenta la superficie di lavoro, non puoi in qualche modo ricavarti la sua quota Z e usarla come quota Z di base per la Shape3D della "lavorazione" nel nuovo BranchGroup?
Si ma non è esattamente così immediato. A seconda della superficie che voglio lavorare, "'l'altezza" a cui piazzare la mia lavorazione può essere una distanza dall'asse X se il piano è orizzontale, dall'asse Y se il piano è verticale o da calcolare in caso di piano obliquo...tutto dipende dal piano.

Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Cioè non ho capito in che senso vuoi ottenere l'effetto magnetico: immagino si tratti di quando catturi e processi gli eventi del mouse per la traslazione (sei già riuscito a riconoscere un click del mouse sulla Shape?)...
In quel caso basta che tieni "bloccata" una coordinata e lasci che la traslazione agisca sulle altre due... credo
[Ricordo che non consco Java3D, e quindi non so nulla, manco cos'è un BranchGroup e che funzione ha nell'architettura di questo framework]
Sì sono riuscito a selezionare la shape con il click. L'Effetto magnetico che avevo in mente ( ma ci devo ancora ragionare su ) era per fare in modo che il disegno della lavorazione andasse direttamente ad aderire sulla superficie da lavorare. Con la traslazione mi sposto in x e y , la terza coordinata z rimane da gestire o con i calcoli che ti dicevo prima o in questo modo ( o in entrambi )

[ il BranchGroup è un nodo fondamentale dell'albero che compone il Java3D ]

Cmq ti ringrazio molto non solo per la partecipazione alla discussione, ma anche per aver capito "al volo".
som è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 13:51   #9
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da som Guarda i messaggi
Cmq ti ringrazio molto non solo per la partecipazione alla discussione, ma anche per aver capito "al volo".
Credo che sia perchè lavoriamo più o meno nello stesso "ramo"... io ho a che fare con un CAD/CAM di forme parametrizzate.
Per (mia) fortuna le forme poi servono solo per esplodere le loro facce (quelle che per te sono le superfici) nel piano 2D e i tagli sono sempre nel piano 2D, e non ho neppure un motore verticale per la testa di taglio (posizioni fisse, pistoni) quindi è tutto molto più semplice.

Al momento non mi viene in mente nulla per il tuo problema, ma mi pare di aver capito che le "superfici" su cui lavori non è detto che corrispondano sempre ai piani ortogonali rispetto il sistema cartesiano di riferimento.

In tal caso forse ti servirebbe (se già non ce l'hai) un'astrazione/entità che ti rappresenti un piano generico, potrebbe servire ad esempio per rimappare un certo spostamento fatto su un piano ortogonale (quello XY del mouse sul canvas2D, tanto per essere più concreti) sul piano che rappresenta la tua attuale "superfice" di lavoro.

Spero di non aver detto minchiate
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 10-12-2008 alle 13:54.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 14:06   #10
som
Member
 
Iscritto dal: Apr 2008
Messaggi: 82
Sì, la superficie può avere qualsiasi inclinazione e ciò complica un po' le cose.

Non credo tu abbia detto minchiate, ma non escludo che abbia potuto dirne anche io
som è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 16:17   #11
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Intendevo dire che dovresti astrarre una classe/interfaccia (quel che è) che rappresenti un generico Piano: i piani ortogonali sono solo un caso particolare tra tutti quelli possibili.

Se poi riesci a definire un'operazione che traduca le coordinate di un punto del piano (ortogonale) nelle rispettive coordinate del corrispettivo punto sul piano (inclinato) sei a cavallo: se non sbaglio ciò ha a che fare con gli spazi vettoriali.

Conoscendo la teoria (le giuste formule) dovresti essere in grado di implementare un sistema come ho descritto sopra, quindi pensa un po', potresti mappare le coordinate su qualsiasi piano (cioè inclinato contemporaneamente su tutti gli assi, ammesso che ciò ti serva).

Purtroppo sono scarsillo in quanto a conoscenze matematico/algebriche, forse qualche altro utente ti può dare le giuste informazioni.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2008, 14:34   #12
som
Member
 
Iscritto dal: Apr 2008
Messaggi: 82
Questo calcolo per ora non dovrebbe servirmi, ho deciso di rendere i piani paralleli al mio schermo prima di aggiungerci delle lavorazioni ( che tra l'altro sono diventate dei solidi 3D anche loro... )

Ho un mucchio di problemi .. chissà se ne esco vivo
som è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2008, 15:05   #13
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da som Guarda i messaggi
Questo calcolo per ora non dovrebbe servirmi, ho deciso di rendere i piani paralleli al mio schermo prima di aggiungerci delle lavorazioni ( che tra l'altro sono diventate dei solidi 3D anche loro... )

Ho un mucchio di problemi .. chissà se ne esco vivo
Bhe, quello che stai facendo non è proprio semplicissimo (parlo immaginando anche il resto che ci sta dietro, non solo il problema oggetto di questo thread), specie se sei da solo e devi contare solo su te stesso per implementare il software: ti auguro di avere almeno un altro collega con cui confrontarti

Ottima idea pressuporre il parallelismo dei piani rispetto allo schermo per introdurre le lavorazioni nei piani inclinati (provo a immaginare: il trucco sta nel fatto che sai quanto è il valore di inclinazione del piano rispetto quello ortogonale di riferimento: ma se le lavorazioni le inserisci parallele a quello inclinato ciò forse significa che la testa che deve fare la lavorazione è inclinabile/ruotabile?)
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2008, 16:28   #14
som
Member
 
Iscritto dal: Apr 2008
Messaggi: 82
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Bhe, quello che stai facendo non è proprio semplicissimo (parlo immaginando anche il resto che ci sta dietro, non solo il problema oggetto di questo thread), specie se sei da solo e devi contare solo su te stesso per implementare il software: ti auguro di avere almeno un altro collega con cui confrontarti
Grazie banryu! Al progetto ci lavoro da solo ma ho un ottimo collega con cui confrontarmi!

Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Ottima idea pressuporre il parallelismo dei piani rispetto allo schermo per introdurre le lavorazioni nei piani inclinati (provo a immaginare: il trucco sta nel fatto che sai quanto è il valore di inclinazione del piano rispetto quello ortogonale di riferimento: ma se le lavorazioni le inserisci parallele a quello inclinato ciò forse significa che la testa che deve fare la lavorazione è inclinabile/ruotabile?)
Certo che non ti sfugge nulla .. Grande!!
som è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2008, 16:39   #15
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da som Guarda i messaggi
Certo che non ti sfugge nulla .. Grande!!
Se è come pensavo allora la macchina e le lavorazioni sono belle complesse, azz.
Chissà che figata

Che fate? Fresate metalli? O magari fate modelli per stampi?
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2008, 16:45   #16
som
Member
 
Iscritto dal: Apr 2008
Messaggi: 82
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Se è come pensavo allora la macchina e le lavorazioni sono belle complesse, azz.
Chissà che figata

Che fate? Fresate metalli? O magari fate modelli per stampi?
Macchine utensili di vari tipi tra cui anche frese per metalli!
som è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Call of Duty rallenta: finisce l'era del...
Colossus 2 entra in funzione: il superco...
Ningtendo PXBOX 5: PS5, Xbox Series X e ...
Scossone in Ubisoft: il boss di The Divi...
Nuovo Media Creation Tool per Windows 11...
Animazioni credibili per ingannare gli u...
Hyundai mostra il camper elettrico STARI...
Qual è l'auto elettrica più...
Google amplia il controllo dell'utente s...
TIM annuncia una nuova rimodulazione per...
Annunciato un altro membro del cast dell...
Google testa le 'Skills' su Chrome: una ...
Stop a Zenfone e ROG Phone: ASUS punta t...
Anche AMD cambia i piani: priorità...
Allarme rincari telefonia: l'UE potrebbe...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 13:51.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v