0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

rex0220 計算式プラグイン サイン波表示

Last updated at Posted at 2025-09-10

計算式プラグインで、スペース項目にサイン波を表示してみます。

概要

振幅、周波数等を与えて、スペース項目にSVGでサイン波を表示します。
計算式プラグインで、SVG タグを組み立てます。

2025-09-10_11h31_31.png

パラメータ説明

項目 役割 指定例 備考
振幅 (A) 波の高さ(px) 40 大きいほど上下に大きく振れる
周波数 (FREQ) 1 幅あたりの波の回数 1 2 にすると 2 波入ります
位相 (PHASE) 度数法の位相シフト 0 90 で 1/4 周期シフト
横幅 (W) SVG 幅(px) 600 viewBox と一致
高さ (H) SVG 高さ(px) 200 BASE の基準に利用
基準線 (BASE) 0 ラインの Y 座標 100 下に行くほど値が大きい(SVG座標)
サンプル点数 (N) 折れ線の分解能 200 多いほど滑らか(描画負荷↑)

補足:M_SIN度数法で角度を受け取ります。式内では M_RAD で度→ラジアンに変換し、(x/W)*360*FREQ + PHASE を角度として使っています。

表示例

2025-09-10_11h44_23.png

2025-09-10_11h45_10.png

2025-09-10_11h56_58.png

操作例

2025-09-10_11h38_14.gif

アプリ設定

スペース項目を配置して要素ID「sp1」をセット

2025-09-10_11h42_10.png

計算式プラグイン設定

スペース項目に計算式を設定します。

2025-09-10_11h39_53.png

OPTION: 非同期計算

// sp1:(sp1) SPACER
// サイン波
LET(
  A, 振幅,
  FREQ, 周波数,
  PHASE, 位相,
  W, 横幅,
  H, 高さ,
  N, サンプル点数,
  BASE, IF(基準線 > 0, 基準線, 高さ / 2),

  POINTS, JOIN(
    ARRAY_FOR(N, i,
      LET(
        x, (W * i) / (N - 1),
        y, BASE - (A * M_SIN(M_RAD((x / W) * 360 * FREQ + PHASE))),
        x & "," & y
      )
    ),
    " "
  ),

  STYLE, TAG("style", JOIN(ARRAY(
    ".sine-wrap{display:inline-block;background:#fff;border:1px solid #ccc;padding:8px;border-radius:6px;}",
    ".sine-axis{stroke:silver;stroke-dasharray:4 4;}",
    ".sine-line{fill:none;stroke:blue;stroke-width:2;}"
  ), NEWLINE(), 1)),

  SVG, TAG("svg",
    ATTR(
      "xmlns","http:/"&"/www.w3.org/2000/svg",
      "width",横幅,"height",高さ,
      "viewBox","0 0 " & 横幅 & " " & 高さ
    ),
    TAG("rect", ATTR("x","0","y","0","width",横幅,"height",高さ,"fill","white")),
    TAG("line", ATTR("class","sine-axis","x1","0","y1",BASE,"x2",横幅,"y2",BASE)),
    TAG("polyline", ATTR("class","sine-line","points",POINTS))
  ),

  TAGS_HTML(ARRAY(STYLE, TAG("div", ATTR("class","sine-wrap"), SVG)))
)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?