1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
| clear all
clc;
%% LECTURA DE LOS DATOS
%Leyendo los nodos con sus respectivas coordenadas
% fich=fopen('jano1.1.node'); % 128 elementos
fich=fopen('malla1.node');
nnum=fscanf(fich,'%i',3);
Nnodos=nnum(1);
datoscompletos=fscanf(fich,'%f',[5,Nnodos]);
datoscompletos=datoscompletos';
fclose(fich);
coordinate=[datoscompletos(:,2) datoscompletos(:,3)];
X=coordinate(:,1);
Y=coordinate(:,2);
Z=datoscompletos(:,4);
tri=delaunay(X,Y);
element=tri;
trisurf(tri,X,Y,Z)
for j=16 %1:1%size(element,1)
% syms x y;
% cp=[x y];
x1=coordinate(element(j,1),1);y1=coordinate(element(j,1),2);z1=Z(element(j,1));
x2=coordinate(element(j,2),1);y2=coordinate(element(j,2),2);z2=Z(element(j,2));
x3=coordinate(element(j,3),1);y3=coordinate(element(j,3),2);z3=Z(element(j,3));
%x=coordinate
cl=coordinate(element(j,1),: );
cm=coordinate(element(j,2),: );
cn=coordinate(element(j,3),: );
v0 = cn - cl;
v1 = cm - cl;
%v2 = cp - cl; % variable
dot00 = dot(v0, v0);
dot01 = dot(v0, v1);
%dot02 = dot(v0, v2);
dot11 = dot(v1, v1);
%dot12 = dot(v1, v2); % variable
K = 1 / (dot00 * dot11 - dot01 * dot01);
a= [(dot(v1,v1)*(x3-x1)- dot(v0,v1)*(x2-x1))/K];
b= [(dot(v1,v1)*(y3-y1)- dot(v0,v1)*(y2-y1))/K];
c= [(dot(v0,v0)*(x2-x1)- dot(v0,v1)*(x2-x1))/K];
f= [(dot(v0,v0)*(y2-y1)- dot(v0,v1)*(y2-y1))/K];
c1=(x1^2-x1*x3)+(y1^2-y1*y3);
c2=(x1^2-x1*x2)+(y1^2-y1*y2);
D1= ((dot(v1,v1)*c1-dot(v0,v1)*c2))/K;
D2= ((dot(v0,v0)*c2-dot(v0,v1)*c1))/K;
% plano ax+by+cz+d
Pa=(y2-y1)*(z3-z1)-(z2-z1)*(y3-y1);
Pb=-(x2-x1)*(z3-z1)-(z2-z1)*(x3-x1);
Pc=(x2-x1)*(y2-y1)-(y2-y1)*(x3-x1);
Pd=-(Pa*x1+Pb*y1+Pc*z1);
pp1=Pa/Pc;
pp2=Pb/Pc;
pp3=Pd/Pc;
AA=[a , b ;
c , f ;
-(a+c), -(b+f) ];
BB=[-D1;
-D2;
(D1+D2)-1];
options=optimset('MaxFunEvals',500)
partida= [x1;y1];
[x,fval,flag,output]=fmincon(@(x)-dot(x,[pp1pp2])-pp3,partida,AA,BB,[],[],[],[],[],options)
end |
Partager