亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將度數轉換為弧度?

如何將度數轉換為弧度?

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°)

警告!


兩次使用此轉換太容易了(錯誤地使用已經以弧度表示的值),結果將得到非常小的數字,而且看起來生成的角度將始終為零...請勿在同一角度上使用°值兩次(不要兩次轉換)?。?/p>


// 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 關注
  • 1826 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號