Форум программистов, компьютерный форум CyberForum.ru

Параллельные прямые - C++

Восстановить пароль Регистрация
 
Евгений Буланов
6 / 6 / 4
Регистрация: 23.10.2013
Сообщений: 63
23.10.2013, 13:06     Параллельные прямые #1
Есть два отрезка на плоскости, координаты точек известны. Нужно изменить координаты второй линии так, чтоб она стала параллельно первой на определенном пользователем расстоянии... Прошу помочь в математической составляющей, код реализую сам. Благодарю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2013, 13:06     Параллельные прямые
Посмотрите здесь:

Определить пересекаются две прямые, параллельны или совпадают.Две прямые заданы уравнениями: ax+by+c=0, px+qy+r=0 C++
C++ помогите пожалуйста задать прямые с помощью структур прямые задаются точкой и направляющим вектором. дальше как делать знаю
C++ Две прямые описываются уравнениями напечатать координаты точки пересечения этих прямых, либо сообщить что эти прямые совпада
C++ Параллельные потоки
C++ Параллельные вычисления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
23.10.2013, 13:18     Параллельные прямые #2

Не по теме:

Цитата Сообщение от Евгений Буланов Посмотреть сообщение
Прошу помочь в математической составляющей
дак почему выбор пал на форум C++ , а не на математический ?



вобщем суть такова - отношение разницы по X к разнице по Y (x1-x2)/(y1-y2) для двух линий должно быть одинаково
Евгений Буланов
6 / 6 / 4
Регистрация: 23.10.2013
Сообщений: 63
23.10.2013, 13:52  [ТС]     Параллельные прямые #3
да-да, до этого я конечно дошел... это угловой коэффициент. я немогу сдвинуться далее. если возможно, поттолкните... Как изменить угловой коэффициент второго отрезка? У меня есть m(угл.коэф.)
m = (y2-y1)/(x2-x1) Все переменные известны. А вот чему будут равняться координаты, если мне нужно изменить 'm'?
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
23.10.2013, 14:07     Параллельные прямые #4
Цитата Сообщение от Евгений Буланов Посмотреть сообщение
Есть два отрезка на плоскости, координаты точек известны. Нужно изменить координаты второй линии так, чтоб она стала параллельно первой на определенном пользователем расстоянии... Прошу помочь в математической составляющей, код реализую сам. Благодарю.
C++
float n = 5.0; // расстояние
 
// координаты начала и конца первого отрезка
float xa1 = 3.0; 
float ya1 = 4.0;
float xb1 = 1.0;
float yb1 = 1.0;
 
// кот Ангенс... мяу
float t = (xa1-xb1)/(ya1-yb1);
 
// координаты начала и конца второго отрезка
float xa2 = xa1 - n * t;
float ya2 = ya1 + n / t;
float xb2 = xb1 - n * t;
float yb2 = yb1 + n / t;
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,308
23.10.2013, 14:15     Параллельные прямые #5
Ну вот смотри:
Пусть у тебя есть отрезок A с координатами концов x1a, y1a, x2a, y2a, и отрезок B с координатами концов x1b, y1b, x2b, y2b.
Вычисляешь: k = (x2a - x1a)/(y2a - y1a).
Теперь у тебя ровно тот же самый k должен получиться и для второго отрезка: (x2b - x1b)/(y2b - y1b) == k.
Имеет смысл зафиксировать из четырех координат три, и изменить четвертую так, чтобы это равенство выполнилось.
Например, будем менять x2b, тогда:
(x2b - x1b)/(y2b - y1b) = (x2a - x1a)/(y2a - y1a);
или
x2b = ((x2a - x1a)/(y2a - y1a))*(y2b - y1b) + x1b;

Краевые случаи (например, когда y2a == y1a) рассмотри сам.
Вуаля.

Ну и "на определенном расстоянии" реализуется столь же несложными вычислениями.
Евгений Буланов
6 / 6 / 4
Регистрация: 23.10.2013
Сообщений: 63
23.10.2013, 22:40  [ТС]     Параллельные прямые #6
Благодарю ВСЕХ, прогу запилил, всё работает
Yandex
Объявления
23.10.2013, 22:40     Параллельные прямые
Ответ Создать тему
Опции темы

Текущее время: 18:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru