Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Понимаю, что задолбал.... Добавлено: 14.01.08 22:59  

Автор вопроса:  Папоторник
Уважаемые проффесионалы! Если есть свободная от работы и отдыха секундочка - прочитайте!! Есть проверка на пересечение ув. Winand'a.
Option Explicit
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-сайт: domkratt.com
 Профиль | | #1
Добавлено: 14.01.08 23:08
уравнение окружности знаешь? =) как точку окружности найти проходили в школе.
находишь координаты каждой точки окружности и строишь на ней другую окружность. что непонятного-то?

Ответить

Номер ответа: 2
Автор ответа:
 Папоторник



Вопросов: 6
Ответов: 22
 Профиль | | #2 Добавлено: 14.01.08 23:14
блин... сейчас начнем вспоминать как точку находить... а Вы посмотрите-то про опыт, и мнение свое напишите потом пожалста. Нужно мнение извне) Вот и договорились))

Ответить

Номер ответа: 3
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #3
Добавлено: 14.01.08 23:38
Спасибо за интересную задачу)) Вот это вроде работает. Очень неплохо даже работает
Option Explicit
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-сайт: www.Bairam.biz
 Профиль | | #6
Добавлено: 15.01.08 12:48
Скажи будь другом... За чем тебе этот ГЕМОРОЙ? Займись реальными программами.

Ответить

Номер ответа: 7
Автор ответа:
 Папоторник



Вопросов: 6
Ответов: 22
 Профиль | | #7 Добавлено: 16.01.08 21:33
Все до боли просто - этот ГЕМОРОЙ - моя выпускная работа)))

Ответить

Номер ответа: 8
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #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
Админы, закрывайте тему.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам