![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 02.12.2010
Сообщений: 160
|
![]()
Перезалил.
Здравствуйте. Знаю что немножко не туда пишу. Но может поможете. Программа должна нарисовать два круга. Радиусы известны. Один круг маленький другой большой они вот должны касаться. ![]() Проблема начинается с маленьким кругом. По идеи что бы его нарисовать нужно знать его координаты. Координатами круга в данном случае является центр окружности. Координаты маленького круга по X найти легко, а вот по Y не как не могу додуматься. Спасибо за внимание. ![]() Последний раз редактировалось WizarD.89; 26.01.2012 в 16:23. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 18.11.2009
Сообщений: 39
|
![]()
Моё такое мнение, что круги нужно строить по координатам центра, тогда и проблем никаких
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 224
|
![]()
Уравнение окружности можешь взять здесь.
http://ru.wikipedia.org/wiki/%D0%9E%...81%D1%82%D1%8C Центр большой окружности тебе известен. Координаты точки касания тебе известны, как я понял (ну, высчитать легко). Задача сводится к решению системы из 2х уравнений окружностей. Когда решишь - получишь центр маленькой окружности. Потом сможешь найти свою базовую точку, в принципе, тоже очевидно.
Люди бывают 10 типов: те, кто понимают двоичную систему счисления, и те, кто не понимают...
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 02.12.2010
Сообщений: 160
|
![]()
Mahin так и сделал. стало проще. но все равно не получается.
sVasilich вашим способом не очень получается. Если вам не составит труда решите быстренько. Спасибо. |
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 224
|
![]() Код:
Цитата:
Люди бывают 10 типов: те, кто понимают двоичную систему счисления, и те, кто не понимают...
|
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 02.12.2010
Сообщений: 160
|
![]()
sVasilich
центр окружности нашел. через систему уравнений окружности. получилась формула для координаты центра малой окружности x0=-r; y=sqrt(r*r-R*R-2*R*x0-x0*x0); спасибо. Теперь нужно найти координаты точки касания окружностей. Не знаю в каком направлении думать. Пробовал с уравнениями окружностей, но что-то не получилось. |
![]() |
![]() |
![]() |
#7 | |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 224
|
![]()
Что-то я не понял. Я предполагал что известны центр большой окружности и точка касания:
Цитата:
Поясни, как ты задаёшь в каком месте должны касаться окружности? Если одна координата есть, то по этой же формуле можно найти вторую... Может я не правильно условие понял...
Люди бывают 10 типов: те, кто понимают двоичную систему счисления, и те, кто не понимают...
|
|
![]() |
![]() |
![]() |
#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. |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,068
|
![]()
Так чтоли надо? Управление стрелками влево-вправо и вверх-вниз.
UPD. Даже так (логика получения формул изображена на картинке) ![]() Добавил такую функцию (простой WinAPI + GDI проект): Код:
Код:
Последний раз редактировалось pu4koff; 28.01.2012 в 22:31. |
![]() |
![]() |
![]() |
#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 |