|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.01.2012, 09:47 | #1 |
Форумчанин
Регистрация: 02.12.2010
Сообщений: 160
|
Круг касающий круга.
Перезалил.
Здравствуйте. Знаю что немножко не туда пишу. Но может поможете. Программа должна нарисовать два круга. Радиусы известны. Один круг маленький другой большой они вот должны касаться. Проблема начинается с маленьким кругом. По идеи что бы его нарисовать нужно знать его координаты. Координатами круга в данном случае является центр окружности. Координаты маленького круга по X найти легко, а вот по Y не как не могу додуматься. Спасибо за внимание. Последний раз редактировалось WizarD.89; 26.01.2012 в 16:23. |
26.01.2012, 11:01 | #2 |
Пользователь
Регистрация: 18.11.2009
Сообщений: 39
|
Моё такое мнение, что круги нужно строить по координатам центра, тогда и проблем никаких
|
26.01.2012, 11:41 | #3 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 224
|
Уравнение окружности можешь взять здесь.
http://ru.wikipedia.org/wiki/%D0%9E%...81%D1%82%D1%8C Центр большой окружности тебе известен. Координаты точки касания тебе известны, как я понял (ну, высчитать легко). Задача сводится к решению системы из 2х уравнений окружностей. Когда решишь - получишь центр маленькой окружности. Потом сможешь найти свою базовую точку, в принципе, тоже очевидно.
Люди бывают 10 типов: те, кто понимают двоичную систему счисления, и те, кто не понимают...
|
26.01.2012, 16:21 | #4 |
Форумчанин
Регистрация: 02.12.2010
Сообщений: 160
|
Mahin так и сделал. стало проще. но все равно не получается.
sVasilich вашим способом не очень получается. Если вам не составит труда решите быстренько. Спасибо. |
26.01.2012, 16:57 | #5 | |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 224
|
Код:
Цитата:
Люди бывают 10 типов: те, кто понимают двоичную систему счисления, и те, кто не понимают...
|
|
27.01.2012, 19:08 | #6 |
Форумчанин
Регистрация: 02.12.2010
Сообщений: 160
|
sVasilich
центр окружности нашел. через систему уравнений окружности. получилась формула для координаты центра малой окружности x0=-r; y=sqrt(r*r-R*R-2*R*x0-x0*x0); спасибо. Теперь нужно найти координаты точки касания окружностей. Не знаю в каком направлении думать. Пробовал с уравнениями окружностей, но что-то не получилось. |
27.01.2012, 21:21 | #7 | |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 224
|
Что-то я не понял. Я предполагал что известны центр большой окружности и точка касания:
Цитата:
Поясни, как ты задаёшь в каком месте должны касаться окружности? Если одна координата есть, то по этой же формуле можно найти вторую... Может я не правильно условие понял...
Люди бывают 10 типов: те, кто понимают двоичную систему счисления, и те, кто не понимают...
|
|
28.01.2012, 15:41 | #8 |
Форумчанин
Регистрация: 02.12.2010
Сообщений: 160
|
sVasilich
Программа должна рисовать две окружности. Заданны произвольные радиусы. Условие что бы маленькая окружность касалась большого круга и диаметра как показано на рисунке. В рисунке показаны различные варианты радиуса окружностей для более лучшего понимания задачи. По условию видно что r не может больше чем R/2, иначе не будет касания большой окружности и диаметра как показано на рисунке. Для решения данной задачи нужно найти координаты маленькой окружности. Я вывел чудом формулу.помощью системы уравнений окружности. Координаты большой окружности 0,0. То есть это начало координат. На декартовую систему координат нарисованная в самом низу не обращать внимания. потом легко будет перенести на нижнюю систему координат. R, r , x0=-r известны x,y, y0 не известны. Так как не известны x,y;(координаты точки касания) я решил взял случай в котором радиус маленькой окружности будет максимальной величины. То есть r=R/2. вот как тут. (Рисунок первый) и взял их точки касания. Не трудно заметить что они будет равны x=-R,y=0 и подставил в уравнение. Теперь x,y; типа известны. Вывел формулу и она оказалось рабочей для любых r<=R/2. Нашел y0; Теперь координаты маленького круга известны. Они вычисляются по формуле x0=-r; y0=sqrt(2*R*r-R*R) И программа рисует окружности как надо Следующая поставленная задача состоит в нахождении x,y то есть координаты точки касания окружностей. Теоретически можно таким же образом найти x,y. Только тут две не известные координаты и все гораздо сложней. Теперь y0,x0,r,R известны; x,y не известны. 20 раз выводил формулу с нуля. И нет не работает Последний раз редактировалось WizarD.89; 28.01.2012 в 18:48. |
28.01.2012, 20:03 | #9 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Так чтоли надо? Управление стрелками влево-вправо и вверх-вниз.
UPD. Даже так (логика получения формул изображена на картинке) Добавил такую функцию (простой WinAPI + GDI проект): Код:
Код:
Последний раз редактировалось pu4koff; 28.01.2012 в 22:31. |
28.01.2012, 23:46 | #10 |
Форумчанин
Регистрация: 02.12.2010
Сообщений: 160
|
pu4koff не так.
Всем спасибо за внимание. я сделал что хотел вот могу даже программу выставить. Завтра напишу как вычислил координаты касания окружностей. в программме нужно вести R большой круга. и r маленького. r не должно быть больше чем R/2 |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Движение круга:) | mitmikha | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 12.04.2011 12:11 |
Площадь круга | sturz | Помощь студентам | 20 | 23.01.2011 11:07 |
вписание круга в ромб !? | Weyner | Помощь студентам | 2 | 21.12.2010 21:53 |
Отрисовка круга в OpenGl | Oburec | Мультимедиа в Delphi | 1 | 04.07.2009 15:22 |
Пересечение прямой и круга | CoGnaC | Паскаль, Turbo Pascal, PascalABC.NET | 8 | 11.03.2008 17:01 |