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

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

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

Показать сообщение отдельно
sooqua
15 / 9 / 0
Регистрация: 23.02.2012
Сообщений: 135
22.09.2014, 18:54  [ТС]
Координаты точки меняются, так что это значения иметь не должно.
А при чем здесь окружность? :/

Добавлено через 6 минут
Нашел вот такой код, работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#define dot(u,v)   ((u).x * (v).x + (u).y * (v).y)
vector2i distance_Point_to_Segment(vector2i P, vector2i SP0, vector2i SP1)
{
    vector2i v = SP1 - SP0;
    vector2i w = P - SP0;
 
    double c1 = dot(w, v);
    double c2 = dot(v, v);
 
    double b = c1 / c2;
    vector2i Pb = SP0 + vector2i(v.x * b, v.y * b);
    return vector2i(P.x - Pb.x, P.y - Pb.y);
}
Но по Y координате плохо считает, и если точка не перпендикулярна отрезку, он ее считает как прямую (а не возвращает точку на ближайший край отрезка)
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru