为了账号安全,请及时绑定邮箱和手机立即绑定

如何将度数转换为弧度?

如何将度数转换为弧度?

iOS
繁花不似锦 2019-10-09 16:15:01
我正在尝试将此Obj-C代码转换为Swift代码,但是我不知道该代码应该是什么?#define DEGREES_TO_RADIANS(degrees)((M_PI * degrees)/180)我用Google搜索并找到了这个但是我不知道如何在Swift中转换它?
查看完整描述

3 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

Xcode 10•Swift 4.2或更高版本


extension BinaryInteger {

    var degreesToRadians: CGFloat { return CGFloat(self) * .pi / 180 }

}


extension FloatingPoint {

    var degreesToRadians: Self { return self * .pi / 180 }

    var radiansToDegrees: Self { return self * 180 / .pi }

}

操场


45.degreesToRadians         // 0.785398163397448


Int(45).degreesToRadians    // 0.785398163397448

Int8(45).degreesToRadians   // 0.785398163397448

Int16(45).degreesToRadians  // 0.785398163397448

Int32(45).degreesToRadians  // 0.785398163397448

Int64(45).degreesToRadians  // 0.785398163397448


UInt(45).degreesToRadians   // 0.785398163397448

UInt8(45).degreesToRadians  // 0.785398163397448

UInt16(45).degreesToRadians // 0.785398163397448

UInt32(45).degreesToRadians // 0.785398163397448

UInt64(45).degreesToRadians // 0.785398163397448


Double(45).degreesToRadians    // 0.7853981633974483

CGFloat(45).degreesToRadians   // 0.785398163397448

Float(45).degreesToRadians     // 0.7853981

Float80(45).degreesToRadians   // 0.785398163397448278999


查看完整回答
反对 回复 2019-10-09
?
千巷猫影

TA贡献1829条经验 获得超7个赞

这与您的要求不同,但是在Swift 3 / iOS 10中,您可以使用Measurement类型并执行转换而无需知道公式!


let result = Measurement(value: 45, unit: UnitAngle.degrees)

    .converted(to: .radians).value


查看完整回答
反对 回复 2019-10-09
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

let angle = 45° // angle will be in radians, 45 is in degrees

在Swift 3下编译。仍然保留所有值,使用CGFloats以弧度形式进行所有计算...,但是使用度常数可以使代码更具可读性。例如:90 °°符号将神奇地完成度到弧度的转换。


如何设置:


为°符号定义并使用后缀运算符。该运算符将进行度到弧度的转换。本示例适用于Ints,如果需要,还可以将它们扩展为Float类型。


postfix operator °


protocol IntegerInitializable: ExpressibleByIntegerLiteral {

  init (_: Int)

}


extension Int: IntegerInitializable {

  postfix public static func °(lhs: Int) -> CGFloat {

    return CGFloat(lhs) * .pi / 180

  }

}

一些用法示例:


let angle = 45°


contentView.transform = CGAffineTransform(rotationAngle: 45°)


let angle = 45

contentView.transform = CGAffineTransform(rotationAngle: angle°)

警告!


两次使用此转换太容易了(错误地使用已经以弧度表示的值),结果将得到非常小的数字,而且看起来生成的角度将始终为零...请勿在同一角度上使用°值两次(不要两次转换)!:


// OBVIOUSLY WRONG!

let angle = 45°° // ° used twice here


// WRONG! BUT EASY TO MISS

let angle = 45° // ° used here

contentView.transform = CGAffineTransform(rotationAngle: angle°) // ° also used here


查看完整回答
反对 回复 2019-10-09
  • 3 回答
  • 0 关注
  • 1721 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信