Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Visual Basic. Движение объекта (координаты линии) по окружности

Иван Иванов Мудрец (17793), закрыт 7 лет назад
Уже голову сломал, как можно сделать движении одной координаты линии (x1,y1) по окружности, как у стрелок часов. Так, чтобы линия поворачивалась на 1/60 за 1 секунду работы таймера?

Пытался сделать что-то такое:

Dim angle As Integer
angle = angle + 1
If angle >= 360 Then angle = 0
Me.LineShape1.X1 = LineShape1.X1 + Math.Round(67 * Math.Cos(angle * Math.PI / 180))
Me.LineShape1.Y1 = LineShape1.Y1 - Math.Round(67 * Math.Sin(angle * Math.PI / 180))

Но ничего не получилось. Линия поворачивается, но с каждым шагом все меньше. И в конце концов устремляется к определенному значению координата X1 Y1

Как сделать, чтобы второй конец линии шел строго по кругу с радиусом 67пкс?
Лучший ответ
李西青 Просветленный (42571) 7 лет назад
Зафиксируй центр окружности, вокруг которого крутишься.
Например
x0 = x1+R
y0 = y1
и дальше в цикле
x1 = x0 - R cos (angle * pi/180)
y1 = y0 + R sin (angle * pi/180)

Либо как у тебя, но там должен стоять не (67) * cos/sin, а (67 * pi / 180) * cos/sin
И надо считать цислах с плавающей точкой, иначе из-за округления очень быстро получится пакость
Иван ИвановМудрец (17793) 7 лет назад
А как считать в числах с плавающей точкой, если координаты могут быть только целыми числами?
李西青 Просветленный (42571) считаешь и хранишь с плавающей точкой, округляешь только при вызове функций вывода на экран
Остальные ответы
Похожие вопросы