0 / 0 / 0
Регистрация: 07.07.2017
Сообщений: 11
1

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

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

Author24 — интернет-сервис помощи студентам
Собственно сделал так, только пока что без уменьшения, отзеркаленную копию рисует только 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.12.2017, 01:58
Ответы с готовыми решениями:

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

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

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

1
Почетный модератор
 Аватар для Puporev
64307 / 47604 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.12.2017, 15:55
Помогаю со студенческими работами здесь

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

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

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

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

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


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

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

Новые блоги и статьи
Циклы for в Python
py-thonny 17.03.2025
Существует множество ситуаций, когда нам нужно выполнить одно и то же действие несколько раз. Цикл for в Python — настоящий рабочий конь для большинства программистов. Если вам нужно пройтись по всем. . .
Предсказание ветвлений - путь к высокопроизводи­тельному C++
NullReferenced 17.03.2025
В высокопроизводительном программировании на C++ каждый такт процессора на счету. Когда речь заходит о разработке систем с низкой задержкой — будь то высокочастотная торговля, обработка потоковых. . .
Паттерн CQRS в C#
UnmanagedCoder 17.03.2025
Создание сложных корпоративных приложений часто требует нестандартных подходов к архитектуре. Один из таких подходов — паттерн CQRS (Command Query Responsibility Segregation), предлагающий простую,. . .
Паттерн Цепочка ответственности в C#
UnmanagedCoder 17.03.2025
Цепочка ответственности — это поведенческий паттерн проектирования, который позволяет передавать запросы последовательно по цепочке потенциальных обработчиков, пока один из них не обработает запрос. . . .
Создаем микросервисы с NestJS, TCP и Typescript
run.dev 17.03.2025
NestJS — фреймворк, который значительно упрощает создание серверных приложений на Node. js. Его прелесть в том, что он комбинирует концепции ООП, функционального программирования и предлагает. . .
Гексагональная архитектура со Spring Boot
Javaican 17.03.2025
Если вы когда-нибудь сталкивались с ситуацией, когда внесение простых изменений в базу данных или пользовательский интерфейс заставляло вас переписывать весь код, то вы точно оцените элегантность. . .
Позиционировани­е Kafka Consumer и Seek-операции
Javaican 17.03.2025
Что же такое Consumer Seek в Kafka? По сути, это API-метод, который позволяет программно указать, с какой позиции (offset) Consumer должен начать или продолжить чтение данных из партиции. Без этого. . .
Python NumPy: Лучшие практики и примеры
py-thonny 17.03.2025
NumPy (Numerical Python) — одна из ключевых библиотек для научных вычислений в Python. Она превращает Python из просто удобного языка общего назначения в среду для проведения сложных математических. . .
Java Micronaut в Docker: контейнеризация с Maven и Jib
Javaican 16.03.2025
Когда речь заходит о микросервисной архитектуре на Java, фреймворк Micronaut выделяется среди конкурентов. Он создан с учётом особенностей облачных сред и контейнеров, что делает его идеальным. . .
Управление зависимостями в Java: Сравнение Spring, Guice и Dagger 2
Javaican 16.03.2025
Инъекция зависимостей (Dependency Injection, DI) — один из фундаментальных паттернов проектирования, который радикально меняет подход к созданию гибких и тестируемых Java-приложений. Суть этого. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru