You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整max(sin(x),0)绘制的山丘间距且不改变尺寸?

调整Desmos中山丘间距但保留尺寸的方法

嘿,这个问题我刚好折腾过,其实核心是要把山丘的形状和重复的周期分开控制——毕竟我们要保留山丘的大小,只调整它们之间的空隙对吧?

原函数的局限

先回顾下你用的max(sin(x), 0):它在每个[2nπ, (2n+1)π]区间生成宽度为π、高度为1的山丘,山丘之间的平地(间距)也是π,因为[(2n+1)π, (2n+2)π]区间函数值为0。默认的周期把山丘和间距绑定死了,直接改sin的参数会连山丘大小一起变,这不是我们要的。

解决思路:固定山丘形状,自定义周期间距

我们需要让山丘每隔(山丘宽度 + 自定义间距)的距离重复一次,同时山丘本身的尺寸完全不变。具体操作如下:

  1. 定义间距变量(可选但推荐)
    在Desmos里新建一个滑块变量d,用来控制山丘之间的平地长度。这样你可以拖动滑块实时调整间距,不用手动改数值。

  2. 使用自定义周期的函数
    把原函数替换成下面的表达式:

    max( sin( x - d * floor(x/(π + d)) ), 0 )
    

原理拆解

  • floor(x/(π + d)):计算当前x处于第几个“山丘+平地”的完整周期;
  • d * floor(...):将当前周期的起始点平移,留出我们设置的间距d;
  • x - d * floor(...):把每个周期内的x映射回[0, π + d)区间,其中前π个单位是山丘(sin在[0,π]为正,max后保留原有形状),后d个单位是平地(sin在[π, π+d]为负,max后为0);
  • 这样一来,山丘的宽度始终是π、高度始终是1,间距完全由d控制:d越大,山丘之间的空隙越宽;d越小,空隙越窄。

举个例子

  • 想要间距是原来的2倍,就把d设为2π;
  • 想要间距缩小一半,就把d设为π/2;
  • 甚至可以把d设为0,让山丘完全连在一起,变成一个连续的波浪。

内容的提问来源于stack exchange,提问作者Seyed Morteza Kamali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:34:28