program tasand_sirge (*Programm arvutab sirge ja tasandi vahelise nurga ja leiab l6ikepunkti.*); var s1,s2,s3,x1,y1,z1,a,b,c,d:real; vektorid,punkt,nurk:real; det,Dx,Dy,Dz,x,y,z,koosinus:real; begin writeln('Programm arvutab sirge ja tasandi vahelise nurga ja leiab l6ikepunkti.'); writeln ('Olgu sirge antud sihivektori ja punktiga ning tasand ldv6rrandiga.'); writeln ('Sisesta k6igepealt sirge sihivektori koordinaadid.'); write ('S1=');read (s1); write ('S2=');read (s2); write ('S3=');read (s3); writeln ('Nd sisesta sirgele kuuluva punkti koordinaadid.'); write ('X1=');read (x1); write ('Y1=');read (y1); write ('Z1=');read (z1); writeln ('L6puks jb veel sisestada tasandi v6rrandi kordajad.'); write ('A=');read (a); write ('B=');read (b); write ('C=');read (c); write ('D=');readln (d); vektorid:=s1*a+s2*b+s3*c; punkt:=a*x1+b*y1+c*z1+d; if vektorid=0 then begin if punkt=0 then writeln ('See sirge asub tasandil.') else writeln ('See sirge on paralleelne tasandiga.') end else begin koosinus:=(abs(a*s1+b*s2+c*s3))/(sqrt((a*a+b*b+c*c)*(s1*s1+s2*s2+s3*s3))); nurk:=arctan(sqrt(1/sqr(koosinus)-1)); det:=s1*s1*a+s1*s3*c+s1*s2*b; dx:=-sqr(s1)*d+s1*c*(s3*x1-s1*z1)+s1*b*(s2*x1-s1*y1); dy:=s2*c*(s3*x1-s1*z1)-s1*a*(s2*x1-s1*y1)+s3*c*(s1*y1-s2*x1)-s1*d*s2; dz:=s3*b*(s2*x1-s1*y1)-s1*a*(s3*x1+s1*z1)-s1*s3*d-s2*b*(s3*x1-s1*z1); x:=dx/det; y:=dy/det; z:=dz/det; writeln ('Sirge ja tasandi vaheline nurk on ',nurk:3:2,' radiaani'); writeln ('ja nende l6ikepunkti koordinaadid on ',x:3:2,', ',y:3:2,', ',z:3:2,'.'); end; end.