мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
tasks:snezhinka [16/11/2016 02:28] – создано ybezrukov | tasks:snezhinka [16/11/2016 08:53] (текущий) – ybezrukov | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Часть первая ====== | ====== Часть первая ====== | ||
- | Требуется нарисовать шесть линий под углом $60^\circ$ друг с другом. Для облегчения расчетов перейдем в полярную систему координат (так как в ней естественным образом делается поворот). В полярной системе координата точки задается так же двумя числами, | + | Требуется нарисовать шесть линий под углом $60^\circ$ друг с другом. Для облегчения расчетов перейдем в полярную систему координат (так как в ней естественным образом делается поворот). В полярной системе координата точки задается так же двумя числами, |
{{: | {{: | ||
Строка 24: | Строка 24: | ||
+ | С использованием полярных координат поворот линии выполняется с помощью следующего алгоритма: | ||
+ | - Перевести координаты конца линии из декартовых в полярные полярные | ||
+ | - Компоненте к углу $\phi$ добавить $60^\circ$. | ||
+ | - Перевести координаты конца обратно из полярных в декартовые | ||
+ | - Нарисовать линию на экран | ||
+ | |||
+ | |||
+ | <code pascal> | ||
+ | |||
+ | users oglgraph, crt, math; | ||
+ | |||
+ | type point = record | ||
+ | x, | ||
+ | end; | ||
+ | |||
+ | var | ||
+ | gd, gm: smallint; | ||
+ | p_nach: | ||
+ | p_konech: | ||
+ | x_centr, y_centr: | ||
+ | |||
+ | function dec2pol(p: | ||
+ | begin | ||
+ | dec2pol.x = p.x; | ||
+ | dec2pol.y = p.y; | ||
+ | dec2pol.r = sqrt(sqr(p.x) + sqr(p.y)); | ||
+ | dec2pol.phi = arccos(p.x/ | ||
+ | end; | ||
+ | |||
+ | function pol2dec(x: | ||
+ | begin | ||
+ | // | ||
+ | end; | ||
+ | |||
+ | begin | ||
+ | gd := Detect; | ||
+ | gm := DetectMode; | ||
+ | initgraph(gd, | ||
+ | | ||
+ | x_centr := getmaxx div 2; // найдем центр снежинки | ||
+ | y_centr := getmaxy div 2; | ||
+ | | ||
+ | p_nach.x := 0; // зададим координаты центра снежинки | ||
+ | p_nach.y := 0; | ||
+ | | ||
+ | p_konech.x := 0; // и конца ее первого луча, пусть он будет вертикальный | ||
+ | p_konech.y := 200; | ||
+ | | ||
+ | line(round(p_nach.x) + x_centr, round(p_nach.y) + y_centr, round(p_konech.x) + x_centr, round(p_konech.y) + y_centr); // нарисуем первую линию снежинки | ||
+ | | ||
+ | for i := 1 to 5 do | ||
+ | begin | ||
+ | // реализовать самостоятельно отрисовку остальных линий снежинки | ||
+ | end; | ||
+ | repeat until graphkeypressed; | ||
+ | closegraph; | ||
+ | end. | ||
+ | </ |