help-octave
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]