forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Плавное вращение..м? (http://forum.boolean.name/showthread.php?t=9292)

pepel 30.09.2009 20:04

Плавное вращение..м?
 
как с помощью фУНКЦИи сделать плавное вращение..
например указываешь новый градус то старый плавно перетекает в новый.

хотя уже есть одна мысль как это реализовать, но довольно муторный способ, ктомуже может ктото уже занимался подобным..


вот примерно такое:
(только тут плавно перемещется шарик, а градус тупо направлен на него)

Код:

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


CRASHER 01.10.2009 23:50

Ответ: Плавное вращение..м?
 
Я поьлзуюсь этими хитрыми и в то же время простыми функциями

Код:

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


pepel 02.10.2009 00:04

Ответ: Плавное вращение..м?
 
Цитата:

Сообщение от CRASHER (Сообщение 120302)
Я поьлзуюсь этими хитрыми и в то же время простыми функциями

Код:

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


мегаспасибо! то что нужно)) :super: :super: :super:


Часовой пояс GMT +4, время: 02:49.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot