gpt4 book ai didi

swift 。将北向表示为航向方向范围

转载 作者:行者123 更新时间:2023-11-30 11:10:07 25 4
gpt4 key购买 nike

我正在使用注释和 MapKit。我有一个自行车注释,其中默认图像指向东(即自行车的侧 View ,具有上、下、前和后的概念)。如果自行车的 CLLocation 路线是向西,我需要使用翻转图像(即指向西的图像),否则自行车向后行驶。为了避免注释图像过度“翻转”,我希望在正北和正南有一个缓冲区,例如,如果自行车的路线是向东(因此使用的图像是朝东的自行车图像),如果路线稍微向西转向(比如 184 度),那么这被认为是“在缓冲区内”,并且我不会在更新的注释上使用翻转的图像。假设缓冲区位于正北和正南两侧各 5 度。我想捕获变量中的这些“方向”,即 effectiveEast 的范围为 5.0..<175,southBuffer 的范围为 175..<185, effectiveWest 的范围为 185..<355 ...但是我如何表示 NorthBuffer ....实际上需要是从 355 到 360 以及从 0 到 5 的范围,即不是连续的数字...我猜这在数学上应该很简单,但只是想不出如何实现?

最佳答案

如果我理解正确的话,翻转发生在南北轴上。使用 enum 进行翻转很有用:

enum Direction {  //image flipping
case left, right
}

您可以使用它来跟踪翻转状态

var direction: Direction = .right // east

该球场是一个Double,运行范围为 0 到 360 度。

var course = CLLocation.course

缓冲区是你喜欢的任何东西

var buffer:Double = 5 // 5 degrees each side of north or south 

您可以根据方向当前状态设置图像翻转。

func setImage(_ course: course) {
switch(direction){
case .right: // east
if(course < 360 - buffer || course > 180 + buffer){
direction = .left
// flip image to left
}
case .left: // west
if(course > buffer || course < 180 - buffer){
direction = .right
// flip image to right
}
}
}

请注意,buffer 创建了一个死区,例如,在 355 度到 5 度之间的正北方向,其中 direction 是最后设置的值。这意味着当您的路线从东向西移动时,仅当您经过缓冲区边界时,图像才会向西翻转。

关于 swift 。将北向表示为航向方向范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52266928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com