---
title: Thinking Particlesでストレンジ・アトラクタ
date: 2014-02-07T00:00:00.000Z
updated: 2026-01-08T14:50:38.247Z
tags:
  - tips
  - cc-by
url: https://baku89.com/ja/tips/tp-strange-attractor
---

# Thinking Particlesでストレンジ・アトラクタ

<https://vimeo.com/84661789>

[素材一式](https://www.dropbox.com/s/xyiiz26fox795pt/strange_attractor.c4d)

Thinking Particles を使って[ストレンジ・アトラクタ](http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%88%E3%83%A9%E3%82%AF%E3%82%BF%E3%83%BC)をシミュレーションするサンプルです．

Xpresso の中身をみるとわかりますが，Python ノードで一括で座標の更新をしています．

```
def lorenz_attractor(p, a, b, c, dt):
    c /= 10
    dx = -a*p.x + a*p.y
    dy = -p.x*p.z + b*p.x - p.y
    dz = p.x*p.y - c*p.z
    p.x += dx * dt
    p.y += dy * dt
    p.z += dz * dt
```

コードを簡略化するために，オイラー法を使っています．

要するに，現在のパーティクルの座標をもとにパーティクルにかかる力を計算し，その分だけ座標をずらしている話なので，ローレンツアトラクタに限らず，汎用性は高いです．バネのような動きを作ったり，渦巻きを描かせたりなんてことも出来ます．
