{
factor=0.0174633;
int i;
float r_half, r_double, phi;
if (r<4) return; //r>=5
moveto(x0+r,y0); //Переход на начальную точку вывода звезды
//вывод круга
circle(x0,y0,r)
r_half=0.5*r; r_double=2.*r;//Вычисление параметров для рекурсивного вызова
//Цикл вывода окружающих кругов
for(i=0;i<4;i++)
{
phi=(36+72*i)*factor;
krug(x0+r_double*cos(phi),y0+r_double*sin(phi),r_half);
}
}
main()
{
//Инициализацияграфическогорежима:
int graphdriver= DETECT, graphmode, n=100;
initgraph(&graphdriver,&graphmode,"C:\\BC\\BGI");
krug(getmaxx()/2,getmaxy()/2,getmaxy()/7); //Запускпостроения
getch(); //Ожидание нажатия любой клавиши
closegraph (); //Выход из графического режима
}
Задача № 16. Пусть даны координаты точки S(4, 5, 2), плоскость P, которая задаётся векторами u1 = (0, 1, 0), u2 = (0, 0, 1) и r0 = (1, 1, 1). Найти координаты (x′, y′) параллельной проекции точки S на плоскость P в направлении вектора u = (1, 0.2, 0.3).
r=S, r-r0=(3,4,1)
(U1,U2,U)=1
x’=(r-r0,U2,U)=3.4
y’=(r-r0,U1,U)=-0.1
Задача № 17. Пусть даны координаты точки S(2, 3, 4), плоскость P, которая задаётся векторами u1 = (0, 1, 0), u2 = (0, 0, 1) и r0 = (1, 1, 1). Найти координаты (x′, y′) параллельной проекции точки S на плоскость P в направлении вектора u = (1, 0.5, 0.8).
r-r0=(1,2,3)
(U1,U2,U)=1
x’=(r-r0,U2,U)=1.5
y’=(r-r0,U1,U)=-2.2
Задача № 18. Разработать программу, которая выводит на экран замкнутый многоугольник и заполняет его буквами «С» размером 8x8 пикселов.
char pattern[]=
{
0x1C, // 00011100
0x22, // 00100010
0x41, // 01000001
0x40, // 01000000
0x40, // 01000000
0x22, // 00100010
0x1C, // 00011100
0x0 // 00000000
};
#include <graphics.h>
#include <conio.h>
#include <stdlib.h>
// Шаблон буквы О
char pattern[]=
{
0x1C, // 00011100
0x22, // 00100010
0x41, // 01000001
0x41, // 01000001
0x41, // 01000001
0x22, // 00100010
0x1C, // 00011100
0x0 // 00000000
};
// Координаты вершин многоугольника
int poly[]=
{
30, 10,
50, 0,
200, 100,
100, 150,
50, 30,
};
void main()
{
// Инициализация графики
int gdriver=DETECT, gmode;
initgraph(&gdriver, &gmode, "");
// Установка палитры закраски
setfillpattern(pattern, WHITE);
// Вывод закрашенного многоугольника
fillpoly(sizeof(poly)/(sizeof(int)*2), poly);
getch(); // Ожидание нажатия клавиши
closegraph(); // Выход из графического режима
}
Задача №19. Пусть заданы координаты точки (1, 2, 3), единичный вектор и угол φ=900. Найти координаты (x′, y′, z′) точки после поворота ее на угол φ вокруг вектора u.
UUT=
E- UUT=
cos φ(E- UUT)=0* E- UUT=0
sin φ=1
r'=A*r
A=UUT+cos φ(E- UUT)+sin φ
A=+0+1*=
(x′, y′, z′)=*=
Задача № 20. Пусть задан отрезок с экранными координатами ((0, 0), (5, 3)). Рассмотреть на примере вывода этого отрезка алгоритм простого ЦДА и указать последовательность точек, которые будут сгенерированы этим алгоритмом.
x0=0, y0=0, x1=5, y1=3
|5-0|>|3-0|
l=|x1-x0|=|5-0|=5
dx=(x1-x0)/l=5/5=1, dy=(y1-y0)/l=3/5
ex=1, ey=1
rez=0.5
1. (0,0)
rez=0.5+3/5=1.1, x=0+1*1=1, y=0+1*1=1, rez=1.1-1=0.1 (1,1)
2. x=1+1*1=2, rez=0.1+3/5=0.7 (2,1)
3. x=2+1*1=3, rez=0.7+3/5=1.3, y=1+1*1=2, rez=1.3-1=0.3 (3,2)
4. x=3+1*1=4, rez=0.3+3/5=0.9 (4,2)
5. x=4+1*1=5, rez=0.9+3/5=1.5, y=2+1*1=3, rez=1.5-1=0.5 (5,3)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.