Куча говна / Говнокод #27881 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
template distance(b1, b2: AstronomicalBody): float64 = dist(b1.pos, b2.pos)

proc attractionForce(body_1, body_2: AstronomicalBody): DVec3 =
  let r = distance(body_1, body_2)
  let module = (body_1.m * body_2.m) / (r.pow(2))
  return normalize(body_2.pos - body_1.pos) * module

proc updateForce(body: var AstronomicalBody, bodies: seq[AstronomicalBody]) =
  body.F = dvec3(0, 0, 0)
  for other_body in bodies:
    if other_body != body:
      body.F += attractionForce(body, other_body)

template acceleration(body: AstronomicalBody): float64 = body.F / body.m

template updateAcceleration(body: var AstronomicalBody) = body.a = acceleration(body)

template velocity(body: AstronomicalBody, dt: float64) = body.V + body.F.normalize * body.a * dt

template updateVelocity(body: var AstronomicalBody, dt: float64) = body.V = velocity(body, dt)

template updatePosition(body: var AstronomicalBody, dt: float64) = body.pos += (body.V * dt)

proc updateProperties(body: var AstronomicalBody, bodies: seq[AstronomicalBody], dt: float64) =
  body.updateForce(bodies)
  body.updateAcceleration()
  body.updateVelocity(dt)
  body.updatePosition(dt)

Как же "Nim" хорош, как же "Nim" красив, изящен и элегантен!

Запостил: JloJle4Ka JloJle4Ka, (Updated )

Комментарии (9) RSS

  • Дампик:

    А его нет, почему-то ничего не компилируется (((
    Ответить
  • "template distance(b1, b2: AstronomicalBody): float64 = dist(b1.pos, b2.pos)" что это такое? Я вас спрашиваю... какой тут нах темплейт?
    Ответить
    • Оно на этапе конпеляции подставится куда нужно и раскроется как нужно.

      Где-то мы обсасывали сишный мокрос, где надо куда-то "do {} while (0)" вставить, чтобы программу не попидарасило. А тут оно всё само себя самого это самывает!

      А ваш компилятор (особенно C++) так умеет?
      Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8