Day 7
(2.5)

列ごとに位相をずらしたSin波で球体グリッドを動かす

#grid#sphere#wave#phase
列ごとに位相をずらしたSin波で球体グリッドを動かすのサムネイル

✅ Inputs

  • `count_x`: int – X方向のグリッド数(列数)
  • `count_y`: int – Y方向のグリッド数(行数)
  • `spacing`: float – 球体間の距離
  • `amplitude`: float – Sin波の振幅(Z方向への最大オフセット)
  • `radian`: float – Y方向全体に適用される波の角度(例:`2π`で1波)
  • `phase_offset`: float – 各列ごとに加算する位相シフト量(ラジアン)
  • `sphere_radius`: float – 各球体の半径

✅ Outputs

  • `results`: list of `Sphere` – Z方向にSin波形状を持ち、列ごとに位相の異なる球体群

✅ Code

import Rhino.Geometry as rg
import math

spheres = []

for i in range(count_x):
    for j in range(count_y):
        x = i * spacing
        y = j * spacing

        t = float(j) / (count_y - 1)
        base_angle = t * radian

        angle = base_angle + i * phase_offset
        z_offset = math.sin(angle) * amplitude

        center = rg.Point3d(x, y, z_offset)
        spheres.append(rg.Sphere(center, sphere_radius))

results = spheres