如何在spritekit swift中生成以一定角度旋转的正弦?

如何在spritekit swift中生成以一定角度旋转的正弦?,swift,math,sprite-kit,Swift,Math,Sprite Kit,我希望在我的游戏中,屏幕上会出现某种声波。我可以做一个直线的正弦,但是我如何做一个旋转20度的正弦呢?比如从左下角到右上角 let pi = CGFloat.pi let wave = Waves[0] let x = path.currentPoint.x let c = (2 * pi) / (wave.Wavelength * 30) let a = 30 * wave.Amplitude l

我希望在我的游戏中,屏幕上会出现某种声波。我可以做一个直线的正弦,但是我如何做一个旋转20度的正弦呢?比如从左下角到右上角

        let pi = CGFloat.pi
        let wave = Waves[0]
        let x = path.currentPoint.x
        let c = (2 * pi) / (wave.Wavelength * 30)
        let a = 30 * wave.Amplitude

        let y = a * sin(c * x)

        path.addLine(to: CGPoint(x: x + 2, y: y ))

可以将旋转的仿射变换应用于计算的点位置

xnew = xbase + (x - xbase) * Cos(rot_angle) - (y - ybase) * Sin(rot_angle)
ynew = ybase + (x - xbase) * Sin(rot_angle) + (y - ybase) * Cos(rot_angle)
这里
(xbase,ybase)
-旋转中心坐标(在您的情况下可能
0,0
),旋转角度-旋转角度,在您的情况下
20*Pi/180


可能您的图形库已经包含仿射变换的工具,在这种情况下,只需形成变换矩阵并应用它。

您可以使用2:

然后您可以使用
cGraffinetTransform
将其旋转,如下所示:

/// Convert degrees to radians
func degreeToRadian(_ angle: CGFloat) -> CGFloat {
  return angle * CGFloat.pi / 180.0
}

let path = sinePath(size: CGSize(width: 200.0, height: 100.0))
path.apply(CGAffineTransform(rotationAngle: degreeToRadian(20)))
我从这个问题中得到了
baseX
常数:


您需要包含更多信息,您如何使用路径?作为一个恶棍?只需旋转节点
/// Convert degrees to radians
func degreeToRadian(_ angle: CGFloat) -> CGFloat {
  return angle * CGFloat.pi / 180.0
}

let path = sinePath(size: CGSize(width: 200.0, height: 100.0))
path.apply(CGAffineTransform(rotationAngle: degreeToRadian(20)))