构建圆形金字塔 - 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的主要内容,如果未能解决你的问题,请参考以下文章

arcmap构建金字塔影像颜色不正

CVPR‘2023 即插即用系列! | BiFormer: 通过双向路由注意力构建高效金字塔网络架构

Yolov5/Yolov7 引入CVPR 2023 BiFormer: 基于动态稀疏注意力构建高效金字塔网络架构,对小目标涨点明显

PANet:基于金字塔注意力网络的图像超分辨率重建(Pytorch实现)

[computer vision]高斯金字塔与拉普拉斯金字塔

《金字塔原理》读书摘要