поворот спрайта вокруг своей оси

Предыдущая тема Следующая тема Перейти вниз

поворот спрайта вокруг своей оси

Сообщение  Gebogen в Пн Янв 18, 2010 11:42 pm

screen 14
dim sp(99)
print "R"
for x=0 to 7
for y=0 to 7
if point(x,y)<>0 then
sp(nu)=x
nu=nu+1
sp(nu)=y
nu=nu+1
endif
next
next
do
if r>359 then r=0
if nu>99 then
nu=0
r=r+1
sleep 133
cls
endif
x=sp(nu)
nu=nu+1
y=sp(nu)
nu=nu+1
xx=x*cos(r)-y*sin(r)
yy=x*sin(r)+y*cos(r)
pset(100+x+xx,100+y+yy),15'x'Cosq - y'Sinq
loop until inkey$<>""

мля, что то тут не так, помагите что ли *)


Последний раз редактировалось: Gebogen (Ср Янв 20, 2010 6:33 pm), всего редактировалось 1 раз(а)

Gebogen

Сообщения : 6
Дата регистрации : 2009-12-01

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: поворот спрайта вокруг своей оси

Сообщение  tux в Вт Янв 19, 2010 11:11 am

и всетаки я напутал малек, ща исправил Smile
Код:
' pX, pY - точка, относительно которой поворачиваем
' pXold, pYold - точка, которую поворачиваем
' pAngl - угол поворота
' pXnew, pYnew - новые координаты точки
pAnglNew=atan2(pYold-pY, pXold-pX)+pAngl
pGip=sqr((pXold-pX)^2+(pYold-pY)^2)
pXnew=cos(pAnglNew)*pGip+pXold
pYnew=sin(pAnglNew)*pGip+pYold
avatar
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 28
Откуда : Сибирь

Посмотреть профиль http://tux.nsk.ru/

Вернуться к началу Перейти вниз

Re: поворот спрайта вокруг своей оси

Сообщение  Gebogen в Ср Янв 20, 2010 6:32 pm

tux пишет:и всетаки я напутал малек, ща исправил Smile
Код:
' pX, pY - точка, относительно которой поворачиваем
' pXold, pYold - точка, которую поворачиваем
' pAngl - угол поворота
' pXnew, pYnew - новые координаты точки
pAnglNew=atan2(pYold-pY, pXold-pX)+pAngl
pGip=sqr((pXold-pX)^2+(pYold-pY)^2)
pXnew=cos(pAnglNew)*pGip+pXold
pYnew=sin(pAnglNew)*pGip+pYold

мля, както перебрал все функции, а так нечего неполучилось, попробуй прекрутить это к примеру на вверху, спасибо *)

Gebogen

Сообщения : 6
Дата регистрации : 2009-12-01

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: поворот спрайта вокруг своей оси

Сообщение  tux в Ср Янв 20, 2010 8:01 pm

и серавно малек неправильно написал, но ет мелочи, кароче во как в итоге должно выглядеть
Код:
screen 14
dim sp(99) as integer
dim as integer x, y, nu, r, xx, yy
dim as single pX=100, pY=100 'точка, относительно которой поворачиваем
dim as single pXold, pYold 'точка, которую поворачиваем
dim as single pAnglNew, pGip
dim as single pAngl 'угол поворота
dim as single pXnew, pYnew 'новые координаты точки

print "R"
for x=0 to 7
   for y=0 to 7
      if point(x,y)<>0 then
         sp(nu)=x
         nu=nu+1
         sp(nu)=y
         nu=nu+1
      endif
   next
next
do
   if r>359 then r=0
   if nu>99 then
      nu=0
      r=r+1
      pAngl=r/180*3.14
      sleep 10
      cls
   endif
   x=sp(nu)
   nu=nu+1
   y=sp(nu)
   nu=nu+1
pXold=pX+x
pYold=pY+y
pAnglNew=atan2(pYold-pY, pXold-pX)+pAngl
pGip=sqr((pXold-pX)^2+(pYold-pY)^2)
pXnew=cos(pAnglNew)*pGip+pX
pYnew=sin(pAnglNew)*pGip+pY
   pset(pXnew, pYnew), 15
loop until inkey$<>""
avatar
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 28
Откуда : Сибирь

Посмотреть профиль http://tux.nsk.ru/

Вернуться к началу Перейти вниз

Re: поворот спрайта вокруг своей оси

Сообщение  Gebogen в Ср Янв 20, 2010 9:02 pm

спасибо, но серовно крутится только вокруг левого верхнего угла, а нецентра, как заставить крутится воокруг центра

Gebogen

Сообщения : 6
Дата регистрации : 2009-12-01

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: поворот спрайта вокруг своей оси

Сообщение  tux в Чт Янв 21, 2010 10:27 am

ну мона менять pXold, pYold
к примеру както так
Код:
screen 14
dim sp(99) as integer
dim as integer x, y, nu, r, xx, yy
dim as single pX=100, pY=100 'точка, относительно которой поворачиваем
dim as single pXold, pYold 'точка, которую поворачиваем
dim as single pAnglNew, pGip
dim as single pAngl 'угол поворота
dim as single pXnew, pYnew 'новые координаты точки

print "R"
for x=0 to 7
  for y=0 to 7
      if point(x,y)<>0 then
        sp(nu)=x
        nu=nu+1
        sp(nu)=y
        nu=nu+1
      endif
  next
next
do
  if r>359 then r=0
  if nu>99 then
      nu=0
      r=r+1
      pAngl=r/180*3.14
      sleep 10
      cls
  endif
  x=sp(nu)
  nu=nu+1
  y=sp(nu)
  nu=nu+1
pXold=pX+x-3
pYold=pY+y-3
pAnglNew=atan2(pYold-pY, pXold-pX)+pAngl
pGip=sqr((pXold-pX)^2+(pYold-pY)^2)
pXnew=cos(pAnglNew)*pGip+pX
pYnew=sin(pAnglNew)*pGip+pY
  pset(pXnew, pYnew), 15
loop until inkey$<>""
avatar
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 28
Откуда : Сибирь

Посмотреть профиль http://tux.nsk.ru/

Вернуться к началу Перейти вниз

Re: поворот спрайта вокруг своей оси

Сообщение  Gebogen в Чт Янв 21, 2010 3:56 pm

спасибо, думаю что тема может быть закрыта *), tux +1

Gebogen

Сообщения : 6
Дата регистрации : 2009-12-01

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: поворот спрайта вокруг своей оси

Сообщение  Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Предыдущая тема Следующая тема Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения