Курсовая работа: Построение трехмерной модели вазы
v1[polygons[i].b].z*(v1[polygons[i].c].x-v1[polygons[i].a].x)+
v1[polygons[i].c].z*(v1[polygons[i].a].x-v1[polygons[i].b].x);
n[i].z:=v1[polygons[i].a].x*(v1[polygons[i].b].y-v1[polygons[i].c].y)+
v1[polygons[i].b].x*(v1[polygons[i].c].y-v1[polygons[i].a].y)+
v1[polygons[i].c].x*(v1[polygons[i].a].y-v1[polygons[i].b].y);
if (sqrt(sqr(n[i].x)+sqr(n[i].y)+sqr(n[i].z)))<>0 then
n[i].z:=n[i].z/(sqrt(sqr(n[i].x)+sqr(n[i].y)+sqr(n[i].z)))
else n[i].z:=0;
end;
end;
procedure Draw;
var
j,i1,i:integer;
f: real;
begin
Sort;
f:=0;
buf.Canvas.Draw(0,0,blinc_buf); //рисуемвосновномбуферефон
for i1:=1 to nPOLYGON do
begin
//Опред.невидимости грани (слегка затеняем внутреннюю поверхность)
if (n[i1].z>0) then n[i1].z:=n[i1].z*0.60;
end;
for i1:=1 to nPOLYGON do
begin
for i := 1 to nPOLYGON do
if s[i]>f then begin j:=i;f:=s[i];end;
with polygons[j] do
begin