首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Objective-C 將風向角度轉換為 16 方位縮寫

     編輯:程式設計綜合問答

實現代碼

- (NSString *)windDirectionFromDegrees:(float)degrees {
    static NSArray *directions;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        directions = @[@"N", @"NNE", @"NE", @"ENE", @"E", @"ESE", @"SE", @"SSE",
                       @"S", @"SSW", @"SW", @"WSW", @"W", @"WNW", @"NW", @"NNW"];
    });
    int index = (degrees + 11.25f) / 22.5f; // 每象限 22.5°,+11.25 實現四捨五入
    return directions[index % 16];
}

原理

  • 16 方位每佔 360/16 = 22.5°。
  • 將角度偏移 11.25° 後除以 22.5° 取整,得到 0-15 索引。
  • dispatch_once 保證靜態數組只初始化一次,線程安全。

使用示例

NSLog(@"%@", [self windDirectionFromDegrees:180]); // S
NSLog(@"%@", [self windDirectionFromDegrees:45]);  // NE
NSLog(@"%@", [self windDirectionFromDegrees:350]); // N

擴展:支持 8 方位

將數組改為 8 元素,除數改為 45° 即可。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved