Gravitação

Gravitação preview image

1 collaborator

Default-person Igor Souza (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by the author
Model was written in NetLogo 6.2.0 • Viewed 40 times • Downloaded 9 times • Run 0 times
Download the 'Gravitação' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


Info tab cannot be displayed because of an encoding error

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

turtles-own
[ fx     ;; vetor força no eixo x
  fy     ;; vetor força no eixo x
  vx     ;; vetor velocidade no eixo x
  vy     ;; vetor velocidade no eixo x
  xc     ;; coordenada no eixo x (caso as particulas saiam do mundo)
  yc     ;; coordenada no eixo y  (caso as particulas saiam do mundo)
  r-sqrd ;; Quadrado da distância para o centro de massa
]

globals
[ m-xc  ;; Coordenada do click-mouse  (onde a massa ira atuar)
  m-yc  ;; Coordenada do click-mouse  (onde a massa ira atuar)
  g     ;; Constante gravitacional para diminuir a aceleração
]

;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Procedimento Montar ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;

to montar
  clear-all
  set g 0.5
  set-default-shape turtles "circle"
  create-turtles numero
  [
    if (not cores?)
    [ set color white ]
    set size 10
    fd (random-float (max-pxcor - 6))
    set vx 0
    set vy 0
    set xc xcor
    set yc ycor
  ]
  reset-ticks
end 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Procedimento em tempo de execução ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

to ativar
  if mouse-down? [
    ;; Recebe as coordenadas do mouse
    set m-xc mouse-xcor
    set m-yc mouse-ycor
    ask turtles [ gravitate ]
    enfraquecer-rastro
    tick
  ]
end 

to gravitate
  atualizar-forca
  atualizar-velocidade
  atualizar-posicao
end 

to atualizar-forca
  ;; Parecido com o procedimento 'distancexy', só que para um cenário infinito(Sem bordas)
  set r-sqrd (((xc - m-xc) * (xc - m-xc)) + ((yc - m-yc) * (yc - m-yc)))

  ;;Impede a divisão por zero prevents divide by zero
  ifelse (r-sqrd != 0)
  [
    ;; Calcula os componentes do vetor F usando lei do inverso do quadrado
    set fx ((cos (atan (m-yc - yc) (m-xc - xc))) * (massa / r-sqrd))
    set fy ((sin (atan (m-yc - yc) (m-xc - xc))) * (massa / r-sqrd))
  ]
  [
    ;; se r-sqrd = 0, então está na massa, portanto não há força.
    set fx 0
    set fy 0
  ]
end 

to atualizar-velocidade ;; Turtle Procedure
  ;; Atualiza a velocidade de cada particula
  ;; Realizando a soma com a força e velocidade anterior
  set vx (vx + (fx * g))
  set vy (vy + (fy * g))
end 

to atualizar-posicao ;; Turtle Procedure
  set xc (xc + vx)
  set yc (yc + vy)

  ifelse patch-at (xc - xcor) (yc - ycor) != nobody
  [
    setxy xc yc
    ifelse (cores?)
    [
      if (color = white)
      [ set color one-of base-colors ]
    ]
    [ set color white ]
    show-turtle
    if (taxa-desaparecimento != 100)
    [ ifelse (color = white)
      [ set pcolor red + 3 ]
      [ set pcolor color + 3 ]
    ]
  ]
  [ hide-turtle ]
end 

to enfraquecer-rastro
  ask patches with [pcolor != black]
  [ ifelse (taxa-desaparecimento = 100)
    [ set pcolor black ]
    [ if (taxa-desaparecimento != 0)
      [ fade ]
    ]
  ]
end 

to fade ;; Procedimento do Rastro
  let new-color pcolor - 8 * taxa-desaparecimento / 100
  ;; se new-color não está com o mesmo tom, então o rastro se torna preto
  ifelse (shade-of? pcolor new-color)
  [ set pcolor new-color ]
  [ set pcolor black ]
end 


; Copyright 1998 Uri Wilensky.
; See Info tab for full copyright and license.

There is only one version of this model, created about 3 years ago by Igor Souza.

Attached files

File Type Description Last updated
Gravitação.png preview Preview for 'Gravitação' about 3 years ago, by Igor Souza Download

This model does not have any ancestors.

This model does not have any descendants.