构建圆形金字塔 - SwiftUI
Posted
技术标签:
【中文标题】构建圆形金字塔 - SwiftUI【英文标题】:Building a Pyramid of Circles - SwiftUI 【发布时间】:2021-12-15 16:20:22 【问题描述】:我正在寻找使用 SpriteKit 和 SwiftUI 绘制圆形金字塔,如下图所示
o
o o
o o o
我正在使用下面的一组循环来尝试生成它们,但是我遇到了两个问题。首先,我希望它以相反的方式出现,在我的脑海中它是颠倒的。
我还想在每个圆圈之间添加特定的间距,而不是让它们触及每个级别;因此在顶部的间隔变量。
let spacer: Int = 40
for i in 0...7
for j in 0...i
let x = Int(W) - ((i * radius) + radius) + (j * diameter)
let y = ((i * radius * 2) - radius) + side
addNode(posX: Double(x), posY: Double(y))
addNode(posX, posY) 只是在提供的两个坐标处创建一个圆
有人对如何修正公式有任何想法吗?
【问题讨论】:
你不需要精灵! SwiftUI 运行良好 @swiftPunk 我在游戏中使用节点作为对象,这得益于物理体,所以据我所知 SwiftUI 不起作用? 【参考方案1】:这是您正在尝试的示例,但我没有使用 sprite!
struct ContentView: View
@State private var heightOfPyramid: Int = 3
@State private var spacing: CGFloat = 10.0
@State private var sizeOfCircle: CGFloat = 25.0
var body: some View
Spacer()
VStack(spacing: spacing)
ForEach(0...heightOfPyramid, id:\.self) outSideIndex in
HStack(spacing: spacing)
ForEach(0..<outSideIndex, id:\.self) index in
Circle()
.frame(width: sizeOfCircle, height: sizeOfCircle)
.animation(Animation.interactiveSpring(), value: heightOfPyramid)
.shadow(radius: 10.0)
Spacer()
VStack
HStack
Text("heightOfPyramid:")
Slider(value: Binding(get: return Double(heightOfPyramid) , set: newValue in heightOfPyramid = Int(newValue) ), in: 0.0...10.0)
HStack
Text("sizeOfCircle:")
Slider(value: $sizeOfCircle, in: 0.0...50.0)
HStack
Text("spacing:")
Slider(value: $spacing, in: 0.0...50.0)
.padding()
【讨论】:
如果我不需要上面评论中提到的圆圈的物理体,这会很好 可以实现了!我个人直到现在才使用 sprite! PS:如果你打算使用 SwiftUI 作为绘图工具!我的答案是给你的,如果你正在绘制精灵并且你想在 SwiftUI 中使用它,那么情况就不同了。对我来说有点不清楚你需要什么!如果您使用精灵,那么您可以绘制我所做的事情。以上是关于构建圆形金字塔 - SwiftUI的主要内容,如果未能解决你的问题,请参考以下文章
CVPR‘2023 即插即用系列! | BiFormer: 通过双向路由注意力构建高效金字塔网络架构
Yolov5/Yolov7 引入CVPR 2023 BiFormer: 基于动态稀疏注意力构建高效金字塔网络架构,对小目标涨点明显
PANet:基于金字塔注意力网络的图像超分辨率重建(Pytorch实现)