Страница: 1 |
Страница: 1 |
Вопрос: Понимаю, что задолбал....
Добавлено: 14.01.08 22:59
Автор вопроса: Папоторник
Уважаемые проффесионалы! Если есть свободная от работы и отдыха секундочка - прочитайте!! Есть проверка на пересечение ув. Winand'a.
Const cX As Integer = 180, cY As Integer = 180, cR As Integer = 140
Const cR2 As Integer = 50
Private Sub Form_Load()
Call Form_MouseMove(1, 0, 130, 130)
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Call Form_MouseMove(Button, Shift, X, Y)
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button <> 1 Then Exit Sub
Call Cls
Circle (cX, cY), cR
If Sqr((X - cX) ^ 2 + (Y - cY) ^ 2) > (cR - cR2) Then
Circle (X, Y), cR2, 255
Else
Circle (X, Y), cR2
End If
End Sub
Уже мозги едут... Не могу понять как сделать так, чтобы при малейшем пересечении, малая окружность начала двигаться по контуру большой. Блин... даже не знаю возможно такой или нет... если кому-то итересно что за фигней я страдаю - загуглите опыт Штерна (с коаксиальными цилиндрами)... блин...
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #1
Добавлено: 14.01.08 23:08
уравнение окружности знаешь? как точку окружности найти проходили в школе.
находишь координаты каждой точки окружности и строишь на ней другую окружность. что непонятного-то?
Номер ответа: 2
Автор ответа:
Папоторник
Вопросов: 6
Ответов: 22
Профиль | | #2
Добавлено: 14.01.08 23:14
блин... сейчас начнем вспоминать как точку находить... а Вы посмотрите-то про опыт, и мнение свое напишите потом пожалста. Нужно мнение извне) Вот и договорились))
Номер ответа: 3
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #3
Добавлено: 14.01.08 23:38
Спасибо за интересную задачу)) Вот это вроде работает. Очень неплохо даже работает
Const cX As Integer = 180, cY As Integer = 180, cR As Integer = 140
Const cR2 As Integer = 50
Dim Hyp As Single 'Гипотенуза
Dim cHyp As Single 'Коэффициент уменьшения катетов
Private Sub Form_Load()
Call Form_MouseMove(1, 0, 130, 130)
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Call Form_MouseMove(Button, Shift, X, Y)
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button <> 1 Then Exit Sub
'Максимальная гипотенуза тр-ка с катетами (X - cX) и (Y - cY) равна (cR - cR2)
'Находим гипотенузу тр-ка с катетами (X - cX) и (Y - cY)
Hyp = Sqr((X - cX) ^ 2 + (Y - cY) ^ 2)
'Если она больше максимальной, находим коэф. на который нужно уменьшить катеты
If Hyp > (cR - cR2) Then cHyp = Hyp / (cR - cR2) Else cHyp = 1
'Уменьшаем катеты (с учетом расположения окружностей на плоскости)
X = (X - cX) / cHyp + cX
Y = (Y - cY) / cHyp + cY
Call Cls
Circle (cX, cY), cR 'Внешняя окружность
Circle (X, Y), cR2 'Внутренняя окружность
End Sub
Номер ответа: 4
Автор ответа:
Папоторник
Вопросов: 6
Ответов: 22
Профиль | | #4
Добавлено: 14.01.08 23:46
Winand, вы замечательный человек!!!!!!!!!!!!!!!!!!! (или любите интересные задачи...))))) Вас тоже попрошу, посмотреть опыт целиком... и комменты потом)) пжалста..
Номер ответа: 5
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #5
Добавлено: 15.01.08 11:20
квадратное уровнение решить надо
Номер ответа: 6
Автор ответа:
AntiXaker
Вопросов: 1
Ответов: 24
Web-сайт:
Профиль | | #6
Добавлено: 15.01.08 12:48
Скажи будь другом... За чем тебе этот ГЕМОРОЙ? Займись реальными программами.
Номер ответа: 7
Автор ответа:
Папоторник
Вопросов: 6
Ответов: 22
Профиль | | #7
Добавлено: 16.01.08 21:33
Все до боли просто - этот ГЕМОРОЙ - моя выпускная работа)))
Номер ответа: 8
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #8
Добавлено: 16.01.08 22:29
Если не сделаешь, то не выпустят? Жестоко.
Номер ответа: 9
Автор ответа:
Папоторник
Вопросов: 6
Ответов: 22
Профиль | | #9
Добавлено: 16.01.08 23:18
Мдя... Это было бы реально жестоко)) Если не сделаю, то тут же и выпустят не дождавшись окончания года и без атестата... Хотя без атестата круто...
Номер ответа: 10
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #10
Добавлено: 08.02.08 08:55
Админы, закрывайте тему.