如何在spritekit swift中生成以一定角度旋转的正弦?
我希望在我的游戏中,屏幕上会出现某种声波。我可以做一个直线的正弦,但是我如何做一个旋转20度的正弦呢?比如从左下角到右上角如何在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
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)))