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

Переместить точку на линию в 2D - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить время падения шарика на поверхность с высоты h http://www.cyberforum.ru/cpp-beginners/thread1260742.html
Определить время падения шарика на поверхность с высоты h!7 И блок схеме!? И если кто может блок схему!?)
C++ Заполнить динамический массив - не получается, что не так ? Всем доброго дня ! Я в теме вторую неделю. По работе надо посчитать некую статистику, для чего пришлось чуть-чуть освоить С++ Консольная версия VC++ 6.0, окошки и кнопочки не нужны, консольного варианта достаточно для посмотреть результат. Суть - у некого процесса есть 20ть параметров. Задача - взять несколько параметров (например 8мь) из этих 20ти, перебрать их ВСЕ возможные сочетания... http://www.cyberforum.ru/cpp-beginners/thread1260739.html
Двойное окно: наблюдаются два одноимённых процесса C++
Недавно возобновив программирование я обнаружил забавное явление, при запуске исполняемого файла консольное приложение открывается дважды. По завершению программы без всяких на то причин появляется идентичное окно программы которая исполняет себя заново. В диспетчере задач отчетливо наблюдаются два одноимённых процесса, один из них занимает ровно 100 кБ памяти. Тестил на других машинах,...
Очередь с приоритетами C++
Надо написать программу, которая имитирует очередь печати принтера (Класс «Принтер»).
C++ Односвязный список http://www.cyberforum.ru/cpp-beginners/thread1260730.html
Построить класс для работы с односвязним списком. Элемент списка содержит информацию об автобусе.
C++ Построить класс для работы с односвязным списком Построить класс для работы с односвязним списком. Элемент списка содержит информацию об автобусе. подробнее

Показать сообщение отдельно
sooqua
15 / 9 / 0
Регистрация: 23.02.2012
Сообщений: 135
23.09.2014, 19:04  [ТС]     Переместить точку на линию в 2D
Нашел код попроще (не требует класса vector2i), но он только возвращает расстояние.
C++
1
2
3
4
5
6
7
8
9
10
11
double dis(double x1, double y1, double x2, double y2){
    return sqrt((x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1));
}
double point_to_segment(double px, double py, double x1, double y1, double x2, double y2){
    double d1 = dis(x1, y1, x2, y2);
    double d2 = dis(x1, y1, px, py);
    double d3 = dis(x2, y2, px, py);
    if (d1*d1 + d2*d2 < d3*d3) return d2;
    if (d1*d1 + d3*d3 < d2*d2) return d3;
    return fabs((x2 - x1)*(py - y1) - (px - x1)*(y2 - y1)) / d1;
}
Как заставить его возвращать вектор?..
 
Текущее время: 01:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru