Hi Maxime,
I understand that you converted a python code to MATLAB code using ChatGPT and facing an issue in displaying the surface.
The issue is because of parsing x,y as a function of r and phi to the isonormals function. You won’t be facing an issue if you parse cartesian co-ordinates.
Attaching code for reference:
clear all; close all
clc;
% Définir les longueurs de chaque axe
a = 1;
b = 1;
c = 1;
res = 50;
% Créer les grilles pour les variables x, y, z
[X,Y,Z] = meshgrid(linspace(0,a,res),linspace(0,b,res),linspace(0,c,res));
% Définir le nombre de points de résolution pour l'isosurface
% Calculer les coefficients k pour les trois axes
kx = 2*pi/a;
ky = 2*pi/b;
kz = 2*pi/c;
% Stocker les valeurs de x, y et z dans des variables auxiliaires
r_aux = X;
phi = Y;
Z = Z;
% Définir les constantes r1 et r2
r1 = 0.5;
r2 = 2;
% Calculer les valeurs de r en fonction de r_aux
r = r2/a.*r_aux + r1/a.*(1-r_aux);
% Calculer les valeurs de la fonction fun_values
fun_values = cos(kx.*r_aux).*sin(ky.*phi.*12) + cos(ky.*phi.*12).*sin(kz.*Z) + cos(kz.*Z).*sin(kx.*r_aux);
% Calculer les valeurs de x et y en fonction de r et phi
x = r.*cos(phi.*ky);
y = r.*sin(phi.*ky);
% Tracer l'isosurface en utilisant les valeurs de x, y, z et fun_values
p = patch(isosurface(x,y,Z,fun_values,0));
isonormals(X,Y,Z,fun_values,p);
% Définir la couleur de la surface et désactiver les bords
set(p,'FaceColor','red','EdgeColor','none');
% Ajuster la vue et la lumière
view(3); axis tight
camlight
lighting gouraud
I hope this helps