|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Sergiy Kanilo 2:5020/400 19 Apr 2003 02:45:53 To : Andrew Aksyonoff Subject : Re: Задача о параболическом гиперболоиде -------------------------------------------------------------------------------- "Andrew Aksyonoff" <Andrew.Aksyonoff@p286.f3.n5025.z2.fidonet.org> wrote in message news:1050686835@p286.f3.n5025.z2.ftn... > ты вспомни оригинальную задачу. паскаль итп. > явно студенческая. как следствие - отсортить фаски > и выплюнуть, и сойдет. ;) так для прямоугольной равномерной сетки (студент за сложностью ведь гоняться не будет) сортировка не нужна :), достаточно начать рисовать с дальнего угла сетки и по рядам, каждая яеечка - два треугольничка, один от дальней точки ячеечки, другой от ближней примерно так // направляющие вектора осей struct V { double x,y,z; } X, Y, Z; // x,y - экранные координаты, z-глубина // размеры сетки int const N =20; int const L =N-1; // структура параметров обхода (от каждого из 4-x углов) struct order { int starti, startj; int stepi, stepj; } orders[4] = { { 0,0,1,1 }, { L,0,-1,1 }, { 0,L,1,-1 }, { L,L,-1,-1 } }; и далее в программе, когда известны направляющие вектора // выбор параметров обхода (два сравнения) order const& q =orders[(X.z<0)+2*(Y.z<0)]; for(int i=q.starti,ii=0; ii<L; ++ii,i+=q.stepi) for(int j=q.startj,jj=0; jj<L; ++jj,j+=q.stepj){ int ip =i+q.stepi; int jp =j+q.stepj; // point(i,j) экранные координаты точки функции в i,j drawTriangle( point(i,j), point(ip,j), point(i,jp) ); drawTriangle( point(ip,j), point(i,jp), point(ip,jp) ); } Cheers, Serge --- ifmail v.2.15dev4 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/11732095941f0.html, оценка из 5, голосов 10
|