Форум программистов, компьютерный форум, киберфорум
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 15.02.2023
Сообщений: 83

Поворот ломаной

06.05.2024, 06:44. Показов 2737. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте программисты и математики.
Помогите повернуть ломаную на заданный угол.

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
procedure TFormMain.Button4Click(Sender: TObject);
var x: array[0..3] of extended;
    y: array[0..3] of extended;
    angle, XA,XB,YA,YB,  X0,Y0:extended;
    i:integer;
begin
Image.Canvas.FillRect(Image.BoundsRect);//Очистим image
 
x[0]:=84;y[0]:=126; //исходные данные
x[1]:=84;y[1]:=168;
x[2]:=168;y[2]:=84;
x[3]:=0;y[3]:=0;
 
XA:=0;XB:=0;YA:=0;YB:=0;    X0 := 0; Y0 := 0;
 
XA := x[0]; YA :=y[0]; //прочитаем первую точку
X0 := XA;  Y0 := YA;   //сохраним точку вокруг которой всё поворачивать
 
XA :=  MARGIN + XA;  YA := MARGIN + SCREEN - YA; //Xовые координаты сдвинем, а Yовые зеркально так как ось Y идет вниз
FormMain.Image.Canvas.Ellipse(trunc(XA-3),trunc(YA-3),trunc(XA+3),trunc(YA+3));//нарисуем начальную точку
 
angle := cur_angle * pi / 180;//ЗАДАННЫЙ УГОЛ (cur_angle) переведем в радианы
 
for i:=0 to 2 do begin
 
XA := x[i];   YA :=y[i];
XB := x[i+1]; YB :=y[i+1];
 
if(i <> 0) then begin//у первой точки не пересчитываем вокруг нёё поворачивается
                XA :=   X0 + (XA - X0)*cos(angle) - (YA - Y0)*sin(angle);
                YA :=   Y0 + (XA - X0)*sin(angle) + (YA - Y0)*cos(angle);
                end;
XB := X0 + (XB - X0)*cos(angle) - (YB - Y0)*sin(angle);
YB := Y0 + (XB - X0)*sin(angle) + (YB - Y0)*cos(angle);
 
//Xовые координаты сдвинем, а Yовые зеркально так как ось Y идет вниз
XA :=  MARGIN + XA;  YA := MARGIN + SCREEN - YA;
XB :=  MARGIN + XB;  YB := MARGIN + SCREEN - YB;
 
FormMain.Image.Canvas.MoveTo(trunc(XA), trunc(YA));   FormMain.Image.Canvas.LineTo(trunc(XB), trunc(YB));  //начертим отрезок
 
                end;//for
 
end;
Получаетсся вот так (меняю угол от 0 до 80 градусов с шагом 10) - это не поворот а искажение какое то, что не так????
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.05.2024, 06:44
Ответы с готовыми решениями:

Не могу сделать поворот матрицы на каждое нажатие, и её нормальный поворот
var Form1: TForm1; m, n: integer; i, j: byte; b, a: array of integer; implementation uses Unit2, Unit3;

Рисование ломаной кликами мыши
Помогите разработать программу рисования ломаной линии путем щелчков мышью по окну. При нажатии на кнопку «Новая линия» процесс рисования...

Соединить точки (по координатам из таблицы) ломаной линией
Дана таблица с координатами (х, у) семи точек. Изобразить их на рисунке и по выбору пользователя либо слева-направо, либо снизу-вверх, либо...

20
0 / 0 / 0
Регистрация: 15.02.2023
Сообщений: 83
07.05.2024, 11:24  [ТС]
Студворк — интернет-сервис помощи студентам
Благодарю всех за помощь!

Добавлено через 1 минуту
Цитата Сообщение от D1973 Посмотреть сообщение
проверяйте...
СПАСИБО
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.05.2024, 11:24

Поворот ломаной линии
Как добиться вращения фигуры по окружности, а не по спирали. Вращение происходит относительно точки, указанной курсором. Привожу мой код....

Определить точку пересечения ломаной с осью абсцисс и порядковые номера точек ломаной
Задана задача на курсовую: n=10 Считая элементы (X , Y ) координатами конечных точек отрезков ломаной линии, определить точку...

Нарисовать звенья ломаной разными цветами, нанести на график среднюю длину отрезка ломаной
Помогите, пожалуйста, с заданием. У меня есть функция, строящая ломаную линию по случайным точкам и нумерующая по порядку вершины. ...

длина ломаной
Помогите, очень нужна помощь С клавиатуры вводится пара n точек. Найти длину кротчайшей ломаной соединяющей эти точки. Начало ломаной -...

уравнение ломаной
Доброго времени суток! Столкнулась с такой проблемой.Нужно задать функцию ломаной, чтобы получился треугольник с площадью = 1. А он...


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

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
сукцессия 37. Внедрил дипсик в свой оркестр из ИИ. У него закончилось пространство чата, потому опубликую выводы из его работы здесь
anaschu 21.07.2026
==================================================================== КОНТЕКСТ: Моделирование микоризной сукцессии (AM → ECM) ==================================================================== . . .
сукцессия 36. Делаю прогоны модели около порога бифуркации (превращения эндо микоризы в экто микоризу)
anaschu 21.07.2026
СУКЦЕССИЯ МИКОРИЗ: КАК МАТЕМАТИКА ОБЪЯСНЯЕТ ПОДЗЕМНУЮ ВОЙНУ Мы привыкли думать, что лес — это деревья. А грибы — это то, что мы собираем в корзинку осенью. Но если заглянуть под землю, окажется,. . .
ИИ и человечность
kumehtar 21.07.2026
Забавно, что общаясь с ИИ, я замечаю, насколько он высказывается умно, и насколько верит в людей. Он умеет прощать. Он знает как отвечать не обесценивая опыт других людей, даже если сам не верит. Он. . .
Нейтральные знания ..., ... чистая наука. Пока что-то проходит модерацию на Хабре, стоит развить мысль ...
Hrethgir 20.07.2026
К таким радикальным взглядам я конечно в той публикации не приходил, но чтобы скоротать вечер, решил углубиться немного. 1. Почему показания термометра заряжены целью? Цель заложена в самом. . .
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ По ссылке 403. Не очень информативно такую ссылку постить. Запись от Usaga размещена Сегодня в 06:46 . . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru