Математика

Физика

Химия

Биология

Техника и    технологии

 

 

Программа исходник
Загрузить

 

Математический алгоритм

Шаг 1

 

Шаг 2.
Если внутри прямоугольника со сторонами a и b (предположим , что эти числа  целые),
разместить  на равных расстояниях  друг от друга точки (окружности) так,чтобы  на
каждую единицу длины стороны прямоугольника пришлось  по одной точке(окружности)
(т.е . a  точек(окружностей) на одну сторону  и b- на другую) то
то число всех(сумма) точек(окружностей) S   будет
S =a*b
 
Смотри алгоритм

 

 

--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

 

 

 

 

Назад

 

Hosted by uCoz