Помогите в решении задачи

  • Автор темы Sortudo
  • Дата начала
S

Sortudo

Гость
#1
Помогите пожалуйста в решении задачи на VBA. Задача следующая:
Смоделировать движение точки, нарисованной на шаре, причем шар катится по плоскости (вид сверху).
-Шар на котором нарисована точка представляет собой обычный круг (панель рисование) и точка – это точно такой же круг, только поменьше.
-движение шара у меня смоделировать получилось и точка по нему движется, не выходя за его границы
-осталось сделать, чтобы эта точка после того, как она дойдет до краев так называемого «шара» должна исчезнуть на некоторое время (так как мы видим движение сверху), это можно сделать с помощью свойства Visible. Но мне не понятно как записать условие «точка дошла до одной из границ круга»? Это условие можно сформулировать, если б при движении шара и точки у меня изменялись их координаты, но у меня положение шара и точки изменяется не с помощью изменения координат их центров, а с помощью изменения свойств left и top. Пока не могу придумать как это сделать. Буду очень благодарна за вашу помощь.
 
S

SERGMov

Гость
#2
Если есть left и top - можно легко перейти к координатам центра путем добавления величины радиуса.
 
V

Vlanib

Гость
#3
А большой шар у тебя в каких границах перемещается и перемещается ли вобще, или он статичен и только точка на нем движется?
 
J

jmp

Гость
#4
Центр окружности
Код:
Shapes("Овал 3").Top = Shapes("Овал 2").Top + Shapes("Овал 2").Width / 2 - Shapes("Овал 3").Width / 2
Shapes("Овал 3").Left = Shapes("Овал 2").Left + Shapes("Овал 2").Height / 2 - Shapes("Овал 3").Height / 2
 
S

Sortudo

Гость
#5
Vlanib
шар перемещается в пределах поля excel, плюс при нажатии на кнопки вверх, вниз, вправо, влево - он меняет направление движения соответственно.


То есть получается, точка будет находится на границе большого круга тогда, когда расстояние между центрами точки и круга будет равно радиусу большого круга. Тогда остается вычислить расстояние между центрами окружностей, для этого нужно знать координаты центров. Но у меня координаты вообще не используются, а используются лишь left и top, но как было сказано
Если есть left и top - можно легко перейти к координатам центра путем добавления величины радиуса.
прибавив радиус я получу координаты центра и тогда по формуле вычислю расстояние...и все! Я правильно понимаю?
 
J

jmp

Гость
#6
Формула:
(x-xm)^2 + (y-ym)^2 = R^2

xm и ym - начало коордниат
 
V

Vlanib

Гость
#7
Если еще актуально, вот накатал примерный черновой проектик. Комменты лень было писать. Думаю сам разберешься. Управление чисто стрелками. Вобщем будут вопросы - пиши! ;)
 

Вложения

  • 18.1 КБ Просмотры: 14
S

Sortudo

Гость
#8
Vlanib, большое спасибо. Посмотрела файл, сделала кое-какие исправления, теперь вроде все работает :)