我试图以一般的方式理解如何解决使用 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 减去该角度。所以精灵会旋转很远的距离。
我正在尝试了解如何解决这个问题,这样我就不会一遍又一遍地犯同样的错误。
我正在拍摄图像,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)
这不起作用; 生成的图像无法识别.看起来图像的一小部分已被拉伸到一个巨大的尺寸.我认为它可能是轴,但我尝试了所有三个相同的结果.
有任何想法吗?
我正在尝试拆分该类型的行:
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 3
和this is a comment
.但是,对于这个角色,我需要在第二个字符串中保留分隔符,所以在这种情况下! this is a comment
.是否有捷径可寻?
我试图让用户从包含日志文件的文件夹中选择一个文件.所以我想显示一个显示该文件夹内容的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 ...就在那里.有任何想法吗?
我正在尝试实现这个解决方案来计算 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) 我正在查看NSFileManager.h
Swift 4中的dox,自从我上次使用它以来它似乎发生了变化(为了更好!).
在我的案例图片中,我想知道是否contentsOfDirectoryAtURL:includingPropertiesForKeys
,url
或enumeratorAtURL:includingPropertiesForKeys
提供一种枚举特定类型文件的方法?
我看过很多Swift 2的答案,他们都建议循环和检查名称,我想确定他们没有"修复"这个,我只是对API感到困惑?
我有一个简单的模型对象,Location
其中包含一些文本项和一个images : [UIImages]?
. Location
所以Codable
我将文本位存储为 JSON,然后将图像写入相同的FileWrapper
.
我的问题是如何存储图像文件和 [UIImage] 数组之间的关系。图像必须以相同的顺序返回。有没有办法可以连接到编码,以便数组被指向图像的 URL 替换?
或者,我应该始终将图像作为单独的文件(例如在缓存目录中)并将 [UIImage] 替换为 [URL]
我有一个数据库,其中有许多表,这些表多年来一直定期更新(不是由我更新)。我想CREATE TABLE
为所有表制作脚本。
它似乎Script table as...
一次只能在一个表上运行。有没有办法编写数据库中所有表的脚本?
swift ×3
ios ×2
astronomy ×1
c ×1
geometry ×1
macos ×1
math ×1
nsopenpanel ×1
r ×1
scenekit ×1
sprite-kit ×1
sql-server ×1
ssms ×1
string ×1
strtok ×1
swift3 ×1
swift4 ×1
uidocument ×1