Comment tracer la grille 3D (cube) dans Matlab
Salut je voudrais parcelle cube transparent en forme de grille avec des lignes. Quelque chose comme ceci:
Cependant, j'ai réussi à dessiner une grille 2D:
[X,Y] = meshgrid(-8:.5:8);
Z = X+1;
surf(X,Y,Z)
J'utilise Matlab R2009b.
S'il est impossible de tracer ce dans matlab pourriez-vous me recommander un logiciel que je pourrais utiliser.
source d'informationauteur Func
Vous devez vous connecter pour publier un commentaire.
Si vous n'avez pas l'esprit un peu pour les boucles, quelque chose comme ceci:
Vous aurez juste besoin de faire la grille transparente probablement par la modification des propriétés de ligne, je ne pense pas que vous pouvez changer les valeurs alpha pour effectuer cette opération. L'espoir qui est utile.
Considérer cette vectorisé solution. Il a la avantage qu'il crée un objet graphique unique:
Plus vectorisé version de Stephen réponse pourrait être la suivante:
Malheureusement, MATLAB ne prend pas actuellement en charge les lignes transparentes (à ma connaissance). Si vous avez vraiment besoin d'eux pour être transparent, je suggère l'utilisation de 'patch'.
Je comprends que c'est une réponse tardive, mais elle est toujours valable dans le cas où quelqu'un d'autre cherche à faire la même chose.
En supposant que vous tracez des cubes (les bords), une alternative pour les réponses déjà fournies consiste à utiliser la plotcube code de Oliver:
plotcube
L'avantage de cette solution est que vous pouvez:
Tous ces éléments peuvent être des constantes ou des variables.
(par exemple, fixe le bord de couleur ou d'une couleur qui change avec la valeur Z etc.)
Pour ajouter des fonctionnalités de 2. et 3. (ci-dessus) de modifier le "cellfun(@patch..." dans Olivers code, en ajoutant dans les quatre lignes de code supplémentaires comme suit: remplacer l'ensemble de la
cellfun
section avec ce, y compris le nouveau "EdgeAlpha" et " EdgeColor lignes):Pour plus d'info sur "patch" s'il vous plaît voir patch de la documentation.
Une remarque importante:
- pour les grands modèles (nombre de cubes) est très lent à s'exécuter.
par exemple, l'exécution de cette 'plotcube' dans un 'pour' boucle dans MATLAB sur des milliers de blocs. Je crois que c'est à partir de l'appelant le "patch" de fonction à plusieurs reprises.
Une meilleure solution serait de vectoriser; de mettre tous tes points (les sommets/faces/whatever), le tout dans une seule matrice d'abord, puis d'appeler la @patch fonction qu'une seule fois (pas de "pour" boucle). Cela nécessiterait de modifier le code d'une manière ou d'une mise à jour de toutes les données XYZ.
J'espère que ça aide quelqu'un.
Ici est le " plotcube code dans le cas où le lien vers le code d'origine par Oliver pauses un jour:
vous pouvez faire à l'intérieur de la ligne type de transparent par la définition de la couleur = [0.65, 0.65, 0.65]. Et vous pouvez utiliser dash style de ligne pour l'intérieur des lignes et des lignes pleines de limite pour le rendre plus comme un objet 3d.
Dans mon logiciel, je code un mesh3 fonction de tracé de la 3-D tenseur produit mailles.