Javascript 如何实现这个正弦函数?

Javascript 如何实现这个正弦函数?,javascript,math,graph,Javascript,Math,Graph,为了实现平滑的交替动画,我想在javascript中使用一个类似正弦的函数,它看起来应该像一个红色的图形 蓝色图形表示常规正弦函数: var blueY = Math.sin(x); 最后,我想修改该图,使其与下面的蓝色图相似: // scaled and translated sine-graph var blueY = (1 - Math.sin(x * Math.PI / 2)) / 2; 如何完成一个红色图表?我只需要一个在给定x值时返回y值的单行程序。图形不应具有角点以实现平滑

为了实现平滑的交替动画,我想在javascript中使用一个类似正弦的函数,它看起来应该像一个红色的图形

蓝色图形表示常规正弦函数:

var blueY = Math.sin(x);

最后,我想修改该图,使其与下面的蓝色图相似:

// scaled and translated sine-graph
var blueY = (1 - Math.sin(x * Math.PI / 2)) / 2;

如何完成一个红色图表?我只需要一个在给定x值时返回y值的单行程序。图形不应具有角点以实现平滑动画

附加信息:绝大多数点的绝对值应低于正弦函数的绝对值(极值点附近除外),以产生更清晰的动画


您可以使用以下函数:
y=0.5*Math.sign(x)*Math.sign(Math.abs(x)%4-2)*(1-Math.pow(Math.abs(Math.abs(x)%2-1),1.5)+0.5
(也可以使用其他值代替1.5)

与正弦函数的比较(蓝色):


您可以使用以下函数:
y=0.5*Math.sign(x)*Math.sign(Math.abs(x)%4-2)*(1-Math.pow(Math.abs(Math.abs(x)%2-1),1.5)+0.5
(也可以使用其他值代替1.5)

与正弦函数的比较(蓝色):


请添加一些有关您希望绘制的输入类型的信息。它是一个由x值组成的一维数组,还是别的什么?我只需要这样一个红色图形的公式,给定x值,它返回y值(看起来应该像我的代码)。我不明白你说的“类正弦”是什么意思。红色看起来是手绘的。你想让它看起来像那样还是沿着一条真正的正弦曲线?你只是想把它限制在0到7之间吗?听起来你需要的只是一个分段函数。顶部和底部之间呈线性,在边之间表现为正弦曲线。您可以将其实现为实际的分段函数。那将是一种方式。另一种方法是放弃公式,只需手动移动对象即可。您可以使用
y=-Math.sign(x)*Math.sign(Math.abs(x)%4-2)*(1-Math.pow(Math.abs(Math.abs(x)%2-1),1.5))
。除了1.5,您还可以插入任何其他值(值请添加一些关于您希望绘制的输入类型的信息。它是x值的一维数组还是其他?我只需要这样一个红色图形的公式,给定一个x值,它返回y值(它应该看起来像我的代码)。我不明白“类正弦”是什么意思。红色看起来是手绘的。您希望它实际看起来像那样还是遵循实际的正弦曲线?您只希望它将其限制在0和7之间吗?听起来您需要的只是一个分段函数。顶部和底部之间是线性的,并且在边之间表现为正弦。您可以将其作为实际的分段函数来实现。这是一种方法。另一种方法是放弃公式,只需手动移动对象即可。您可以使用
y=-Math.sign(x)*Math.sign(Math.abs(x)%4-2)*(1-Math.pow(Math.abs(Math.abs(x)%2-1),1.5)
。您还可以插入任何其他值(您刚刚保存的“我的一天:)你能再解释一下你是怎么想到这个的吗?@OmarShehata:我有一个数学很好的兄弟…(简短的解释:像x^1.5这样的函数总是在(0 | 0)处有一个梯度为0的切线,并且包含(1 | 1)-其余的都是镜像和模来重复)你刚刚救了我一天:)你能再解释一下你是怎么想到这个的吗?@OmarShehata:我有一个数学很好的哥哥。。。(简短说明:像x^1.5这样的函数总是在(0 | 0)处有一个梯度为0的切线,并包含(1 | 1)-其余的是镜像和模重复)