小编Fab*_*Fab的帖子

iPhone上的陀螺仪

在iPhone上使用陀螺仪需要一些帮助.在特定情况下,我无法理解CMAttitude关于俯仰,翻滚和偏航的读数.

这是我的代码

- (void)handleDeviceMotion:(CMDeviceMotion*)motion {

   NSLog(@"Yaw   %f ",attitude.yaw * 180 / M_PI);
   NSLog(@"Pitch %f ",attitude.pitch * 180 / M_PI);
   NSLog(@"Roll  %f ",attitude.roll * 180 / M_PI);
}
Run Code Online (Sandbox Code Playgroud)

我们假设iPhone正在平面上,如下图所示:

在此输入图像描述

俯仰,滚转和偏航是(几乎)0度,绕轴的任何转弯都会返回可理解的读数.例如,向右转动设备,Yaw减小,Pitch and Roll保持为0.

现在iPhone处于以下位置:

在此输入图像描述

并再次开始测量.

读数为:Yaw = 0,Pitch = 90,Roll = 0

由于设备围绕该轴旋转,因此间距增加.

将iPhone移动到这个位置:

在此输入图像描述

读数为:Yaw = 30,Pitch = 90,Roll = 0

再一次,由于设备围绕偏航轴旋转,因此该值会改变而其他值则不会改变.

围绕Roll轴移动设备:

在此输入图像描述

读数为:Yaw = 0,Pitch = 90,Roll = -20.

现在我无法理解.将iPhone移动到半径为R(R> 0)的圆周,如下图所示:

在此输入图像描述

Yaw改变同时Pitch and Roll没有.

我原以为Yaw保持不变而Roll已经改变了.

如何补偿这一点,因为我对用户制作的偏航轴周围的旋转感兴趣?

我遇到的另一个问题是漂移.iPhone处于第二个图中描述的位置,长时间(1分钟或更长时间)在我的手中拍摄.偏航不断增加.知道如何补偿漂流吗?

先感谢您

更新 我跟随凯的建议,但没有任何改变.关于我的代码的更多细节.我想仅在用户围绕偏航轴旋转设备时使用Yaw旋转UIImage.这是有效的,但是当用户围绕其自己的垂直轴旋转时,偏转会发生变化.我认为这是不正确的,因为当用户围绕其垂直轴移动时,设备不会围绕其自己的偏航轴旋转.可能是我错了.这是我的原始代码:

- (void)handleDeviceMotion:(CMDeviceMotion*)motion { 

   CMAttitude      *attitude = motion.attitude;

   NSLog(@"Yaw   %f ",attitude.yaw * …
Run Code Online (Sandbox Code Playgroud)

iphone accelerometer ipad ios gyroscope

34
推荐指数
1
解决办法
1万
查看次数

如何设置WKInterfaceDate的日期

WKInterfaceDate可以显示与当前值不同的日期和时间吗?

如果是,我该如何设置不同的日期?

apple-watch watchkit watchos-2

5
推荐指数
1
解决办法
727
查看次数

如何将错误的代码(错误地提交)替换到存储库中

我是svn的新手,我在错误后卡住了.

我有两个系统:

a)系统1 - 使用正确代码的工作副本

b)系统2 - 错误代码的工作副本,错误地提交到存储库

我想从系统1重新提交正确的代码,但我不能.如果我更改文件并尝试提交它,我会收到消息:

文件xyx已过期

显然我无法更新系统1工作副本,否则我会丢失正确的代码.

我该如何摆脱这种僵局?

谢谢

晶圆厂.

svn

4
推荐指数
1
解决办法
1106
查看次数

如何在 Swift 中解码继承类的数组

问题:解码属于 Parent 和 Child 类的对象数组。

我读了很多关于这个主题的东西,但我一直无法找到一个简单的解决方案。

我编码了一个提供原始类信息的类型属性,但我还没有找到使用它来解码对象的方法。

class Parent: Codable, CustomDebugStringConvertible {
    var debugDescription: String {
        return "[\(name)]"
    }
    
    var name: String
    init(name: String) {
        self.name = name
    }
    
    enum CodingKeys: CodingKey {
        case name
        case type
        case age
    }
    
    required init(from decoder: Decoder) throws {
        let container = try decoder.container(keyedBy: CodingKeys.self)
        name = try! container.decode(String.self, forKey: .name)
        let type = try! container.decode(String.self, forKey: .type)
        print("Reading \(type)")
        
        if type == "Child" {
            try Child.init(from: decoder)
            return
        }
    }
    
    func encode(to …
Run Code Online (Sandbox Code Playgroud)

json swift encodable

4
推荐指数
1
解决办法
1442
查看次数

Wildfly 8.2.0不会重定向到https

我已启用https更改standalone.xml,如下所示:

 <security-realms>

        <security-realm name="UndertowRealm">  
            <server-identities>  
                <ssl>  
                    <keystore path="./ed.keystore" relative-to="jboss.server.config.dir" keystore-password="secret" alias="ed" key-password="secret" />  
                </ssl>
            </server-identities>  
        </security-realm> 
        ...
Run Code Online (Sandbox Code Playgroud)

和:

<subsystem xmlns="urn:jboss:domain:undertow:1.2">
        <buffer-cache name="default"/>
        <server name="default-server">
            <http-listener  name="default" socket-binding="http" redirect-socket="https" />
            <https-listener name="https"   socket-binding="https" security-realm="UndertowRealm" />
Run Code Online (Sandbox Code Playgroud)

以下链接均有效:

第二个实际上是一个安全的连接.

不幸的是,第一个链接不会重定向到https协议.

我错过了什么?

谢谢.

wildfly wildfly-8

3
推荐指数
1
解决办法
3895
查看次数

macOS 上的 Swiftui 表单标签对齐

我正在 macOS 上的 SwiftUI 中构建一个简单的表单,但是一旦添加了选择器,布局就搞砸了。

这是我的代码:

var body: some View {
        GeometryReader { geometry in
            Form {
                HStack {
                    Text("Label")
                        .frame(minWidth: 0.25 * geometry.size.width, alignment: .leading)

                    TextField("", text: $field1)
                }

                HStack {
                    Text("Long Label")
                        .frame(minWidth: 0.25 * geometry.size.width, alignment: .leading)
                    TextField("", text: $field2)
                }

//                HStack {
//                    Text("Picker")
//                        .frame(minWidth: 0.25 * geometry.size.width, alignment: .leading)
//
//                    Picker("", selection: $selectedColor) {
//                        ForEach(colors, id: \.self) {
//                            Text($0)
//                        }
//                    }
//                }

            }
            .padding(20)
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

macos swiftui

1
推荐指数
1
解决办法
1728
查看次数