• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

Sortudo

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

SERGMov

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

Vlanib

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

jmp

Центр окружности
Код:
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

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


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

jmp

Формула:
(x-xm)^2 + (y-ym)^2 = R^2

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

Vlanib

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

Вложения

  • Ball.rar
    18,1 КБ · Просмотры: 140
S

Sortudo

Vlanib, большое спасибо. Посмотрела файл, сделала кое-какие исправления, теперь вроде все работает :)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!