Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 04.10.2007, 05:14   #1
HolyDel
 
Регистрация: 25.09.2006
Сообщений: 6,030
Написано 1,469 полезных сообщений
(для 2,690 пользователей)
Геометрия

Все в рисунке.
(Offline)
 
Ответить с цитированием
Старый 04.10.2007, 13:29   #2
jimon
 
Сообщений: n/a
Re: Геометрия

1) ищем точки пересечения отрезка с окружностью
в инете куча мануалов - поискать думаю не составит труда
получаем точки A и B
случаи когда тока одна точка или их нет - отпадают
2) берем середину AB
и ещем ближайшую точку на кругу к полученой точки
точка на кругу = X
 
Ответить с цитированием
Старый 04.10.2007, 14:12   #3
alex-mad
Модератор
 
Регистрация: 13.09.2005
Сообщений: 1,835
Написано 6 полезных сообщений
(для 10 пользователей)
Re: Геометрия

1) по известным данным легко пишутся уровнения отрезка и окружности.
получаем систему из 2-ух уровнений.
находим точки пересечения Х1 и Х2(расматриваем тока случай с 2-мя точками, остальные варианты очевидны).
2) берём середину (S) отрезка образованного точками Х1 и Х2.
середина и центр окружности составляют прямую.
3) пересечение этой прямой с окружностью (аналогично действию номер 1) даст 2 точки.
ближняя точка к S и будет ответом.
(Offline)
 
Ответить с цитированием
Старый 04.10.2007, 19:44   #4
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Re: Геометрия

хух, ну и слава богу, а то я уж думал свое извращение предложить
(Offline)
 
Ответить с цитированием
Старый 04.10.2007, 20:08   #5
HolyDel
 
Регистрация: 25.09.2006
Сообщений: 6,030
Написано 1,469 полезных сообщений
(для 2,690 пользователей)
Re: Геометрия

ZanoZa, предложи.
а то я чо то все равно ничо не понял.

надо максимальное быстродейтсвие.

у меня идея такая, как-нибудь (не знаю я) надо найти точку - пересечения линии и ее нормали к центру.
если ее найти, то решив несложную пропорцию найдем ту точку.
(Offline)
 
Ответить с цитированием
Старый 04.10.2007, 20:18   #6
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Re: Геометрия

пересечение нормали( к прямой), и самой прямой?
(Offline)
 
Ответить с цитированием
Старый 04.10.2007, 20:38   #7
HolyDel
 
Регистрация: 25.09.2006
Сообщений: 6,030
Написано 1,469 полезных сообщений
(для 2,690 пользователей)
Re: Геометрия

0x01
(Offline)
 
Ответить с цитированием
Старый 04.10.2007, 20:43   #8
Render
Знающий
 
Регистрация: 12.07.2006
Сообщений: 283
Написано 16 полезных сообщений
(для 32 пользователей)
Re: Геометрия

http://algolist.ru/maths/geom/ - думаю будет полезно.

Могу предложить как вариант: построить уравнение окружности и отрезка, и с помощью обычных формул всё находится. Как быстро это будет работать - хз
(Offline)
 
Ответить с цитированием
Старый 04.10.2007, 21:25   #9
alex-mad
Модератор
 
Регистрация: 13.09.2005
Сообщений: 1,835
Написано 6 полезных сообщений
(для 10 пользователей)
Радость Re: Геометрия

Сообщение от alex-mad
1) по известным данным легко пишутся уровнения отрезка и окружности получаем систему из 2-ух уровнений.
находим точки пересечения Х1 и Х2(расматриваем тока случай с 2-мя точками, остальные варианты очевидны).
2) берём середину (S) отрезка образованного точками Х1 и Х2.
середина и центр окружности составляют прямую.
3) пересечение этой прямой с окружностью (аналогично действию номер 1) даст 2 точки.
ближняя точка к S и будет ответом.


HolyDel, ты сказал что пересечение находить можешь, следовательно знаешь точки Х1 и Х2.
координаты точки S определить не составит труда.
2 точки описывают прямую, и опять же нужно найти пересечение прямой и окружности (это ты умеешь).
из 2-ух точек определить ближнюю тоже не сложно.

это я к тому что это типичное задание по школьной геометрии и алгоритм я предоставил самый примитивный и доступный пониманию
(Offline)
 
Ответить с цитированием
Старый 07.10.2007, 07:28   #10
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Re: Геометрия

а пересечение x1x2 с OX чисто математически находите, или графически, или уравнение OX известно?
если математически то дайте алгоритм посмотреть, а то интересно очень.
(Offline)
 
Ответить с цитированием
Старый 07.10.2007, 14:03   #11
HolyDel
 
Регистрация: 25.09.2006
Сообщений: 6,030
Написано 1,469 полезных сообщений
(для 2,690 пользователей)
Re: Геометрия

я незнаю точки, я тока могу сказать пересекается / непересекается.
(Offline)
 
Ответить с цитированием
Старый 08.10.2007, 20:35   #12
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Re: Геометрия

так что задачка решена? или как?
(Offline)
 
Ответить с цитированием
Старый 08.10.2007, 20:47   #13
Serendipity
Знающий
 
Регистрация: 04.01.2007
Сообщений: 229
Написано 5 полезных сообщений
(для 3 пользователей)
Re: Геометрия

Значит так, если пересекается, то:
берешь вектор, перпендикулярный к своей прямой, строишь вдоль него на окружности две точки - это будет точка S и точка центрально-симметричная ей.
Почему: потомучто прямая А1А2 идентична с Х1Х2. Х - середина Х1Х2. ОХ1=ОХ2=радиусу окружности. => Треугольники ОХХ1 и ОХХ2 подобны по двум сторона и одной общей, вообще говоря они равны.Жто возможно только когда угол ОХХ# прямой.

Из двух точек, S - ближайшая к A1, A2. Можно сравнивать не по сумме квадратов, а по сумме модулей разностей координат между точками А1 - S и S - A2.
Почему:
Точка, ближайшая к Х1 и Х2 одновременно, и является точкой S - это очевидно.
Дальше алгебра: если квадрат разности для одной пары чисел больше, чем для другой, то и модуль разности для первой пары тоже больше, чем для второй. Значит можно не возводить в квадрат разночти координат а брать их модули при вычислении расстояния между точками... так как на интересует не величина расстояния, а соотношение расстояний (больше/меньше).

Алгоритм:
1) VectorA = A2-A1 = {Vx,Vy} - вычитаем координаты точек между собой соответстенно.
2) Radius = {Vy,Vx}
3) S1 = O+Radius; S2=O-Radius
4) L1=abs(X1x-S1x)+abs(X1y-S1y); L2=...аналогично.
5) L1>L2 => S=S2, иначе S=S1
(Offline)
 
Ответить с цитированием
Старый 09.10.2007, 04:57   #14
jimon
 
Сообщений: n/a
Re: Геометрия

хм, а если так :
angle1 = atan2(x1_y - o_y,x1_x - o_x)
angle2 = atan2(x2_y - o_y,x2_x - o_x)
x_x = cos(angle1 + angle2) * radius + o_x
x_y = sin(angle1 + angle2) * radius + o_y

это тормозно ?
 
Ответить с цитированием
Старый 09.10.2007, 18:02   #15
HolyDel
 
Регистрация: 25.09.2006
Сообщений: 6,030
Написано 1,469 полезных сообщений
(для 2,690 пользователей)
Re: Геометрия

Вот решение:

Circle - простой пример

VPP - для чего мне ето соьнсо надо было
Vpp2 - вариация

Да, нужна будет моя либа, ищите в теме про секционную разбивку.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Геометрия в Blitz3D Maxxx.!!!. 3D-программирование 6 12.12.2007 15:01
нужна помощь,геометрия. kortesfil 3D-программирование 3 25.09.2007 04:46
!Геометрия! Очень нужна помощь! c0mrad Болтовня 6 12.05.2007 18:34
Геометрия alcoSHoLiK Загадки 9 05.12.2006 16:04
Неэвклидовая геометрия alcoSHoLiK Математика 0 13.07.2006 20:57


Часовой пояс GMT +1, время: 02:35.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com