Математика |
Программа исходник |
Математический алгоритм Шаг 1 Шаг 2.
--member(whichCastmember).model(whichModel).clone(cloneName) --Description --3D command; creates a copy of the model, group, light, or camera and all of its children. The clone shares the parent of the model, group, light, or camera from which it was cloned.
--A clone of a model uses the same model resource and is assigned the same shaderList as the original model.
--If you do not specify the cloneName, or if you specify "", the clone will not be counted by the count method, but it will appear in the scene.
--Parameters --cloneName Required. Specifies the name of the new clone.
--Example --This statement creates a clone named Teapot2 from the model named Teapot, and returns a reference to the new model.
--teapotCopy = member("3D World").model("Teapot").clone("Teapot2")
global a,w,Nx,Nz,nxx,nzz
on beginsprite me my = sprite(me.spriteNum).member my.resetWorld()
a=0--Cвойство мышки w=0
my.newTexture("backdrop", #fromCastmember, member("sky")) my.camera(1).insertBackdrop(1,my.texture("backdrop"), point(0,0), 0)
--Sign = 1
---------------S1-------------------------------- myCiclx "Sphere01",2,5 --создания исходных данных по x Водим количество шаров по Nx=30 --N=Nx*Ny--количество шаров -- myCiclz "Sphere01",2,5 --создания исходных данных по z Водим количество шаров по Ny =10 ---------------S1--------------------------------
end
on exitFrame me -- if (a=1) then
-- создания обработки данных myobrabotka -26.2518,0.2417,10.9603,((-6.2518)-(-26.2518))/2,2,-1,1 -- создания обработки данных
-- создания обработки данных
end if
go the frame
end
--создания исходных данных --Определяем общее количество шаров N --N=Nx*Ny--количество шаров -- --где --Nx-количество шаров по x --Ny-количество шаров по z
-------Глобальные переменные------------------------------------- --nx=Nx-1 --nz=Nz-1 ------------------------------------------------------
on myCiclx myName,SN,Nx1
--SN=1--Номер площади
nxx=Nx1-1
repeat with nx0 = 1 to nxx --=nxx S777 = string(nx0)
member("my").model(myName).clone("SphereX"&SN&S777) end repeat end
on myCiclz myName,SN,Nz1 --SN=1--Номер площади nzz=Nz1-1 repeat with nz0 = 1 to nzz --=nzz Z777 = string(nz0) member("my").model(myName).clone("SphereZZ"&SN&Z777) end repeat end -- создания обработки данных
on myobrabotka x0,y0,z0,R,SN,Sign,xOy
------------------------Для xy-координаты------------------------------------------------------------ --Выбор системы координат xOy если 1 то x если 2 то y --Sn-Номер площади --Sign Вектор направления 1 или -1 --Производим алгоритм по формуле --X =Xo+2*R*n --где --Xo -Начальное условие --R-радиус шара --n-количество кланированных(копированных) шаров
-- 1.Определяем начальное состояние --vector( -26.2518, 0.2417, 10.9603 )
--x0 = -26.2518 -- получено по данным --put member("my").model("Sphere01").transform.position
--где --Sphere01-начальный объект или исходные данные
--2.Определяем R: -- получено по данным --put member("my").model("Sphere01").transform.position ----vector( -26.2518, 0.2417, 10.9603 ) --put member("my").model("Spherex1").transform.position -- vector( -6.2518, 0.2417, 10.9603 )
-- R=((-6.2518)-(-26.2518))/2
--put member("my").model("SphereX1").transform.position
--myLocalW = w
if xOy =2 then --выбор координаты Y
--------------------------------------------------------------
x=x0 z=z0
repeat with n = 1 to nxx --=nx
---------------------------------------------------y-----------------------------------------
if Sign = 1 then --------------------- y= y0 +2*R*n --------------------- end if --Sign = 1
if Sign = -1 then --------------------- y= y0 -2*R*n --------------------- end if --Sign = -1
--y0=0.2417 --z0=10.9603
if Sign = 1 then
if member("my").model("SphereX"&SN&n).transform.position <= vector(x,y,z) then member("my").model("SphereX"&SN&n).translate(0,1,0,#world)
end if --SphereX
end if --Sign = 1
if Sign = -1 then
if member("my").model("SphereX"&SN&n).transform.position >= vector(x,y,z) then member("my").model("SphereX"&SN&n).translate(0,-1,0,#world)
end if --SphereX
end if --Sign =- 1
end repeat
---------------------------------------------------y-----------------------------------------
------------------------Для z-координаты------------------------------------------------------------ --Производим алгоритм по формуле --Производим алгоритм по формуле --Y =Yo+2*R*n --где --Xo -Начальное условие --R-радиус шара --n-количество кланированных(копированных) шаров
-- 1.Определяем начальное состояние --vector( -26.2518, 0.2417, 10.9603 )
--z0 = 10.9603 -- получено по данным --put member("my").model("Sphere01").transform.position
--где --Sphere01-начальный объект или исходные данные
--2.Определяем R: -- получено по данным --R =Rz=Rx
--x0=-26.2518 --y0=0.2417
---------------------------------------------------y----------------------------------------- x=x0 y=y0 ---------------------------------------------------y-----------------------------------------
repeat with n = 1 to nzz --=nzz
-- x=-26.2518 -- y=0.2417 z= z0 +2*R*n
if member("my").model("SphereZZ"&SN&n).transform.position <= vector(x,y,z) then member("my").model("SphereZZ"&SN&n).translate(0,0,1,#world)
end if
end repeat
------------------Начинаем кланирование----------------------------------------------------------------------
---------------------------------------------------y-----------------------------------------
--x= x0 +2*R*n --a=-25-25 +2*10*2
if Sign = 1 then ----------------------- y=y0 +2*R*nxx ----------------------- end if --Sign = 1
if Sign = -1 then ----------------------- y=y0 -2*R*nxx ----------------------- end if --Sign = 1
--y0=0.2417 --z0=10.9603
x=x0 z=z0 ---------------------------------------------------y----------------------------------------- -- y=0.2417 -- z=10.9603 zz1=0 if member("my").model("SphereX"&SN&nxx).transform.position = vector(x,y,z) and W = 0 then -- if member("my").model("SphereX"&SN&nxx).transform.position = vector(x,y,z) and W = 0 then --S =Nx*Ny repeat with y = 1 to nxx --=nxx--x --количество шаров по x
repeat with z = 1 to nzz --=nzz--z--количество строк по z zz1 = zz1 +1
member("my").model("SphereX"&SN&y).clone("SphereZ"&SN&zz1) --put 1
end repeat--z
end repeat--x ---------------------- W =1*SN
-- myLocalW = 1 end if
------------------------------------------------------------------------------ zz=0 -----------------Выравниваем шары----------------------------------------------------------- if W =1*SN then --x0 = -26.2518
-- R =10
repeat with n = 1 to nxx --nxx--x --количество шаров по x
if Sign = 1 then -------------------- y= y0 +2*R*n -------------------- end if --Sign = 1
if Sign = -1 then -------------------- y= y0 -2*R*n -------------------- end if --Sign = 1
x= x0 z = z0 repeat with Nz = 1 to nzz --nzz--z--количество строк по z zz = zz +1
--member("my").model("SphereX"&x).clone("SphereZ"&zz) --put 1
if Sign = 1 then
if member("my").model("SphereZ"&SN&zz ).transform.position <= vector(x,y,z) then member("my").model("SphereZ"&SN&zz ).translate(0,1,0,#world)
end if
end if -- Sign
if Sign = -1 then
if member("my").model("SphereZ"&SN&zz ).transform.position >= vector(x,y,z) then member("my").model("SphereZ"&SN&zz ).translate(0,-1,0,#world)
end if
end if -- Sign
end repeat--z
end repeat--x ---------------------------
w =6*SN -- myLocalW =6 ----------------------------- end if -------------------------------------y-----------------------------------------
--LocalW =2 --k=1 if w =6*SN then zz=0 --Производим алгоритм по формуле --Z =Zo+2*R*n --где --Zo -Начальное условие --R-радиус шара --n-количество кланированных(копированных) шаров -- 1.Определяем начальное состояние --vector( -26.2518, 0.2417, 10.9603 )
-- z0 = 10.9603
-- получено по данным --put member("my").model("Sphere01").transform.position
--где --Sphere01-начальный объект или исходные данные
--x0= -26.2518 --R=10 zz=0 repeat with Nx = 1 to nxx --nxx--x --количество шаров по x
repeat with Nz = 1 to nzz --nzz--z--количество строк по z zz = zz +1
--if member("my").model("SphereZ"&zz).transform.position = vector(x0 +2*R*Nx,0.2417,10.9603) then
if Sign = 1 then
-------------------------------------y-----------------------------------------
------------------ Y1 = y0+2*R*Nx+1 ------------------
-------------------------------------y-----------------------------------------
end if -- Sign
if Sign = -1 then
-------------------------------------y-----------------------------------------
------------------ Y1 = y0-2*R*Nx-1 ------------------
-------------------------------------y-----------------------------------------
end if -- Sign
Z1= z0+2*R*Nz
-- y0=0.2417 -------------------------------------y----------------------------------------- x=x0
if member("my").model("SphereZ"&SN&zz).transform.position <= vector(x,Y1,Z1) then member("my").model("SphereZ"&SN&zz).translate(0,0,1,#world) end if -------------------------------------y----------------------------------------- --end if
end repeat--z
end repeat--x
--w2 =1
end if
end if-----Выбор системыы координат y
---------------------------------------------------------------- if xOy =1 then --выбор координаты x
y=y0 z=z0
repeat with n = 1 to nxx --=nx
if Sign = 1 then --------------------- x= x0 +2*R*n --------------------- end if --Sign = 1
if Sign = -1 then --------------------- x= x0 -2*R*n --------------------- end if --Sign = -1
--y0=0.2417 --z0=10.9603
if Sign = 1 then
if member("my").model("SphereX"&SN&n).transform.position <= vector(x,y,z) then member("my").model("SphereX"&SN&n).translate(1,0,0,#world)
end if --SphereX
end if --Sign = 1
if Sign = -1 then
if member("my").model("SphereX"&SN&n).transform.position >= vector(x,y,z) then member("my").model("SphereX"&SN&n).translate(-1,0,0,#world)
end if --SphereX
end if --Sign =- 1
end repeat
------------------------Для z-координаты------------------------------------------------------------ --Производим алгоритм по формуле --Производим алгоритм по формуле --Y =Yo+2*R*n --где --Xo -Начальное условие --R-радиус шара --n-количество кланированных(копированных) шаров
-- 1.Определяем начальное состояние --vector( -26.2518, 0.2417, 10.9603 )
--z0 = 10.9603 -- получено по данным --put member("my").model("Sphere01").transform.position
--где --Sphere01-начальный объект или исходные данные
--2.Определяем R: -- получено по данным --R =Rz=Rx
--x0=-26.2518 --y0=0.2417 x=x0 y=y0 repeat with n = 1 to nzz --=nzz
-- x=-26.2518 -- y=0.2417 z= z0 +2*R*n
if member("my").model("SphereZZ"&SN&n).transform.position <= vector(x,y,z) then member("my").model("SphereZZ"&SN&n).translate(0,0,1,#world)
end if
end repeat
------------------Начинаем кланирование---------------------------------------------------------------------- --x= x0 +2*R*n --a=-25-25 +2*10*2
if Sign = 1 then ----------------------- x=x0 +2*R*nxx ----------------------- end if --Sign = 1
if Sign = -1 then ----------------------- x=x0 -2*R*nxx ----------------------- end if --Sign = 1
--y0=0.2417 --z0=10.9603 y=y0 z=z0 -- y=0.2417 -- z=10.9603 zz1=0 if member("my").model("SphereX"&SN&nxx).transform.position = vector(x,y,z) and W = 0 then -- if member("my").model("SphereX"&SN&nxx).transform.position = vector(x,y,z) and W = 0 then --S =Nx*Ny repeat with x = 1 to nxx --=nxx--x --количество шаров по x
repeat with z = 1 to nzz --=nzz--z--количество строк по z zz1 = zz1 +1
member("my").model("SphereX"&SN&x).clone("SphereZ"&SN&zz1) --put 1
end repeat--z
end repeat--x ---------------------- W =1*SN
-- myLocalW = 1 end if
------------------------------------------------------------------------------ zz=0 -----------------Выравниваем шары----------------------------------------------------------- if W =1*SN then --x0 = -26.2518
R =10 repeat with n = 1 to nxx --nxx--x --количество шаров по x
if Sign = 1 then -------------------- x= x0 +2*R*n -------------------- end if --Sign = 1
if Sign = -1 then -------------------- x= x0 -2*R*n -------------------- end if --Sign = 1
y= y0 z = z0 repeat with Nz = 1 to nzz --nzz--z--количество строк по z zz = zz +1
--member("my").model("SphereX"&x).clone("SphereZ"&zz) --put 1
if Sign = 1 then
if member("my").model("SphereZ"&SN&zz ).transform.position <= vector(x,y,z) then member("my").model("SphereZ"&SN&zz ).translate(1,0,0,#world)
end if
end if -- Sign
if Sign = -1 then
if member("my").model("SphereZ"&SN&zz ).transform.position >= vector(x,y,z) then member("my").model("SphereZ"&SN&zz ).translate(-1,0,0,#world)
end if
end if -- Sign
end repeat--z
end repeat--x ---------------------------
w =6*SN -- myLocalW =6 ----------------------------- end if ------------------------------------------------------------------------------
--LocalW =2 --k=1 if w =6*SN then zz=0 --Производим алгоритм по формуле --Z =Zo+2*R*n --где --Zo -Начальное условие --R-радиус шара --n-количество кланированных(копированных) шаров -- 1.Определяем начальное состояние --vector( -26.2518, 0.2417, 10.9603 )
-- z0 = 10.9603
-- получено по данным --put member("my").model("Sphere01").transform.position
--где --Sphere01-начальный объект или исходные данные
--x0= -26.2518 --R=10 zz=0 repeat with Nx = 1 to nxx --nxx--x --количество шаров по x
repeat with Nz = 1 to nzz --nzz--z--количество строк по z zz = zz +1
--if member("my").model("SphereZ"&zz).transform.position = vector(x0 +2*R*Nx,0.2417,10.9603) then
if Sign = 1 then
------------------ X1 = x0+2*R*Nx+1 ------------------
end if -- Sign
if Sign = -1 then
------------------ X1 = x0-2*R*Nx-1 ------------------
end if -- Sign
Z1= z0+2*R*Nz
-- y0=0.2417
y=y0
if member("my").model("SphereZ"&SN&zz).transform.position <= vector(X1,y,Z1) then member("my").model("SphereZ"&SN&zz).translate(0,0,1,#world) end if
--end if
end repeat--z
end repeat--x
--w2 =1
end if
end if-----Выбор системыы координат x
----------------------------------------------------------
end
end
|