<<JLink`;
InstallJava[];
ReinstallJava[JVMArguments->"-Xmx2048m"];

SetDirectory[NotebookDirectory[]];

delkavozovky=1000;

a=20.;

b=3;

c=0.2;

Eh=5.;

Esc=1.;

Emin=1;

h=5.;

delta=0;

fm=0.6;

tokuprava=2.22;

presnost=0.2;

bc=b+c;

cr=((Cplane*Pi)/180);

deltar=((delta*Pi)/180);

epsilon=deltar+gama;

bodydelka=Piecewise[{{10,a≤30}},Ceiling[(a/3)]];

bodysirka=Piecewise[{{3,Ceiling[(b/1.5)]≤3}},Ceiling[(b/1.5)]];

Droz=(a/bodydelka);

d=(b/bodysirka);

souradnicex=Table[x,{x,Droz/2.,bodydelka*Droz,Droz}];

souradnicey=Table[y+c,{y,d/2.,bodysirka*d,d}];

souradnice=Tuples[{souradnicex,souradnicey}];

urastrfunkce[{x_,y_}]:=(Sqrt[(x^2)+(y^2)]);

epsilonfunkce[x_,y_]:=ArcTan[(x/y)];

u=h*Abs[Tan[epsilon]];

upol=(h-1.5)*Abs[Tan[epsilon]];

bodkolmice=Piecewise[{{u*Sin[cr],cr≤(Pi/2)}},u*Sin[Pi-cr]];

bodkolmicepol=Piecewise[{{upol*Sin[cr],cr≤(Pi/2)}},upol*Sin[Pi-cr]];

svetlokolmice=(Sqrt[(u^2)-(bodkolmice^2)]);

svetlokolmicepol=(Sqrt[(upol^2)-(bodkolmicepol^2)]);

druhesvetlokolmice=a-svetlokolmice;

druhesvetlokolmicepol=a-svetlokolmicepol;

spojniceverfunkce[x_,y_,z_]:=Table[x-y*souradnice[[i,z]],{i,1,bodydelka*bodysirka,1}]

bodkolmicerastrhor=spojniceverfunkce[0,-1,2];

druhesvetlokolmicerastrhor=spojniceverfunkce[a,1,1];

svetlokolmicerastrhor=spojniceverfunkce[0,-1,1];

crrastr=Table[ArcTan[((bodkolmicerastrhor[[i]])/(svetlokolmicerastrhor[[i]]))],{i,1,bodydelka*bodysirka,1}];

epsilonrastr=epsilonfunkce[urastrfunkce/@souradnice,h];

urastrpol=Table[Tan[epsilonrastr[[i]]]*(h-1.5),{i,1,bodydelka*bodysirka,1}];

bodkolmicerastrpol=Table[Sin[crrastr[[i]]]*urastrpol[[i]],{i,1,bodydelka*bodysirka,1}];

svetlokolmicerastrpol=Table[(Sqrt[((urastrpol[[i]])^2)-((bodkolmicerastrpol[[i]])^2)]),{i,1,bodydelka*bodysirka,1}];

druhesvetlokolmicerastrpol=Table[a-svetlokolmicerastrpol[[i]],{i,1,bodydelka*bodysirka,1}];

alfa=Piecewise[{{(Pi/2),svetlokolmicepol==0}},ArcTan[(bodkolmicepol/svetlokolmicepol)]];

dLkP=((h-1.5)/(Cos[epsilon]));

nvpravo=If[gama≥0,Count[Table[(Sqrt[((((Sqrt[(bodkolmice^2)+(((druhesvetlokolmice+i*a))^2)])))^2)+(h^2)]),{i,0,Floor[(delkavozovky/a)],1}],(x_/;x<5*h)&&(druhesvetlokolmice>0)]];

nvlevo=If[gama≥0,Count[Table[(Sqrt[((((Sqrt[(bodkolmice^2)+(((svetlokolmice+i*a))^2)])))^2)+(h^2)]),{i,1,Floor[(delkavozovky/a)],1}],(x_/;x<5*h)]];

nvpravopol=If[gama≥0,Count[Table[(Sqrt[((((Sqrt[(bodkolmicepol^2)+(((druhesvetlokolmicepol+i*a))^2)])))^2)+(((h-1.5))^2)]),{i,0,Floor[(delkavozovky/a)],1}],(x_/;x<5*h)&&(druhesvetlokolmicepol>0)]];

nvlevopol=If[gama≥0,Count[Table[(Sqrt[((((Sqrt[(bodkolmicepol^2)+(((svetlokolmicepol+i*a))^2)])))^2)+(((h-1.5))^2)]),{i,1,Floor[(delkavozovky/a)],1}],(x_/;x<5*h)]];

nvpravotabhor=Table[(Sqrt[((((Sqrt[((bodkolmicerastrhor[[i]])^2)+(((druhesvetlokolmicerastrhor[[i]]+j*a))^2)])))^2)+(h^2)]),{i,1,bodydelka*bodysirka,1},{j,0,Floor[(delkavozovky/a)],1}];

nvpravorastrhor=Table[Count[nvpravotabhor[[i,All]],x_/;x<5*h],{i,1,bodydelka*bodysirka,1}];

nvlevotabhor=Table[(Sqrt[((((Sqrt[((bodkolmicerastrhor[[i]])^2)+(((svetlokolmicerastrhor[[i]]+j*a))^2)])))^2)+(h^2)]),{i,1,bodydelka*bodysirka,1},{j,0,Floor[(delkavozovky/a)],1}];

nvlevorastrhor=Table[Count[nvlevotabhor[[i,All]],x_/;x<5*h],{i,1,bodydelka*bodysirka,1}];

nvpravotabpol=Table[(Sqrt[((((Sqrt[((bodkolmicerastrpol[[i]])^2)+(((druhesvetlokolmicerastrpol[[i]]+j*a))^2)])))^2)+(((h-1.5))^2)]),{i,1,bodydelka*bodysirka,1},{j,0,Floor[(delkavozovky/a)],1}];

nvpravorastrpol=Table[Count[nvpravotabpol[[i,All]],x_/;x<5*h],{i,1,bodydelka*bodysirka,1}];

nvlevotabpol=Table[(Sqrt[((((Sqrt[((bodkolmicerastrpol[[i]])^2)+(((svetlokolmicerastrpol[[i]]+j*a))^2)])))^2)+(((h-1.5))^2)]),{i,1,bodydelka*bodysirka,1},{j,0,Floor[(delkavozovky/a)],1}];

nvlevorastrpol=Table[Count[nvlevotabpol[[i,All]],x_/;x<5*h],{i,1,bodydelka*bodysirka,1}];

ubodyfunkce[x_,y_,z_,v_,w_]:=Table[(Sqrt[(x^2)+(((y+u*z))^2)]),{u,v,w,1}];

uvpravo=If[gama≥0,ubodyfunkce[bodkolmice,druhesvetlokolmice,a,0,nvpravo-1]];

uvlevo=If[gama≥0,ubodyfunkce[bodkolmice,svetlokolmice,a,1,nvlevo]];

uvpravorastrhor=Table[ubodyfunkce[bodkolmicerastrhor[[i]],druhesvetlokolmicerastrhor[[i]],a,0,nvpravorastrhor[[i]]-1],{i,1,bodydelka*bodysirka,1}];

uvlevorastrhor=Table[ubodyfunkce[bodkolmicerastrhor[[i]],svetlokolmicerastrhor[[i]],a,0,nvlevorastrhor[[i]]-1],{i,1,bodydelka*bodysirka,1}];

uvpravorastrpol=Table[ubodyfunkce[bodkolmicerastrpol[[i]],druhesvetlokolmicerastrpol[[i]],a,0,nvpravorastrpol[[i]]-1],{i,1,bodydelka*bodysirka,1}];

uvlevorastrpol=Table[ubodyfunkce[bodkolmicerastrpol[[i]],svetlokolmicerastrpol[[i]],a,0,nvlevorastrpol[[i]]-1],{i,1,bodydelka*bodysirka,1}];

uvpravopol=If[gama≥0,ubodyfunkce[bodkolmicepol,druhesvetlokolmicepol,a,0,nvpravopol-1]];

uvlevopol=If[gama≥0,ubodyfunkce[bodkolmicepol,svetlokolmicepol,a,1,nvlevopol]];

epsilonmat=If[gama≥0,epsilonfunkce[Join[Flatten[uvpravo],Flatten[uvlevo]],h]];

epsilonmatrastrhor=epsilonfunkce[Table[Join[uvpravorastrhor[[i]],uvlevorastrhor[[i]]],{i,1,bodydelka*bodysirka,1}],h];

epsilonmatrastrpol=epsilonfunkce[Table[Join[uvpravorastrpol[[i]],uvlevorastrpol[[i]]],{i,1,bodydelka*bodysirka,1}],h-1.5];

epsilonmatpol=If[gama≥0,epsilonfunkce[Join[Flatten[uvpravopol],Flatten[uvlevopol]],h-1.5]];

hvyzplochy=0.3;

dvyzplochy=0.1;

A=((Pi*(dvyzplochy^2))/4.)*Cos[((85.*Pi)/180.)]+hvyzplochy*dvyzplochy*Cos[((85.*Pi)/180.)];

Ay=23;

xd=2.75*Abs[h-1.5];

nlu=Count[Table[(Sqrt[((((Sqrt[((((b/2)+c))^2)+(((xd+i*a))^2)])))^2)+(((h-1.5))^2)]),{i,0,Floor[((500.-xd)/a)],1}],(x_/;x<5*h)];

alfafunkce[x_,y_,z_,u_]:=x-y*ArcSin[(z/u)];

dLkPfunkce[x_,y_]:=(Sqrt[(x^2)+(y^2)]);

alfamatprava=If[gama≥0,alfafunkce[0,-1,bodkolmicepol,uvpravopol]];

alfamatleva=If[gama≥0,alfafunkce[Pi,1,bodkolmicepol,uvlevopol]];

alfamat=If[gama≥0,Join[Flatten[alfamatprava],Flatten[alfamatleva]]];

alfarastrprava=Table[alfafunkce[0,-1,bodkolmicerastrpol[[i]],uvpravorastrpol[[i]]],{i,1,bodydelka*bodysirka,1}];

alfarastrleva=Table[alfafunkce[Pi,1,bodkolmicerastrpol[[i]],uvlevorastrpol[[i]]],{i,1,bodydelka*bodysirka,1}];

alfarastr=Table[Join[alfarastrprava[[i]],alfarastrleva[[i]]],{i,1,bodydelka*bodysirka,1}];

dLkPmat=If[gama≥0,dLkPfunkce[Join[Flatten[uvpravopol],Flatten[uvlevopol]],h-1.5]];

dLkPrastr=Table[dLkPfunkce[Join[uvpravorastrpol[[i]],uvlevorastrpol[[i]]],h-1.5],{i,1,bodydelka*bodysirka,1}];

ufTI=ubodyfunkce[c+1.5,xd,a,0,nlu-1];

epsilonfTI=epsilonfunkce[ufTI,h-1.5];

Quiet[alfafTI=alfafunkce[0,-1,c+1.5,ufTI]];

Quiet[dfTI=dLkPfunkce[ufTI,h-1.5]];

hranicniuhel1=ArcTan[(bc/a)];

hranicniuhel2=Pi-hranicniuhel1;

uhel=-8.86;

l=Piecewise[{{(a/(Cos[cr])),0≤cr≤hranicniuhel1},{(bc/(Sin[cr])),hranicniuhel1<cr<=(Pi/2)},{(bc/(Sin[Pi-cr])),(Pi/2)<cr≤hranicniuhel2},{(a/(Cos[Pi-cr])),hranicniuhel2<cr<=Pi}},0];

epsilonpol=ArcTan[(l/(h-1.5))];

identifikacnirovnice=Table[Eh≤(((Subscript[InezfTI, i])*fm*((Cos[epsilonfTI[[i]]])^3))/(h^2)),{i,1,nlu,1}];

nezapornarovnice=Table[(Subscript[Inez, i])≥0, {i,1,bodydelka*bodysirka,1}];

rovnomernosthor=0.9>Min[Table[(∑_(k=1)^(nvpravorastrhor[[m]]+nvlevorastrhor[[m]]))(((Subscript[Inez, m])*fm*((Cos[epsilonmatrastrhor[[m,k]]])^3))/(h^2)), {m,1,bodydelka*bodysirka,1}]]/Max[Table[(∑_(k=1)^(nvpravorastrhor[[m]]+nvlevorastrhor[[m]]))(((Subscript[Inez, m])*fm*((Cos[epsilonmatrastrhor[[m,k]]])^3))/(h^2)), {m,1,bodydelka*bodysirka,1}]]≥0.4;

rovnosti=Flatten[Table[If[i==j,Unevaluated@Sequence[],If[Sort[epsilonmatrastrhor[[i]]]==Sort[epsilonmatrastrhor[[j]]],(Subscript[Inez, i])==(Subscript[Inez, j]),Unevaluated@Sequence[]]], {i,1,bodydelka*bodysirka/2,1}, {j,1,bodydelka*bodysirka,1}]];

GI=Inez*(A^(-0.5))≤500;

GIrastr=If[MemberQ[epsilonrastr,85*(Pi/180)]==True,{(Subscript[Inez, Position[epsilonrastr,85*(Pi/180)]])*(A^(-0.5))≤500},{}];

Quiet[fTI=((∑_(p=1)^nlu)Piecewise[{{9.86*(1+((((Ay/66.4)))^4))*((((Subscript[InezfTI, p])*fm*Sin[epsilonfTI[[p]]]*(1+Cos[alfafTI[[p]]]))/((dfTI[[p]])^2))/(((ArcCos[((((p-1)*a+xd)*Cos[((uhel*Pi)/180)]+(h-1.5)*Sin[((uhel*Pi)/180)])/(Sqrt[((((p-1)*a+xd))^2)+(((c+(b/2)))^2)+(((h-1.5))^2)]))]*(180/Pi)))^2)),1.5*(Pi/180)<ArcCos[((((p-1)*a+xd)*Cos[((uhel*Pi)/180)]+(h-1.5)*Sin[((uhel*Pi)/180)])/(Sqrt[((((p-1)*a+xd))^2)+(((c+(b/2)))^2)+(((h-1.5))^2)]))]≤60*(Pi/180)},{((((Subscript[InezfTI, p])*fm*Sin[epsilonfTI[[p]]]*(1+Cos[alfafTI[[p]]]))/((dfTI[[p]])^2)))*((10/(((ArcCos[((((p-1)*a+xd)*Cos[((uhel*Pi)/180)]+(h-1.5)*Sin[-(Pi/180)])/(Sqrt[((((p-1)*a+xd))^2)+(((c+(b/2)))^2)+(((h-1.5))^2)]))]*(180/Pi)))^3))+(5/(((ArcCos[((((p-1)*a+xd)*Cos[((uhel*Pi)/180)]+(h-1.5)*Sin[((uhel*Pi)/180)])/(Sqrt[((((p-1)*a+xd))^2)+(((c+(b/2)))^2)+(((h-1.5))^2)]))]*(180/Pi)))^2))*(1+((((Ay/62.5)))^4))),0.1*(Pi/180)<ArcCos[((((p-1)*a+xd)*Cos[((uhel*Pi)/180)]+(h-1.5)*Sin[((uhel*Pi)/180)])/(Sqrt[((((p-1)*a+xd))^2)+(((c+(b/2)))^2)+(((h-1.5))^2)]))]≤1.5*(Pi/180)}},0])/((((0.2/Pi)*(((∑_(m=1)^(bodydelka*bodysirka))((∑_(k=1)^(nvpravorastrhor[[m]]+nvlevorastrhor[[m]]))(((Subscript[Inez, m])*0.9*((Cos[epsilonmatrastrhor[[m,k]]])^3))/(h^2))))/(bodydelka*bodysirka))))^1)≤30];

osvetlenostplochyhor=If[gama≥0,Piecewise[{{Eh≤(∑_(k=1)^nvpravo)((Inez*fm*((Cos[epsilonmat[[k]]])^3))/(h^2)),(Sqrt[(u^2)+(h^2)])>5*h}},Eh≤((∑_(k=1)^(nvpravo+nvlevo))((Inez*fm*((Cos[epsilonmat[[k]]])^3))/(h^2)))+((Inez*fm*((Cos[epsilon])^3))/(h^2))]];

osvetlenostplochypol=If[gama≥0,Piecewise[{{Esc≤(∑_(k=1)^(Count[uvpravopol,x_/;x>0]))((Inez*fm*Abs[Sin[epsilonmatpol[[k]]]]*(1+Cos[alfamat[[k]]]))/(Pi*((dLkPmat[[k]])^2))),(Sqrt[(upol^2)+(((h-1.5))^2)])>5*h}},Esc≤((∑_(k=1)^(nvpravopol+nvlevopol))((Inez*fm*Abs[Sin[epsilonmatpol[[k]]]]*(1+Cos[alfamat[[k]]]))/(Pi*((dLkPmat[[k]])^2))))+((Inez*fm*Abs[Sin[epsilon]]*(1+Cos[alfa]))/(Pi*(dLkP^2)))]];

minosvetlenost=If[gama≥0,Piecewise[{{Emin≤(∑_(k=1)^nvpravo)((Inez*fm*((Cos[epsilonmat[[k]]])^3))/(h^2)),(Sqrt[(u^2)+(h^2)])>5*h}},Emin≤((∑_(k=1)^(nvpravo+nvlevo))((Inez*fm*((Cos[epsilonmat[[k]]])^3))/(h^2)))+((Inez*fm*((Cos[epsilon])^3))/(h^2))]];

prumosvetlenost=Eh≤(((∑_(m=1)^(bodydelka*bodysirka))((∑_(k=1)^(nvpravorastrhor[[m]]+nvlevorastrhor[[m]]))(((Subscript[Inez, m])*fm*((Cos[epsilonmatrastrhor[[m,k]]])^3))/(h^2))))/(bodydelka*bodysirka))≤1.5*Eh;

minosvetlenosthor=Table[Emin≤(∑_(k=1)^(nvpravorastrhor[[m]]+nvlevorastrhor[[m]]))(((Subscript[Inez, m])*fm*((Cos[epsilonmatrastrhor[[m,k]]])^3))/(h^2)),{m,1,bodydelka*bodysirka,1}];

minosvetlenostpol=Table[Esc≤(∑_(k=1)^(nvpravorastrpol[[m]]+nvlevorastrpol[[m]]))(((Subscript[Inez, m])*fm*Sin[epsilonmatrastrpol[[m,k]]]*(1+Cos[alfarastr[[m,k]]]))/(Pi*((dLkPrastr[[m,k]])^2))),{m,1,bodydelka*bodysirka,1}];

rovnicerastr=Join[minosvetlenosthor,{prumosvetlenost},minosvetlenostpol,{fTI},identifikacnirovnice,nezapornarovnice,{rovnomernosthor},rovnosti,GIrastr];

resenirastr=FindInstance[rovnicerastr,Join[Table[(Subscript[Inez, m]),{m,1,bodydelka*bodysirka,1}],Table[(Subscript[InezfTI, m]),{m,1,nlu,1}]]];

fTIzbytek=Min[Table[(Subscript[InezfTI, i-bodydelka*bodysirka])/.(resenirastr[[1,i]]),{i,bodydelka*bodysirka+1,bodydelka*bodysirka+nlu,1}]];

vysledkyrastr=Table[{svetlokolmicerastrhor[[i]],bodkolmicerastrhor[[i]],(Subscript[Inez, i])/.(resenirastr[[1,i]])},{i,1,bodydelka*bodysirka,1}];

fTIzbytekrovnice=If[gama≥0,Inez≤fTIzbytek];

rovnicezbytek=If[gama≥0,Piecewise[{{{osvetlenostplochypol,osvetlenostplochyhor,GI},epsilon==85*(Pi/180)}},{osvetlenostplochypol,osvetlenostplochyhor,fTIzbytekrovnice}]];

resenipol=If[gama≥0,Inez/.FindInstance[osvetlenostplochypol,Inez,Reals]];

resenizbytek=If[gama≥0,Inez/.FindInstance[rovnicezbytek,Inez,Reals]];

fce=If[gama≥0,Piecewise[{{{0},(epsilonpol<epsilon)||(bodkolmice<c)||(Cplane>180)},{resenipol,ArcTan[(l/h)]<epsilon≤epsilonpol},{{vysledkyrastr[[Position[vysledkyrastr,{x_,y_,z_}/;(Abs[x-svetlokolmice]≤presnost)&&(Abs[y-bodkolmice]≤presnost)][[1,1]],3]]},(MemberQ[vysledkyrastr,{x_,y_,z_}/;(Abs[x-svetlokolmice]≤presnost)&&(Abs[y-bodkolmice]≤presnost)])==True}},resenizbytek]];

roviny=Table[o,{o,0,180,0.5}];

stupne=Prepend[Table[p,{p,0,90,0.5}],""];

svitivosti=Table[fce[[1]]*tokuprava,{gama,0,Pi/2,((0.5*Pi)/180)},{Cplane,0,180,0.5}];

data=N[MapThread[Prepend,{Prepend[svitivosti,roviny],stupne}]];

Export["osvetlenost.xlsx",data,"XLSX"];