|
2D-программирование Вопросы, касающиеся двумерного программирования |
30.09.2009, 20:04
|
#1
|
Мастер
Регистрация: 23.09.2009
Адрес: ленобласть
Сообщений: 1,189
Написано 447 полезных сообщений (для 2,526 пользователей)
|
Плавное вращение..м?
как с помощью фУНКЦИи сделать плавное вращение..
например указываешь новый градус то старый плавно перетекает в новый.
хотя уже есть одна мысль как это реализовать, но довольно муторный способ, ктомуже может ктото уже занимался подобным..
вот примерно такое:
(только тут плавно перемещется шарик, а градус тупо направлен на него)
Graphics 640,480,16,2
SetBuffer BackBuffer()
Colore=160
clsColore=240
ClsColor clsColore,clsColore,clsColore
Color Colore,Colore,Colore
Global dix#[2],sx#[2],snx#[2]
Local x#,y#,dx#,dy#,rad#,dist#,mx#,my#,nx#,ny#
Repeat
If MouseDown(1) mx=MouseX():my=MouseY()
rad#=ATan2(y-240,x-320)
Line 320,240,320+Cos(rad)*100,240+Sin(rad)*100
x=Newdigit(mx,1)
y=Newdigit(my,2)
Oval x-5,y-5,10,10
Flip:Cls:If KeyDown(1) End
Forever
Function Newdigit(ssx#=0,nu=1)
s#=dix[nu]-ssx
dix[nu]=dix[nu]-s/10
Return dix[nu]
End Function
Function col(col)
Color col,col,Col
End Function
|
(Offline)
|
|
01.10.2009, 23:50
|
#2
|
Разработчик
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений (для 36 пользователей)
|
Ответ: Плавное вращение..м?
Я поьлзуюсь этими хитрыми и в то же время простыми функциями
Function track_YR_Smooth(e1,e2,smothness#=100.0,smeshen#=0)
PositionEntity gPivot1,EntityX(e1),EntityY(e1)+smeshen,EntityZ(e1)
PointEntity gPivot1,e2
RotateEntity e1, 0,curveAngle#(EntityYaw(gPivot1),EntityYaw(e1),smothness#),0
End Function
Function curveangle#( newangle#,oldangle#,increments#)
If increments>1
If (oldangle+360)-newangle<newangle-oldangle
oldangle=360+oldangle
End If
If (newangle+360)-oldangle<oldangle-newangle
newangle=360+newangle
End If
oldangle=oldangle-(oldangle-newangle)/increments
End If
If increments<=1
Return newangle
End If
Return oldangle
End Function
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо CRASHER за это полезное сообщение:
|
|
02.10.2009, 00:04
|
#3
|
Мастер
Регистрация: 23.09.2009
Адрес: ленобласть
Сообщений: 1,189
Написано 447 полезных сообщений (для 2,526 пользователей)
|
Ответ: Плавное вращение..м?
Сообщение от CRASHER
Я поьлзуюсь этими хитрыми и в то же время простыми функциями
Function track_YR_Smooth(e1,e2,smothness#=100.0,smeshen#=0)
PositionEntity gPivot1,EntityX(e1),EntityY(e1)+smeshen,EntityZ(e1)
PointEntity gPivot1,e2
RotateEntity e1, 0,curveAngle#(EntityYaw(gPivot1),EntityYaw(e1),smothness#),0
End Function
Function curveangle#( newangle#,oldangle#,increments#)
If increments>1
If (oldangle+360)-newangle<newangle-oldangle
oldangle=360+oldangle
End If
If (newangle+360)-oldangle<oldangle-newangle
newangle=360+newangle
End If
oldangle=oldangle-(oldangle-newangle)/increments
End If
If increments<=1
Return newangle
End If
Return oldangle
End Function
|
мегаспасибо! то что нужно))
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:54.
|