(yt-y [1])/(float) (y [0] - y [1]); (a gt;=0 amp; amp; a lt;=1). Insert (0, (int) (a * x [0] + (1-a) * x [1]));
} (y [0]!=y [2])
{= (float) (yt - y [2])/(float) (y [0] - y [2]); (a gt;=0 amp; amp; a lt;=1). Insert (0, (int) (a * x [0] + (1 - a) * x [2]));
} (y [1]!=y [2])
{= (float) (yt - y [2])/(float) (y [1] - y [2]); (a gt;=0 amp; amp; a lt;=1). Insert (0, (int) (a * x [1] + (1 - a) * x [2]));
} (mas. Count == 3). DrawLine (myPen, (int) mas [1], yt, (int) mas [2], yt) ;. DrawLine (myPen, (int) mas [0], yt, (int) mas [1], yt);
}
}
}
}
Форма: System; System. Collections. Generic; System. ComponentModel; System. Data; System. Drawing; System. Linq; System. Text; System. Windows. Forms; WindowsFormsApplication1
{partial class Form1: Form
{Form1 ()
{();
} [] xv={0, 0, 30, 30, 15, 15}; [] yv={0, - 30, - 30, 0, - 15, - 15}; [] zv={0 , 0, 0, 0, 30, - 30}; [] xpl=new double [6]; [] ypl=new double [6]; [] xfrm=new int [6]; [] yfrm=new int [ 6]; [,] gran=new int [8, 3]; u1x, u1y, u1z, u2x, u2y, u2z, u3x, u3y, u3z; rx, ry, rz, ax, ay, az, sx, sy, sz; r1, r2, a, b, c, d, fd, rd, gx, gy, gz; void Form1_Load (object sender, EventArgs e)
{= 15; ay=- 15; az=0;=20;=90; sy=- 60; sz=50;=100; gy=30; gz=20;=35; x=ax - gx; u3y=ay - gy; u3z=az - gz; m=Math. Sqrt (u3x * u3x + u3y * u3y + u3z * u3z); x=u3x/m; u3y=u3y/m; u3z=u3z/m; x=u3y; u1y=- u3x; u1z=0;=Math. Sqrt (u1x * u1x + u1y * u1y + u1z * u1z); x=u1x/m; u1y=u1y/m; u1z=u1z/m; x=- u3y * u1z + u1y * u3z; y=- u1x * u3z + u3x * u1z; z=- u3x * u1y + u1x * u3y;=Math. Sqrt (u2x * u2x + u2y * u2y + u2z * u2z); x=u2x/m; u2y=u2y/m; u2z=u2z/m;=gx + u3x * fd;=gy + u3y * fd;=gz + u3z * fd;=Math. Sqrt (Math. Pow (rx-ax, 2) + Math. Pow (ry-ay, 2) + Math. Pow (rz-az, 2));=r1 * fd/(rd + fd); [0, 0]=1; gran [0, 1]=4; gran [0, 2]=0; [1, 0]=1; gran [1, 1]=2; gran [1, 2]=4; [2, 0]=2; gran [2, 1]=3; gran [2, 2]=4; [3, 0]=3; gran [3, 1]=0; gran [3, 2]=4; [4, 0]=5; gran [4, 1]=1; gran [4, 2]=0; [5, 0]=1; gran [5, 1] ??= 5; gran [5, 2]=2; [6, 0]=5; gran [6, 1]=3; gran [6, 2]=2; [7, 0]=5; gran [7, 1]=0; gran [7, 2]=3; (int i=0; i lt; 6; i ++)
{[i]=px (xv [i], yv [i], zv [i]); [i]=py (xv [i], yv [i], zv [i]);
} ();
} double px (double x, double y, double z)
{sc1=((x - rx) * u1x + (y - ry) * u1y + (z - rz) * u1z); sc2=((x - rx) * u3x + (y - ry) * u3y + (z - rz) * u3z); fd * sc1/(sc2 + fd);
} double py (double x, double y, double z)
{sc1=((x - rx) * u2x + (y - ry) * u2y + (z - rz) * u2z); sc2=((x - rx) * u3x + (y - ry) * u3y + (z - rz) * u3z); fd * sc1/(sc2 + fd);
} void Ini ()
{wp, hp; (ClientSize. Width gt;=ClientSize. Height)
{= 2 * r2 * ClientSize. Width/ClientSize. Height;=2 * r2;
}
{= 2 * r2;=2 * r2 * ClientSize. Height/ClientSize. Width;
}=ClientSize. Width/wp;=ClientSize. Width/2;=- ClientSize. Height/hp;=ClientSize. Height/2;
} int fx (double x)
{(int) (a * x + b);
} int fy (double y)
{(int) (c * y + d);
} override void OnPaint (PaintEventArgs e)
{. OnPaint (e); g=e. Graphics ;. Clear (Color. White); (int i=0; i lt; xv. Length; i ++)
{[i]=fx (xpl [i]); [i]=fy (ypl [i]);
} bx, by, bz, cx, cy, cz, nx, ny, nz; [] rgb=new int [3]; cosfi; [] x=new int [3]; [] y=new int [3]; myFill=new FillTriangle (); (int i=0; i lt; 8; i ++)
{= xv [gran [i, 1]] - xv [gran [i, 0]];=yv [gran [i, 1]] - yv [gran [i, 0]];=zv [gran [i, 1]] - zv [gran [i, 0]];=xv [gran [i, 2]] - xv [gran [i, 0]];=yv [gran [i, 2]] - yv [gran [i, 0]];=zv [gran [i, 2]] - zv [gran [i, 0]];=by * cz - bz * cy;=bz * cx - bx * cz;=bx * cy - by * cx;=(xv [gran [i, 0]] + xv [gran [i, 1]] + xv [gran [i, 2]])/3;=(yv [gran [i, 0]] + yv [gran [i, 1]] + yv [gran [i, 2]])/3;=(zv [gran [i, 0]] + zv [gran [i, 1]] + zv [gran [i, 2]])/3;=bx - gx; cy=by - gy; cz=bz - gz; (nx * cx + ny * cy + nz * cz lt; 0)
{= bx - sx; cy=by - sy; cz=bz - sz;=(nx * cx + ny * cy + nz * cz)/(Math. Sqrt (nx * nx + ny * ny + nz * nz) * (Math. Sqrt (cx * cx + cy * cy + cz * cz))); [0]=(int) (- 255 * cosfi/2 + 255/2);// red [1]=rgb [0];// green [2]=rgb [0];// blue [0]=xfrm [gran [i, 0]]; y [0]=yfrm [gran [i, 0]]; [1]=xfrm [gran [i, 1]]; y [1]=yfrm [gran [i, 1]]; [2]=xfrm [gran [i, 2]]; y [2]=yfrm [gran [i, 2]] ;. Fill (g, x, y, rgb);
}
}
} void Form1_Resize (object sender, EventArgs e)
{(); ();
}
}
}
Малюнок 5.1 Реалізація програми, яка будує на екрані зображення опуклого тривимірного тіла при центральній проекції
Висновок
У роботі були вивчені деякі розділи інтерактивної графіки засобами C # за допомогою прикладі...