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

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

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

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

Ответ
 
Опции темы
Старый 05.10.2011, 03:02   #1
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Необходимо найти координаты точки

Вобщем задачка такая:



Известны координаты точек 1-3 и радиус окружности. Надо найти координаты точки 4.

Есть какие-либо соображения на этот счет?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 05.10.2011, 10:37   #2
Платон Александрович
Нуждающийся
 
Аватар для Платон Александрович
 
Регистрация: 05.10.2011
Адрес: Россия, Южно-Сахалинск
Сообщений: 66
Написано 42 полезных сообщений
(для 83 пользователей)
Ответ: Необходимо найти координаты точки

Можно взять нормали векторов (1 и 3) и (2 и 3), по ним найти точки касания (противоположные) линий с окружностью (центр + нормаль * радиус). Из полученых отрезков взять лучи и найти точку их пересечения, т.е. точку 4
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Платон Александрович за это полезное сообщение:
LLI.T.A.L.K.E.R. (05.10.2011), pax (05.10.2011)
Старый 05.10.2011, 10:44   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Необходимо найти координаты точки

Самому такой вариант решения пришел на ум, а другие варианты решения могут быть?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 05.10.2011, 10:45   #4
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Необходимо найти координаты точки

По формулам найти касательные к окружности, потом найти их точку пересечения.
__________________
(Offline)
 
Ответить с цитированием
Старый 05.10.2011, 10:46   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Необходимо найти координаты точки

Сообщение от SBJoker Посмотреть сообщение
По формулам найти касательные к окружности, потом найти их точку пересечения.
А по каким формулам? Есть какие-нибудь ссылки?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 05.10.2011, 10:57   #6
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Необходимо найти координаты точки

Гуглим "касательная к окружности уравнение" и "пересечение прямых уравнение"

Касательная http://www.bymath.net/studyguide/angeo/sec/angeo3.htm
Пересечение прямых http://wiki.mirgames.ru/%D0%BF%D0%B5...BC%D1%8B%D1%85
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (05.10.2011)
Старый 05.10.2011, 12:01   #7
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Необходимо найти координаты точки

По первой ссылке необходимо иметь точку на окружности для вычисления уравнения касательной, которая не известна.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 05.10.2011, 16:35   #8
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Необходимо найти координаты точки

Вообще из одной точки к окружности можно провести только две касательные.
Из теоремы Пифагора можно легко найти катет, который не радиус. Уравнение от точки 1 к точке три легко найти. Далее поворотом осей получаем уравнение касательной. Тоже для точки 2. Будет два уравнение пересечение точка четыре.

Последний раз редактировалось dsd, 13.12.2011 в 22:59.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (05.10.2011)
Старый 05.10.2011, 16:52   #9
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Необходимо найти координаты точки

Трудно понимается с поворотом осей, но как получить вектора, повернув их на определенный угол я понимаю, спасибо.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 05.10.2011, 19:05   #10
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Необходимо найти координаты точки



Сперва нужно провезти касательные от точек, при этом они должны быть на внешних сторонах окружности.
Точек пересечения может быть ни одной, может быть одна, а может быть и две.
Чтобы определить как провезти касательные, тут не так и просто, т.к. нужно учесть много условий для разных сценариев.

Должна быть весьма простая формула, но за недостатком мат. знаний, я не могу её разработать.
(Offline)
 
Ответить с цитированием
Старый 05.10.2011, 19:07   #11
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Необходимо найти координаты точки

вопрос:как попиксельно нарисовать линию если заданы начальные и конечные координаты,и можно это сделатбез деления(язык:Си),а то либо много делений выходит,либо при отрисовке всякие косяки
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 05.10.2011, 19:18   #12
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Необходимо найти координаты точки

Сообщение от Платон Александрович Посмотреть сообщение
Можно взять нормали векторов (1 и 3) и (2 и 3), по ним найти точки касания (противоположные) линий с окружностью (центр + нормаль * радиус). Из полученых отрезков взять лучи и найти точку их пересечения, т.е. точку 4
Этот вариант отпадает, т.к. Нормали не совпадают по направлению с катетом прямоугольного треугольника, образуемым вектором 1-3, радиусом и касательной.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 05.10.2011, 19:20   #13
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Необходимо найти координаты точки

Сообщение от Костян Посмотреть сообщение
вопрос:как попиксельно нарисовать линию если заданы начальные и конечные координаты,и можно это сделатбез деления(язык:Си),а то либо много делений выходит,либо при отрисовке всякие косяки
Алгоритм Брезенхэма

Алгоритм Ву
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
LLI.T.A.L.K.E.R. (05.10.2011), RegIon (05.10.2011)
Старый 05.10.2011, 20:21   #14
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Необходимо найти координаты точки

В общем теорема Пифагора тут тоже пока не нужна. Но прямоугольный треугольник помог: Зная отношение катета к гипотенузе - это синус угла, на который надо повернуть например вектор 1-3, чтобы получить вектора касательных, потом надо выбрать нужные вектора и найти точку пересечения. Но возможно мне понадобятся точки касания, поэтому и теорема Пифагора пригодится
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 05.10.2011, 23:10   #15
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: Необходимо найти координаты точки

Сообщение от pax Посмотреть сообщение
Этот вариант отпадает, т.к. Нормали не совпадают по направлению с катетом прямоугольного треугольника, образуемым вектором 1-3, радиусом и касательной.
Ты же можешь найти угол (гипотенуза и катет-радиус известны) и повернуть нормаль - умножить на матрицу поворота
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (05.10.2011)
Ответ


Опции темы

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

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


Часовой пояс GMT +4, время: 00:23.


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