プログラムでシダを描画する というサイトでサンプルプログラムが乗っていたのでドラッグ&ドロップして実行してみたんですがコンパイルは通りますがシダが表示しません。
どうしてでしょうか?
以下サンプルプログラム
import UIKit
class ShidaViewController: UIViewController {
var n:Int = 20
var width:Float = 640.0
var height:Float = 960.0
func w1x(t: (Float, Float)) -> Float { let (x,y) = t return 0.836 * x + 0.044 * y } func w1y(t: (Float, Float)) -> Float { let (x,y) = t return -0.044 * x + 0.836 * y + 0.169 } func w2x(t: (Float, Float)) -> Float { let (x,y) = t return -0.141 * x + 0.302 * y } func w2y(t: (Float, Float)) -> Float { let (x,y) = t return 0.302 * x + 0.141 * y + 0.127 } func w3x(t: (Float, Float)) -> Float { let (x,y) = t return 0.141 * x - 0.302 * y } func w3y(t: (Float, Float)) -> Float { let (x,y) = t return 0.302 * x + 0.141 * y + 0.169 } func w4x(t: (Float, Float)) -> Float { let (x,y) = t return 0 } func w4y(t: (Float, Float)) -> Float { let (x,y) = t return 0.175337 * y } func rand_() -> Float { var ran = Float(arc4random() % 100) return ran / 100.0; } func f(k:Int, x:Float, y:Float) { if (0 < k){ f(k-1, x: w1x((x,y)), y: w1y((x,y))) if rand_() < 0.3 { f(k-1, x: w2x((x,y)), y: w2y((x,y))) } if rand_() < 0.3 { f(k-1, x: w3x((x,y)), y: w3y((x,y))) } if rand_() < 0.3 { f(k-1, x: w4x((x,y)), y: w4y((x,y))) } } else { var sw: Float = width * 0.9 var sh: Float = height * 0.9 draw((x * sw + width * 0.5, height - y * sh)) } } override func viewDidLoad() { super.viewDidLoad() self.f(n,x:0,y:0) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } func draw(t: (Float, Float)){ let (x,y) = t var cx = CGFloat(x) var cy = CGFloat(y) var location = CGVector(dx:cx,dy:cy) var p = Point(location:location,r:1) p.createView() self.view.addSubview(p.view) }
}
class Point{
var location:CGVector
var radius:Int
var view:UIView
init(location:CGVector,r:Int){ self.location = location self.radius = r self.view = UIView() } func createView(){ view.frame = CGRect(x:location.dx,y:location.dy,width:1,height:1) view.backgroundColor = UIColor.greenColor() view.layer.cornerRadius = 1 }
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。