En Matlab, nous pouvons créer une surface de base avec la foudre face plane en utilisant les éléments suivants:Est-il possible d'obtenir des informations d'intensité lumineuse pour une surface en utilisant la fonction «lumière» de Matlab?
peaks(10)
light
Cela crée l'image suivante:
Y at-il un moyen d'obtenir la matrice indiquant intensité lumineuse sur les taches de surface pour la vue actuelle? Alternativement est-il un moyen d'obtenir simplement l'attribut FaceColor qui est appliqué aux patches individuels sur la surface (je suppose qu'en soustrayant cette FaceColor de la FaceColor non éclairée, nous pouvons obtenir l'intensité)?
Merci pour votre commentaire. Malheureusement, ce sont les données lumineuses que je veux (ou bien la couleur de visage efficace (pas le CData de l'objet surfacique) Il existe un moyen de trouver l'algorithme de Matlab pour l'ombrage plat (ou tout autre ombrage) est-ce simplement une sorte d'échelle scalaire où si les vecteurs sont tangentiels, la valeur est 1 et si les vecteurs sont perpendiculaires, la valeur est 0? – TSGM
J'ai regardé la documentation matlab de la propriété FaceColor. comme 'plat' et le FaceVertexCData est défini par sommet alors matlab choisira pour chaque face la couleur du premier sommet du visage.J'ai mis à jour ma réponse pour vous montrer comment obtenir la couleur du visage efficace – DontCareBear
Désolé, mais nous pourrions être confus: quand la lumière frappe la surface, le facecolor précédent du patch (appelez-le FaceColor1) sera changé en une couleur différente (appelez-le FaceColor2) .Ceci est ce que je appelle le «colo efficace» r ". D'après ce que je comprends de votre mise à jour, vous expliquiez comment FaceColor1 a été trouvé en interpolant les valeurs de vertex. Dit autrement. Est-il possible d'appeler un objet patch avec exactement la même couleur qu'un patch * lit * mais sans appeler la commande light? – TSGM