Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 07.07.2017
Сообщений: 11
1

Нарисовать трапецию, после чего нарисовать ее зеркальную копию (относительно диагонали 1го квадранта) и уменьшить

02.12.2017, 01:58. Показов 933. Ответов 1
Метки нет (Все метки)

Собственно сделал так, только пока что без уменьшения, отзеркаленную копию рисует только 1 линию, не могу понять в чем проблема. Уменьшить нужно в 2 раза. Помогите, пожалуйста.





Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
uses graphABC;
var x,y,h,d,l1,l2,xt,yt:integer;
    p:array of Point;
    a,mx:real;
begin
x:=window.Center.X;
y:=window.Center.Y;
line(0,y,2*x,y);
line(x,0,x,2*y);
textout(x+5,10,'Y');
textout(2*x-20,y-20,'X');
setpenwidth(2);
setpencolor(clBlue);
  mx:=0.5;
  l1:=110;      l2:=90;
  h:=50;        d:=l1-l2;
 
setlength(p,5);
p[0].x:=x;       p[0].y:=y;
p[1].x:=x+l1;    p[1].y:=y;
p[2].x:=x+l1-d;  p[2].y:=y-h;
p[3].x:=x+d;     p[3].y:=y-h;
p[4]:=p[0];
polygon(p);
a:=90*pi/180;
p[1].x:=x+round(l1*cos(a));
p[1].y:=y-round(l1*sin(a));
p[2].x:=x+round(sqrt(4000)*cos(a));
p[2].y:=y-round(sqrt(4000)*sin(a));
p[3].x:=x+round((l1-2*d)*cos(a));
p[3].y:=y-round((l1-2*d)*sin(a));
setpencolor(clGreen);
setbrushcolor(clGreen);
polygon(p);
end.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2017, 01:58
Ответы с готовыми решениями:

Отобразить фигуру относительно диагонали первого квадранта
Н - подобная фигура зеркально отображается относительно диагонали первого квадранта с увеличением в...

Нарисовать трапецию.
Основания трапеции параллельны оси X, нижнее основание больше верхнего. Исходная точка, от которой...

Нарисовать трапецию
Точка начала рисования совпадает с верхней левой вершиной трапеции, а текущая точка рисования...

Нарисовать трапецию
Нарисовать трапецию в Windows forms

1
Модератор
63709 / 47268 / 32576
Регистрация: 18.05.2008
Сообщений: 114,573
02.12.2017, 15:55 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
uses graphABC;
type rpoint=record
            x,y:real;
            end;
var r:array of rpoint;
    x,y:integer;
    p:array of Point;
    m,t,ms,tx,ty:real;
begin
setwindowsize(500,500);
windowcenter;
x:=window.Center.X;
y:=window.Center.Y;
m:=(y-20)/10;//масштаб
//оси
line(0,y,2*x,y);
textout(2*x-10,y-20,'X');
line(x,0,y,2*y);
textout(x+5,0,'Y');
textout(x+5,y+10,'0');
//засечки и подписи по осям
for var i:=1 to 10 do
 begin
  line(x+round(i*m),y-3,x+round(i*m),y+3);
  line(x-round(i*m),y-3,x-round(i*m),y+3);
  textout(x+round(i*m)-3,y+10,inttostr(i));
  textout(x-round(i*m)-3,y+10,inttostr(-i));
  line(x-5,y-round(i*m),x+3,y-round(i*m));
  line(x-3,y+round(i*m),x+3,y+round(i*m));
  textout(x-25,y-round(i*m)-5,inttostr(i));
  textout(x-25,y+round(i*m)-5,inttostr(-i));
 end;
line(x+round(-10*m),y-round(-10*m),x+round(10*m),y-round(10*m)) ;
//массив исходных точек в реальных координатах
setlength(r,4);
r[0].x:=6.0; r[0].y:=-2.0;
r[1].x:=10.0; r[1].y:=-2.0;
r[2].x:=9.0; r[2].y:=4.0;
r[3].x:=7.0; r[3].y:=4.0;
setpenwidth(2);
setbrushstyle(bsClear);
setpencolor(clBlue);
setlength(p,5);
//полигон в экранных координатах
for var i:=0 to 3 do
 begin
  p[i].X:=x+round(r[i].x*m);
  p[i].Y:=y-round(r[i].y*m);
 end; 
p[4]:=p[0]; 
polygon(p);
//зеркальное отражение относительно прямой y=x
setpencolor(clGreen);
for var i:=0 to 3 do
 begin
  t:=r[i].x;
  r[i].x:=r[i].y;
  r[i].y:=t;
 end;
for var i:=0 to 3 do
 begin
  p[i].X:=x+round(r[i].x*m);
  p[i].Y:=y-round(r[i].y*m);
 end; 
p[4]:=p[0];
polygon(p); 
//уменьшение в 2 раза
tx:=0;//координаты центра фигуры
ty:=0;
for var i:=0 to 3 do
 begin
  tx:=tx+r[i].x;
  ty:=ty+r[i].y;
 end;
tx:=tx/4;
ty:=ty/4; 
ms:=2;//коэффициент уменьшения
for var i:=0 to 3 do
 begin
  r[i].x:=tx+(r[i].x-tx)/ms;
  r[i].y:=ty-(ty-r[i].y)/ms;
 end;
setpencolor(clRed);
for var i:=0 to 3 do
 begin
  p[i].X:=x+round(r[i].x*m);
  p[i].Y:=y-round(r[i].y*m);
 end; 
p[4]:=p[0];
polygon(p); 
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2017, 15:55

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Нарисовать трапецию
Как нарисовать трапецию в Delphi? Что то не соображу, если известны длины всех её сторон. Как...

Нарисовать трапецию и квадратик 50 на 50
Нарисуйте трапецию и квадратик 50на50, который будет бегать по той трапеции.

Нарисовать равнобедренную трапецию
Нужно нарисовать равнобедренную трапецию. Первая точка - верхняя левая вершина, потом, удерживая...

Нарисовать трапецию в движении
В интернете ничего не могу найти, не примеров, не объяснений. Помогите пожалуйста. Буду очень...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.