г. Zmеy писал(а):
И ещё. не в обиду, но Solar SysTech как-то не очень.(Чисто мои мысли, хотите - принемайте, не хотите- не принимайте)
г. Zmеy писал(а):
Кстати если чё я к вамг. Zmеy писал(а):
Hardcore-15%Вот выкладываю реализацию астрономически правильного алгоритма движения планеты
Add(PaintBox,2372949,252,105)
{
Width=635
Height=447
Align=5
Point(Width)
Point(Height)
Point(Handle)
}
Add(MainForm,2953706,63,112)
{
Width=643
Height=481
Point(onResize)
link(onCreate,10947338:doEvent1,[(111,132)(111,209)])
link(onResize,9517210:doEvent1,[(111,139)(111,167)])
}
Add(Math,1104520,378,322)
{
OpType=3
Op2=360
link(onResult,27129:doOperation,[])
}
Add(Math,1699798,329,322)
{
OpType=2
Op2=6.28
link(onResult,1104520:doOperation,[])
link(Op1,11649503:Var1,[(335,299)])
}
Add(GL_Main,1573257,196,203)
{
Color=0
link(onInit,4487472:doInit,[])
link(onViewPort,12233474:doPerspective,[(244,216)(244,244)])
link(Handle,2372949:Handle,[(202,148)(279,148)])
}
Add(Math,11035262,259,161)
{
OpType=3
link(Op1,2372949:Width,[])
link(Op2,2372949:Height,[])
}
Add(Hub,10947338,126,203)
{
link(onEvent1,1573257:doInit,[])
link(onEvent2,7199376:doWork2,[])
}
Add(Hub,9517210,126,161)
{
link(onEvent1,11035262:doOperation,[])
link(onEvent2,7199376:doWork1,[(165,174)])
}
Add(HubEx,7199376,161,210)
{
link(onEvent,1573257:doViewPort,[])
}
Add(Timer,5786386,105,308)
{
Interval=20
link(onTimer,634658:doEvent1,[])
}
Add(Hub,634658,154,308)
{
OutCount=5
link(onEvent1,15697590:doClear,[])
link(onEvent2,15697590:doPushMatrix,[])
link(onEvent3,15604069:doPushMatrix,[])
link(onEvent4,15697590:doPopMatrix,[(182,335)(182,328)])
link(onEvent5,1573257:doFlip,[(182,342)(182,223)])
}
Add(GL_Perspective,12233474,259,238)
{
link(Aspect,11035262:Result,[])
}
Add(GL_Light,14289992,525,203)
{
link(Point,8948124:Point3D,[])
}
Add(GL_Options,11849752,378,203)
{
link(onEvent,16762480:doSet,[])
}
Add(GL_Material,16762480,427,203)
{
link(onSet,1325132:doEnabled,[])
}
Add(GL_Options,1325132,476,203)
{
Flag=2
link(onEvent,14289992:doEnabled,[])
}
Add(GL_Point3D,8948124,525,147)
{
}
Add(GL_GluTools,4487472,329,203)
{
link(onInit,11849752:doEnabled,[])
}
Add(GL_Sphere,8354190,770,322)
{
Radius=0.08
Slices=25
Stacks=25
link(onDraw,2596187:doPopMatrix,[])
link(Radius,114248:Value,[])
}
Add(Gl_Translate,6506827,672,322)
{
link(onTranslate,7018867:doColor,[])
link(Z,11649503:Var2,[])
}
Add(GL_Rotate,15834536,623,322)
{
Y=1
link(onRotate,6506827:doTranslate,[])
}
Add(GL_Color,7018867,721,322)
{
Color=12632256
link(onColor,8354190:doDraw,[])
}
Add(GL_GTools,15604069,280,322)
{
Point(doPushMatrix)
link(onEvent,1699798:doOperation,[])
}
Add(GL_GTools,2596187,819,322)
{
Point(doPopMatrix)
}
Add(Memory,114248,770,273)
{
Default=String(0.08)
}
Add(GL_GTools,15697590,196,308)
{
Point(doClear)
Point(doPushMatrix)
Point(doPopMatrix)
}
Add(Counter,4584492,574,322)
{
Max=360
Point(doStep)
Point(Step)
link(onNext,15834536:doRotate,[])
link(Step,13328461:Result,[(580,310)(531,310)(531,366)(482,366)])
}
Add(GetDataEx,11649503,686,294)
{
link(Data,16104:Text,[])
}
Add(Edit,16104,686,259)
{
Left=10
Top=10
Text="1"
}
Add(Edit,7661880,574,371)
{
Left=60
Top=10
Text="1"
}
Add(Hub,16375602,525,322)
{
OutCount=3
link(onEvent1,4584492:doStep,[(560,328)(560,349)])
link(onEvent2,7661880:doText,[(560,335)(560,377)])
link(onEvent3,4584492:doNext,[(560,342)(560,328)])
}
Add(Math,27129,427,322)
{
OpType=3
Op2=0.01744
link(onResult,13328461:doOperation,[])
}
Add(Math,13328461,476,322)
{
OpType=3
link(onResult,16375602:doEvent1,[])
link(Op1,15811127:Value,[])
link(Op2,27129:Result,[(489,310)(468,310)(468,366)(433,366)])
}
Add(Memory,15811127,476,259)
{
Default=Integer(1)
}
Из формулы длинны окружности, в нашем случае это орбита,
ℓ=2пR
получаем длину орбиты, которую потом же делим на 360°, в итоге получаем зависимость пройденного расстояния от градуса на который повернули планету относительно оси(в моем варианте это ось Y)
Высчитываем коэффициент нормального движения планеты, то есть зависимость пройденного расстояния от градуса на который повернули планету, за нормально движение можно принять совершенно любую планету, я взял скорость планеты радиус орбиты которой 1 за нормальную и получил:
[i]ℓ=2*3.14*1
ℓ=6.28
Отношение пройденного расстояния от градуса на который была повернута планета=6.28/360
Итого 0.017(4)[/i]
Теперь определим во сколько раз быстрее движется планета относительно нормальной:
V/0.01744=кол-во раз.
теперь определим на сколько градусов должна перемещаться планета за интерацию, что-бы соблюдать скорось:
1/кол-во раз.
ℓ=2пR
получаем длину орбиты, которую потом же делим на 360°, в итоге получаем зависимость пройденного расстояния от градуса на который повернули планету относительно оси(в моем варианте это ось Y)
Высчитываем коэффициент нормального движения планеты, то есть зависимость пройденного расстояния от градуса на который повернули планету, за нормально движение можно принять совершенно любую планету, я взял скорость планеты радиус орбиты которой 1 за нормальную и получил:
[i]ℓ=2*3.14*1
ℓ=6.28
Отношение пройденного расстояния от градуса на который была повернута планета=6.28/360
Итого 0.017(4)[/i]
Теперь определим во сколько раз быстрее движется планета относительно нормальной:
V/0.01744=кол-во раз.
теперь определим на сколько градусов должна перемещаться планета за интерацию, что-бы соблюдать скорось:
1/кол-во раз.



Поиск
Друзья
Администрация