всем привет.
Уважаемые спецы. Кто хорошо разбирается в контроллерах, подскажите пожалуйста, возможно ли такое реализовать с их помощью?
осторожно - думает сек 15
Будет ли стоить овчинка выделки? (в плане скорости расчетов и др.)
И еще. Возможно ли создать с помощью контроллеров взаимодействие в реальном времени(не timer)? К примеру, что бы можно было бросать шарик мышкой...?
Уважаемые спецы. Кто хорошо разбирается в контроллерах, подскажите пожалуйста, возможно ли такое реализовать с их помощью?
осторожно - думает сек 15
Код:
(
try(delete objects)catch()
units.SystemType = #meters
--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
local startFrame = 0,
endFrame = 10000,
byFrame = 1,
dt = 1.0d0/250.0d0,
theObjCount = 10
--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
local V = [0.0d0,0.0d0,0.0d0]
local ArrObjects = #(), ArrVelosity = #(), ArrMass = #(), ArrPos = #(), SumArrPoss = #(), ArrRadius = #(), counter = 1
local theG = 6.67428d-011
local Mz = 5.9736d+012
for i = 1 to theObjCount do
(
local p = 20.0, a = 1.0
local SpOne = sphere pos:(random [p,p,p] [-p, -p, -p]) radius:(random 1 1)
V = random [a,a,a] [-a, -a, -a]
append ArrObjects SpOne
append ArrVelosity V
append ArrMass (Mz*SpOne.radius)
append ArrPos SpOne.pos
append ArrRadius SpOne.radius
)
for k = startFrame to endFrame by byFrame do
(
append SumArrPoss (deepCopy ArrPos)
for i = 1 to theObjCount do
(
local SumForceVector = [0.0d0, 0.0d0, 0.0d0]
local M1 = ArrMass[i]
for j = 1 to theObjCount do
(
local M2 = ArrMass[j]
if i != j do
(
local d1 = (length(ArrPos[j] - ArrPos[i]))^2
local d2 = (length(ArrPos[j] - ArrPos[i]))^4
local F1 = (theG*M2*M1/d1)*(normalize (ArrPos[j] - ArrPos[i]))
local F2 = -140.0*(theG*M2*M1/d2)*(normalize (ArrPos[j] - ArrPos[i]))
SumForceVector += (F1 + F2)
)
)
for j = 1 to theObjCount do
(
local M2 = ArrMass[j]
local dV12 = length (ArrPos[j] - ArrPos[i])
local dRad = ArrRadius[i] + ArrRadius[j]
if i != j do
(
if dV12 <= dRad do
(
local n = normalize (ArrPos[j] - ArrPos[i])
local t = normalize (cross (cross n ArrVelosity[i]) n)
local V1n = (normalize n)*(dot n ArrVelosity[i])
local V1t = (normalize t)*(dot t ArrVelosity[i])
V1n = V1n*(M1 - M2)/(M1+M2)
ArrVelosity[i] = V1n + V1t
)
)
)
ArrPos[i] += ArrVelosity[i]*dt
local dV = (normalize SumForceVector)*((length SumForceVector)*dt/M1)
ArrVelosity[i] += dV
)-- end i
)--end k
animate on
for t = startFrame to endFrame by byFrame do
(
at time t
(
local numO = ArrObjects.count
for i = 1 to numO do
(
ArrObjects[i].pos = SumArrPoss[counter][i]
)
counter += 1
)--end t
)
animationRange = interval startFrame endFrame
)
И еще. Возможно ли создать с помощью контроллеров взаимодействие в реальном времени(не timer)? К примеру, что бы можно было бросать шарик мышкой...?