小编Mau*_*itz的帖子

SpriteKit 旋转混乱

我试图以一般的方式理解如何解决使用 atan/atan2 和 SK 的 zRotation 时发生的翻转。

我的 Swift 代码捕获 mouseDown,然后使用这个小函数计算当前位置和单击之间的角度:

func angleBetweenPointOne(PointOne: CGPoint, andPointTwo PointTwo: CGPoint) -> Double {
    let xdiff = CDouble(PointTwo.x - PointOne.x)
    let ydiff = CDouble(PointTwo.y - PointOne.y)
    let rad = atan2(ydiff, xdiff)
    return rad - 1.5707963268       // convert from atan's right-pointing zero to CG's up-pointing zero
}
Run Code Online (Sandbox Code Playgroud)

现在我这样做:

let action = SKAction.rotateToAngle(CGFloat(angle), duration:0.2)
PlayerSprite.runAction(action)
Run Code Online (Sandbox Code Playgroud)

大多数时候它工作正常,精灵干净地旋转到新角度。这适用于您可能点击/触摸的大多数点。然而,如果点击穿过 -ve Y 轴 - 即点击位于精灵下方,下一次点击位于精灵上方,则角度不是一个小角度,而是 360 减去该角度。所以精灵会旋转很远的距离。

我正在尝试了解如何解决这个问题,这样我就不会一遍又一遍地犯同样的错误。

sprite-kit swift

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

旋转我的SceneKit材质

我正在拍摄图像,AVCapturePhotoOutput然后使用他们的JPEG表示作为SceneKit上的纹理SCNPlane,与图像的纵横比相同:

let image = UIImage(data: dataImage!)
let rectangle = SCNPlane(width:9, height:12)
let rectmaterial = SCNMaterial()
rectmaterial.diffuse.contents = image
rectmaterial.isDoubleSided = true
rectangle.materials = [rectmaterial]
let rectnode = SCNNode(geometry: rectangle)
let pos = sceneSpacePosition(inFrontOf: self.pictCamera, atDistance: 16.5)  // 16.5 is arbitrary, but makes the rectangle the same size as the camera
rectnode.position = pos
rectnode.orientation = self.pictCamera.orientation
pictView.scene?.rootNode.addChildNode(rectnode)
Run Code Online (Sandbox Code Playgroud)

sceneSpacePosition是一些可以在SO找到的代码,它将CoreMotion映射到SceneKit方向.它用于放置矩形,确实出现在正确的位置,大小合适.一切都很酷.

问题是图像旋转90度到矩形.所以我明白了:

rectmaterial.diffuse.contentsTransform = SCNMatrix4MakeRotation(Float.pi / 2, 0, 0, 1)
Run Code Online (Sandbox Code Playgroud)

这不起作用; 生成的图像无法识别.看起来图像的一小部分已被拉伸到一个巨大的尺寸.我认为它可能是轴,但我尝试了所有三个相同的结果.

有任何想法吗?

ios scenekit

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

C strtok,如果我想保留分隔符怎么办?

我正在尝试拆分该类型的行:

GM 1 2 3 ! this is a comment
Run Code Online (Sandbox Code Playgroud)

分开评论部分.有几种可能的注释分隔符,!,'和#.strtok对此明显的解决方案是:

card->card_str = strtok(line_buf, "!'#");
Run Code Online (Sandbox Code Playgroud)

生产GM 1 2 3this is a comment.但是,对于这个角色,我需要在第二个字符串中保留分隔符,所以在这种情况下! this is a comment.是否有捷径可寻?

c string strtok

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

设置NSOpenPanel的初始目录

我试图让用户从包含日志文件的文件夹中选择一个文件.所以我想显示一个显示该文件夹内容的NSOpenDialog.我正在使用Swift,所以10.9+

我在这里看到了关于这个主题的一些线程,但是尽管尝试了转换为Swift的相同代码,它总是返回到Documents文件夹.这是一个示例:

    let fd: NSOpenPanel = NSOpenPanel()
    fd.directoryURL = NSURL.fileURLWithPath("~/LauncherLogs", isDirectory: true)
    fd.canChooseDirectories = false
    fd.canChooseFiles = true
    fd.allowedFileTypes = ["log"]
    fd.runModal()
Run Code Online (Sandbox Code Playgroud)

有问题的文件夹确实存在,并将路径复制并粘贴到Finder中的Go to Folder ...就在那里.有任何想法吗?

macos nsopenpanel swift

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

Sun 在 Swift 中的位置

我正在尝试实现这个解决方案来计算 Swift3 中太阳的位置。然后我将其包装在另一个函数中,该函数简单地循环一天,从午夜每 10 分钟步进一次,直到 23:50。

我并不真正理解 R,并且我没有完全理解答案的一些细节,特别是似乎是带有方括号的某种 if/clamp 函数。当我感到困惑时,我尽力与Python版本进行比较。否则,唯一的区别是由于使用了NSDate,它简化了顶部的一些代码。

我得到的一些值似乎是正确的,当我绘制结果时,我可以看到曲线的基础。然而,一次调用(例如上午 7 点)和下一次调用(7 点 10 分)的结果截然不同。

我强烈怀疑我在钳位方面做错了什么,并且输入中的微小变化会以不同的方式进行修改/截断并影响输出。但我看不出来。任何了解这个算法的人都可以帮忙吗?

这是我得到的输出示例:

2017-06-21 00:10:00 +0000 -16.0713262209521 31.7135341633943
2017-06-21 00:20:00 +0000 61.9971433936385 129.193513530349
2017-06-21 00:30:00 +0000 22.5263575559266 78.5445189561018
2017-06-21 00:40:00 +0000 29.5973897349096 275.081637736092
2017-06-21 00:50:00 +0000 41.9552795956374 262.989819486864
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它在迭代之间剧烈波动。地球不是那样转的!我的代码如下,这个版本只是将结果发送到日志:

class func julianDayFromDate(_ date: Date) -> Double {
    let ti = date.timeIntervalSince1970
    return ((ti / 86400.0) + 2440587)
}

class func sunPath(lat: Double, lon: Double, size: CGSize) -> UIImage {
    var utzCal …
Run Code Online (Sandbox Code Playgroud)

math geometry r astronomy swift3

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

获取Swift 4中文档目录中的所有"*.xxx"文件

我正在查看NSFileManager.hSwift 4中的dox,自从我上次使用它以来它似乎发生了变化(为了更好!).

在我的案例图片中,我想知道是否contentsOfDirectoryAtURL:includingPropertiesForKeys,urlenumeratorAtURL:includingPropertiesForKeys提供一种枚举特定类型文件的方法?

我看过很多Swift 2的答案,他们都建议循环和检查名称,我想确定他们没有"修复"这个,我只是对API感到困惑?

nsfilemanager swift4

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

处理包含多个图像的 UIDocument 中的图像加载/存储

我有一个简单的模型对象,Location其中包含一些文本项和一个images : [UIImages]?. Location所以Codable我将文本位存储为 JSON,然后将图像写入相同的FileWrapper.

我的问题是如何存储图像文件和 [UIImage] 数组之间的关系。图像必须以相同的顺序返回。有没有办法可以连接到编码,以便数组被指向图像的 URL 替换?

或者,我应该始终将图像作为单独的文件(例如在缓存目录中)并将 [UIImage] 替换为 [URL]

nsfilewrapper ios uidocument swift

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

在 SQL SSMS 中编写多个 CREATE TABLE 脚本?

我有一个数据库,其中有许多表,这些表多年来一直定期更新(不是由我更新)。我想CREATE TABLE为所有表制作脚本。

它似乎Script table as...一次只能在一个表上运行。有没有办法编写数据库中所有表的脚本?

sql-server ssms

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