Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Как задать угол перемещения объекта? Добавлено: 03.12.03 13:46  

Автор вопроса:  Crusty

Я сейчас пытаюсь делать игрушку, в которой объект может поворачиваться вокруг своей оси и двигаться по направлению, на которое повёрнут. Но с движением по градусам есть загвоздка, которую я не могу решить. Кто нибудь, подскажите формулу!

Движение:

FoxRotate Form1.hDC, lN, tN, picRot.hDC, picRot.Image.Handle, &H8000000F, rotates, chkRotMask + chkRotSmooth * 2

где

rotates - градусы

ln - Top объекта

tN - Left объекта

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 NightVolk



Вопросов: 12
Ответов: 21
 Web-сайт: dopesoft.narod.ru
 Профиль | | #1
Добавлено: 05.12.03 18:55

Я не до конца понял эту функцию. Могу предложить простой вариант

Траектория движения - прямая. Следовательно это движение можно задать уравнением

y = k*x + b, где k - это тангенс угла наклона твоей прямой, b - это на сколько сдвигается твоя линия вверх/вниз. Просто подставляешь в x координату по x и получаешь y. Вот и все:)

Ответить

Номер ответа: 2
Автор ответа:
 Crusty



Вопросов: 3
Ответов: 6
 Профиль | | #2 Добавлено: 05.12.03 20:34

Да не выходит! Тело движеться каждый раз по кругу!

Полное описание функции:

Private Declare Function FoxBrightness Lib "FoxCBmp.dll" (ByVal DstDC As Long, ByVal DstBmp As Long, ByVal SrcDC As Long, ByVal SrcBmp As Long, ByVal TransColor As Long, ByVal Brightness As Long, ByVal Flags As Long) As Long

Private Declare Function FoxBlendIn Lib "FoxCBmp.dll" (ByVal DstDC As Long, ByVal DstX As Long, ByVal DstY As Long, ByVal SrcDC As Long, ByVal SrcBmp As Long, ByVal TransColor As Long, ByVal Alpha As Byte, ByVal Flags As Long) As Long

Private Declare Function FoxRotate Lib "FoxCBmp.dll" (ByVal DstDC As Long, ByVal DstX As Long, ByVal DstY As Long, ByVal SrcDC As Long, ByVal SrcBmp As Long, ByVal TransColor As Long, ByVal Alpha As Double, ByVal Flags As Long) As Long

Private Declare Function GetTickCount Lib "kernel32" () As Long

Dim CurX As Long, CurY As Long

Dim OldTime As Long

Public Sub HScroll()

Me.Cls

OldTime = GetTickCount

FoxRotate Form1.hDC, lN, tN, picRot.hDC, picRot.Image.Handle, &H8000000F, rotates, chkRotMask + chkRotSmooth * 2

Caption = GetTickCount - OldTime

Me.Refresh

End Sub

Ещё на форме есть 2 чекбокса chkRotSmooth и chkRotMask. И тело под именем picRot.

Функция созданна для поворота картинки.

Ответить

Страница: 1 |

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



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