|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.06.2009, 15:29 | #1 |
Пользователь
Регистрация: 12.04.2009
Сообщений: 29
|
ориентация треугольника
На плоскости заданы декартовы координаты трёх точек А, В и С. Написать программу , возвращающую нуль, если при движении по направлению АВ точка С остаётся справа и единицу в противном случае.
Кто-нибудь может подсказать алгоритм, мне в голову ничего не приходит |
08.06.2009, 16:48 | #2 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
На уровне идеи: по точкам A и B находим уравнение прямой. Ищем точку пересечения прямой из точки C, перпендикулярной AB, с AB. Потом находим угол между прямыми. Если от 0 до 90 или от 270 до 360, то точка справа, иначе - слева.
Как-то так.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
08.06.2009, 18:53 | #3 |
Пользователь
Регистрация: 18.03.2009
Сообщений: 89
|
Есть еще одна мысль на уровне идеи. Может, воспользоваться векторным произведением векторов?
На всякий случай: http://ru.wikipedia.org/wiki/Векторное_произведение По определению в результате векторного произведения получается вектор, который перпендикулярен обоим векторам и направлен в зависимости от расположения этих векторов (как раз правая/левая тройка векторов получается). В нашем случае два исходных вектора лежат в плоскости XY. Значит, конечный вектор будет лежать только на оси Z и его направление легко определяется знаком Z-координаты. По определению [a,b] = (a_y*b_z - a_z*b_y, a_z*b_x - a_x*b_z, a_x*b_y - a_y*b_x) Берем вместо a и b вектора AB = (B_x - A_x, B_y - A_y, 0) и AC = (C_x - A_x, C_y - A_y, 0) Поскольку z у них равен 0, то все упрощается: [AB,AC] = (0, 0, AB_x*AC_y - AB_y*AC_x) То есть нас интересует только знак выражения AB_x*AC_y - AB_y*AC_x, и все! А если точка C лежит на прямой AB, должны получить 0. Скажите, если я ошибаюсь |
08.06.2009, 20:20 | #4 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Код:
http://programmersforum.ru/showthrea...621#post206621 Целая тема была про направление обхода |
08.06.2009, 21:54 | #5 |
Пользователь
Регистрация: 12.04.2009
Сообщений: 29
|
alexBlack спасибо заработало, и ещё кто-нибудь знает как найти ортоцентр треугольника (т. пересечения высот) если даны его вершины и как определить ортоганальна ли заданная матрица n на n элементов??????? Подкиньте идею
Последний раз редактировалось Orodret; 08.06.2009 в 22:14. |
08.06.2009, 22:47 | #6 | ||
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Цитата:
<AC*BH> = 0 <BC*AH> = 0 где H - точка пересечения высот Цитата:
ps Не оффтопим
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
||
08.06.2009, 23:31 | #7 |
Пользователь
Регистрация: 12.04.2009
Сообщений: 29
|
Но как из этого найти H?
|
09.06.2009, 00:45 | #8 | |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Цитата:
Код:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
|
09.06.2009, 01:14 | #9 |
Пользователь
Регистрация: 12.04.2009
Сообщений: 29
|
|
09.06.2009, 01:28 | #10 | |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Цитата:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
вращение треугольника в С++ | bum90 | Помощь студентам | 3 | 28.04.2009 15:28 |
Паскаль, вращение треугольника. | Arizonec | Помощь студентам | 4 | 03.01.2009 18:52 |
Определить тип треугольника | michailevg | Общие вопросы C/C++ | 3 | 15.12.2008 17:29 |
Дальний рубеж треугольника Паскаля | NecRomant | Общие вопросы Delphi | 3 | 05.11.2008 17:03 |