Swift 4で確認済み
ちょっと恥ずかしい話、
var array = ["1","2"]
for i in 0...array.count - 1{
print(array[i])
}
↓ こう書けば良かったんだ。
for i in 0..<array.count{
print(array[i])
}
いや、必ず要素が1個以上ある場合は、いいんだけど。
要素が0個の時、強制終了する。
技術的な知見や日々の記録、日常の些細な変化などを綴る雑記ブログです。専門的な技術解説から日記のようなライトな話題まで、特定のジャンルに縛られず、気になったことや面白いと感じた出来事を幅広く発信しています。筆者の視点で切り取った多様なコンテンツが楽しめる、自由な雑記空間を目指しています。
お知らせ:
|
import CoreGraphics
extension CGAffineTransform {
var angle: CGFloat {
return atan2(b, a)
}
var radians: CGFloat {
return angle
}
var degrees: CGFloat {
return angle * 180.0 / CGFloat.pi
}
var scale: CGPoint {
return CGPoint(x: sqrt(a * a + c * c), y: sqrt(b * b + d * d))
}
}
// 例として、適当な CGAffineTransform を作成
let transform = CGAffineTransform(rotationAngle: CGFloat.pi/4).scaledBy(x: 2.0, y: 1.5)
let angleInRadians = transform.radians
let angleInDegrees = transform.degrees
let scale = transform.scale
print("Angle in radians: \(angleInRadians)")
print("Angle in degrees: \(angleInDegrees)")
print("Scale: \(scale)")
import CoreGraphics
// CGAffineTransformの拡張機能を定義
extension CGAffineTransform {
// 現在の変換の回転角度をラジアン単位で取得
var angle: CGFloat {
return atan2(b, a)
}
// 回転角度をラジアンで取得('angle'プロパティのエイリアス)
var radians: CGFloat {
return angle
}
// 回転角度を度数法で取得
var degrees: CGFloat {
return angle * 180.0 / CGFloat.pi
}
// 現在の変換のスケールをCGPointとして取得
var scale: CGPoint {
return CGPoint(x: sqrt(a * a + c * c), y: sqrt(b * b + d * d))
}
}
// 例として、回転とスケールを含むCGAffineTransformを作成
let transform = CGAffineTransform(rotationAngle: CGFloat.pi / 4).scaledBy(x: 2.0, y: 1.5)
// 回転角度をラジアンで取得
let angleInRadians = transform.radians
// 回転角度を度数法で取得
let angleInDegrees = transform.degrees
// スケールを取得
let scale = transform.scale
// 結果を出力
print("Angle in radians: \(angleInRadians)") // 出力: 回転角度(ラジアン)
print("Angle in degrees: \(angleInDegrees)") // 出力: 回転角度(度数法)
print("Scale: \(scale)") // 出力: スケール
import CoreGraphics
// CGAffineTransformの拡張機能を定義
extension CGAffineTransform {
// 現在の変換の回転角度をラジアン単位で取得
var angle: CGFloat {
// atan2(b, a)は、aが0の場合に問題が発生する可能性があるため、特別な処理を行う
let angle = atan2(b, a)
return angle
}
// 回転角度をラジアンで取得('angle'プロパティのエイリアス)
var radians: CGFloat {
return angle
}
// 回転角度を度数法で取得
var degrees: CGFloat {
return angle * 180.0 / CGFloat.pi
}
// 現在の変換のスケールをCGPointとして取得
var scale: CGPoint {
// より正確なスケールを求めるために、aとdの平均の平方根を使用する
let scaleX = sqrt(a * a + c * c)
let scaleY = sqrt(b * b + d * d)
return CGPoint(x: scaleX, y: scaleY)
}
}
// 例として、回転とスケールを含むCGAffineTransformを作成
let transform = CGAffineTransform(rotationAngle: CGFloat.pi / 4).scaledBy(x: 2.0, y: 1.5)
// 回転角度をラジアンで取得
let angleInRadians = transform.radians
// 回転角度を度数法で取得
let angleInDegrees = transform.degrees
// スケールを取得
let scale = transform.scale
// 結果を出力
print("Angle in radians: \(angleInRadians)") // 出力: 回転角度(ラジアン)
print("Angle in degrees: \(angleInDegrees)") // 出力: 回転角度(度数法)
print("Scale: \(scale)") // 出力: スケールradians 削除scale の計算式を修正(scaleX = sqrt(a²+b²), scaleY = sqrt(c²+d²))import CoreGraphics
extension CGAffineTransform {
/// 回転角度をラジアン単位で取得
var angle: CGFloat {
return atan2(b, a)
}
/// 回転角度を度数法で取得
var degrees: CGFloat {
return angle * 180.0 / CGFloat.pi
}
/// スケールをCGPointとして取得
var scale: CGPoint {
let scaleX = sqrt(a * a + b * b)
let scaleY = sqrt(c * c + d * d)
return CGPoint(x: scaleX, y: scaleY)
}
}
// 使用例
let transform = CGAffineTransform(rotationAngle: CGFloat.pi / 4).scaledBy(x: 2.0, y: 1.5)
print("角度(ラジアン): \(transform.angle)") // 約 0.7854
print("角度(度数法): \(transform.degrees)") // 約 45.0
print("スケール: \(transform.scale)") // 約 (2.0, 1.5)