[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Help for loop while and Operators
From: |
Julien563 |
Subject: |
Re: Help for loop while and Operators |
Date: |
Sat, 19 Nov 2016 03:22:39 -0800 (PST) |
Thx Siko056 :)
So yes i have two endwhile but i didn't copythem. My bad... I send you all
my code. Just the % Détermination du rayon d'Einstein: has a problem.
A=imread('galaxy2.jpg');
tStart=tic;
% Les Constantes
G= 6.67e-11; %Attention! Revoir les unités
c=3.0e+8 ;
M= 1.e+40; %Masse de la masse déflectrice
z1= 2.72e+22; %Distance de la masse par rapport à la Terre %Distance de la
galaxie par rapport à la Terre
z2=2.72e+22;%Distance de la galaxie par rapport à la masse
L=(4.*(G).*(M))./((c).^2);
% Liste des Variables
[nr,nc,channels]= size([A]);
pixel_x1=(nc/2);%Coordonnées de la masse
pixel_y1=(nr/2);
pixel_x_metres=1e+16;
pixel_y_metres=1e+16;
pixel_x1_metres=(pixel_x_metres.*z1)./(z1+z2);
pixel_y1_metres=(pixel_y_metres.*z1)./(z1+z2);
R= (sqrt((pixel_x1_metres).^2+(pixel_y1_metres).^2)); %Rayon de la masse
déflectrice (exemple de trou noir = 1 pixel)
longueur = max(nr,nc) %longueur de l'image en pixel
largeur = min(nr,nc) %largeur de l'image en pixel
%Lentille gravitationnelle
B=A;
for
pixel_x_metres=(-ceil(pixel_x1).*(1e+16):(1e+16):floor(pixel_x1).*(1e+16));%
Boucle OK
for
pixel_y_metres=(-ceil(pixel_y1).*(1e+16):(1e+16):floor(pixel_y1).*(1e+16));
%Boucle OK
pixel_x1_metres_boucle=(pixel_x_metres.*z1)./(z1+z2);
pixel_y1_metres_boucle=(pixel_y_metres.*z1)./(z1+z2);
Ralpha =
sqrt((pixel_x1_metres_boucle).^2+(pixel_y1_metres_boucle).^2); %
A revoir
if Ralpha<R; %Condition OK
j=round((pixel_x_metres)./(1e+16))+(floor(pixel_y1))+1;
%OK
i=round((pixel_y_metres)./(1e+16))+(floor(pixel_x1))+1;
%OK
if ((i >=1) && (i <= nr) && (j >= 1) && (j <= nc));
B(i,j,:)= 1; % pixel noir OK
endif
else;
nouveau_pixel_x_metres=pixel_x1_metres_boucle+z2.*((pixel_x1_metres_boucle./z1)-(L./Ralpha).*(pixel_x1_metres_boucle./Ralpha));
%OK
nouveau_pixel_y_metres=pixel_y1_metres_boucle+z2.*((pixel_y1_metres_boucle./z1)-(L./Ralpha).*(pixel_y1_metres_boucle./Ralpha));
%OK
j_nouveau=round((nouveau_pixel_x_metres)./((1e+16)))+(floor(pixel_x1))+1;
%OK
i_nouveau=round((nouveau_pixel_y_metres)./((1e+16)))+(floor(pixel_y1))+1;
%OK
j=round((pixel_x_metres)./(1e+16))+(floor(pixel_x1))+1;
% OK
i=round((pixel_y_metres)./(1e+16))+(floor(pixel_y1))+1;
% OK
if ((i_nouveau >=1) && (i_nouveau <= nr) && (j_nouveau
>= 1) &&
(j_nouveau <= nc)) ;
if ((i >=1) && (i <= nr) && (j >= 1) && (j <=
nc));
B(i,j,:) = A(i_nouveau,j_nouveau,:);
endif
else
B(i,j,:)=1;
endif
endif
endfor
endfor
imshow(B)
imwrite (B, "deformation_somb.jpg");
tElapsed=toc(tStart)
% Détermination du rayon d'Einstein:
%B=imread("deformation_galaxie2.jpg");
xc=pixel_x1
yc=pixel_y1
j=nr-yc
i=xc
k=0
i_nouveau_d=i
i_nouveau_g=i
j_nouveau_h=j
j_nouveau_b=j
while ((B(i_nouveau_d,j,:) && B(i_nouveau_g,j,:)) && (B(i,j_nouveau_h,:) &&
B(i,j_nouveau_b,:)) != 1)
while (B(i_nouveau_d,j,:)!= B(i_nouveau_g,j,:)) && (B(i,j_nouveau_h,:)!=
B(i,j_nouveau_b,:)) | i_nouveau_d!=nc | i_nouveau_g!=0 | j_nouveau_h!=0 |
j_nouveau_b!=nr
k=k+1
i_nouveau_d = i_nouveau_d+k
i_nouveau_g = i_nouveau_g-k
j_nouveau_h = j_nouveau_h+k
j_nouveau_b = j_nouveau_b-k
endwhile
endwhile
disp(i_nouveau_d)
disp(i_nouveau_g)
disp(j_nouveau_b)
disp(j_nouveau_h)
--
View this message in context:
http://octave.1599824.n4.nabble.com/Help-for-loop-while-and-Operators-tp4680666p4680673.html
Sent from the Octave - General mailing list archive at Nabble.com.