![]() |
|
Модераторы: bsa |
![]()
|
|
| leporel |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 12.2.2008 Репутация: нет Всего: -1 |
Как можно при рисовании на канве окружности и линии по заданным координатам определить координату(ы) пересечения этой окружности с прямой?
Это сообщение отредактировал(а) leporel - 1.7.2010, 20:18 |
|||
|
||||
| RobinHoodPHD |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 12.8.2007 Где: Русь Репутация: нет Всего: 2 |
Чисто математически задача решается так: (взято с исходник программы и подправлено, чтобы компилилось в студии)
Собственно можно выдернуть отсюда функцию prover. Вроде работает верно, хотя проверял не дотошно. |
|||
|
||||
| leporel |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 12.2.2008 Репутация: нет Всего: -1 |
Спасибо
|
|||
|
||||
| leporel |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 12.2.2008 Репутация: нет Всего: -1 |
Я не правильно сказал, не линия, а задан отрезок, нужно хотяб определить пересекается или нет, а координаты можно по первому способу найти.
Или можно найти точки пересечения и проверить на принадлежность их к заданному отрезку? Это сообщение отредактировал(а) leporel - 1.7.2010, 23:45 |
|||
|
||||
| RobinHoodPHD |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 12.8.2007 Где: Русь Репутация: нет Всего: 2 |
Можно проверить на принадлежность отрезку.
Если у тебя Xп > max (X1,X2) или Xп < min(X1,X2) или Yп > max (Y1,Y2) или Yп < min(Y1,Y2) где Xп,Yп - точка пересечения, X1,Y1,X2,Y2 - координаты концов отрезка |
|||
|
||||
| leporel |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 12.2.2008 Репутация: нет Всего: -1 |
А получше алгоритма нету? А это этот как то криво очень работает.
нашел здесь решение http://www.nbuv.gov.ua/portal/natural/Npdn...10/08yavmok.pdf но только не знаю как продлить отрезок и найти точки пересечения с координатными осями и С Это сообщение отредактировал(а) leporel - 3.7.2010, 04:39 |
|||
|
||||
| leporel |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 12.2.2008 Репутация: нет Всего: -1 |
Вот что то получилось
у меня iLabX, iLabY координаты центра круга и iLabR - радиус, все остальное это отрезок. Но результат все равно не верный Это сообщение отредактировал(а) leporel - 3.7.2010, 05:16 |
|||
|
||||
| leporel |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 12.2.2008 Репутация: нет Всего: -1 |
Вообщем работает криво, если X1>Y1, то получается точка самой вершины окружности. И прочие махинации с координатами выдают неверные значения, только если X1<Y1 показываються верные значения. И если 1 координата положительная(X1), а другая нет(Y1) тоже фигня получается. В том числе вычисление k не всегда получается, может делиться на ноль. Результат такойже как из алгаритма первого поста. Ещё нашел вот такое описание - http://zvn.uriit.ru/Collection/Books/AndG2.pdf но не знаю как найти координаты после определения растояния P1P2. ЗЫ Нашел как найти точки пресечения если центр круга в начале координат http://e-maxx.ru/algo/circle_line_intersection. Работает, и можно по этому алгоритму как-то сместить точки в зависимости от центра координат? Это сообщение отредактировал(а) leporel - 3.7.2010, 18:22 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
| leporel |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 12.2.2008 Репутация: нет Всего: -1 |
Не это не вариант так делать у меня. Можите помочь с алгоритмом который тут описан http://zvn.uriit.ru/Collection/Books/AndG2.pdf ?
|
|||
|
||||
| leporel |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 12.2.2008 Репутация: нет Всего: -1 |
Сделал через смещение, вроде работает, всем спасибо.
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |