Προς το περιεχόμενο

3d σχήμα MATLAB


stathi02

Προτεινόμενες αναρτήσεις

Παιδιά καλησπέρα, θα ήθελα να κάνω ένα σχήμα όπως το παρακάτω. Για την κατασκευή αυτού του σχήματος έχω σημεία (X,Y,Z) και για κάθε σημείο αντιστοιχεί μια τιμή V από τις οποίες θέλω να υπολογιστούν οι ισοβαρείς καμπύλες (Contours). Αν έχετε κάνα tip για να το ξεκινήσω θα βοηθούσε πολύ.

 

Ευχαριστώ πολύ

post-42362-0-03981000-1303039296_thumb.jpg

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν καταλαβαίνω το σχήμα της εικόνας, αλλά αν ξεκινήσεις από κάποια εντολή των οικογενειών contour, e.g. contour3, ή surf ή mesh ή ακόμα και τη slice, και αλλάξεις το orientation των αξόνων ή της κάμερας, θα το φτιάξεις.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν καταλαβαίνω το σχήμα της εικόνας, αλλά αν ξεκινήσεις από κάποια εντολή των οικογενειών contour, e.g. contour3, ή surf ή mesh ή ακόμα και τη slice, και αλλάξεις το orientation των αξόνων ή της κάμερας, θα το φτιάξεις.

 

Το σχήμα είναι ένας τρισδιάστατος χώρος ο οποίος περιγράφεται από σημεία με συντεταγμένες (x,y,z). Και για κάθε σημείο υπάρχει μια τέταρτη διάσταση (η οποία θέλω να είναι οι ισοβαρείς καμπύλες). Λογικά με το contour3 γίνεται αλλά δεν τα έχω καταφέρει και έλεγα μήπως έχετε καμία ιδέα. Φαντάσου ότι έχω ένα διάνυσμα με τα Χ (x1,x2...xν), ένα διάνυσμα με τα Y (y1, y2,....yν), ένα διάνυσμα με τα z(z1,z2,...zν) και τέλος ένα τρισδιάστατο πίνακα V (Xn,Yn,Zn). To V είναι μια ιδιότητα του χώρου, πχ, πίεση, δυναμικό οτιδήποτε. Τα Χ,Υ,Ζ είναι απλά διανύσματα μήκους.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Προσπάθησα με την contour3 αλλά τελικά κατέληξα ότι δεν γίνεται. Μάλλον πιστεύω ότι θα πρέπει σε πρώτη φάση να σχεδιάσω ένα 3δ σχήμα (όπως της εικόνας) και μετά να κάνω ένα contour σε κάθε πλευρά του σχήματος (σε 2) που θέλω. Θα προσπαθήσω σε πρώτη φάση να φτιάξω το μπλε σχήμα και μετά θα επιστρέψω. Όποια ιδέα δεκτή. Νόμιζα οτι θα υπάρχει μια εντολή η οποία θα παίρνει τα 3 διανύσματα και τον πίνακα και θα το κάνει σε μια γραμμή αλλά δεν.. :mrgreen:

Καλημέρα σε όλους

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

stathi02 εάν έβγαλες εύκολη άκρη θα ήθελα να ακούσω πως το έκανες.

Εύκολη εννοώ να μη χρειάστηκες να λύσεις όλο το σύστημα γεωμετρικά πρώτα και να κάνεις rendering ουσιαστικά.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

stathi02 εάν έβγαλες εύκολη άκρη θα ήθελα να ακούσω πως το έκανες.

Εύκολη εννοώ να μη χρειάστηκες να λύσεις όλο το σύστημα γεωμετρικά πρώτα και να κάνεις rendering ουσιαστικά.

Προσωρινά το έλυσα με συνδυασμό matlab και photoshop. Δημιουργώ με το contour 2D τις δυο πλευρές του σχήματος και στο photoshop χρησιμοποιώ το edit ---> transform ---> distort για να δώσω το 3D σχήμα. Τώρα προσπαθώ να έχω ισοβαρείς καμπύλες και στην επιφάνεια (και να συνεχίζουν στα πλαϊνά) αλλά δυσκολεύομαι αρκετά.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πάλι καλά που είναι παραλληλεπίπεδο.

Παλιότερα ήθελα να κάνω κάτι αντίστοιχο σε σύνθετο σχήμα.

Τα είχα παρατήσει…

Καλή συνέχεια!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αυτό που θες λέγεται slice. Αφού κάνεις TriScatterInterp τα δεδομένα σου, δημίουργείς ένα slice σε κάθε πλευρά του κύβου. Αν δεν βγάλεις άκρη, πες μου να γράψω αναλυτικές οδηγίες.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αυτό που θες λέγεται slice. Αφού κάνεις TriScatterInterp τα δεδομένα σου, δημίουργείς ένα slice σε κάθε πλευρά του κύβου. Αν δεν βγάλεις άκρη, πες μου να γράψω αναλυτικές οδηγίες.

Μάριε, αν μπορείς δώσε ένα hint γιατί χάθηκε η μπάλα. Εγώ έχω ένα διάνυσμα x=0:1:100, ένα y=0:1:100, ένα z=0:1:500; και ένα διάνυσμα V που περιέχει τις τιμές της παραμέτρου που θέλω να απεικονίσω. π.χ. V(x,y,z) V(0,0,0),V(0,0,1),V(0,0,2),....... Ο συνολικός αριθμός στοιχείων του V είναι 101 επί 101 επί 501. Για κάθε συντεταγμένη χ,ψ,ζ αντιστοιχεί ένας αριθμός.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

παιδιά τελικά το κατάφερα, χρησιμοποιώντας μόνο την εντολή slice. Επισυνάπτω κιόλας την απόδειξη :mrgreen: .Θα προσπαθήσω να γράψω πως τα κατάφερα. Με τα διανύσματα x,y,z που αναφέρω παραπάνω, με τη χρήση της εντολής meshgrid φτιάχνω ένα grid ([xgrid,ygrid,zgrid]=meshgrid(x,y,z); Και μετά χρησιμοποιώ την εντολή slice ως εξής. slice(xgrid,ygrid,zgrid,V,xslice,yslice,zslice). Ο πινακας V πρέπει να είναι της μορφής dim(x),dim(y),dim(z) και να περιέχει τις τιμές της παραμέτρου. Τα xslicem yslice,zslice είναι που θέλω να εμφανίζονται τα επίπεδα.

 

Ευχαριστώ πολύ!

post-42362-0-29556400-1304446482_thumb.jpg

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...