私の馬ボロノイ







素晴らしい、天才。 私はかつて天才でしたが、今ではiPhone用のおもちゃを書いています。 先週、AppleとGoogleはアプリと収益を奪おうとして、私をとても興奮させました。 Swift 3.0では、7日間で7つのゲームを作って作らなければなりませんでした。 同時に、私は過去のゲームの古いObj-Cコードを調べませんでした。新しい言語でアプリケーションを作成する方がずっと簡単です。



以前、私が天才だったときは、毎回ソート関数を(ゲームの要素として)書き直し、それを誇りに思っていました。 なんてバカなんだ しかし、あまり変わっていません。 しかし、ツールは変更されました。 Swift 3.0での並べ替えの様子をご覧ください。



let vtxSorted = vtx.sorted(by:{ $0.yPosition > $1.yPosition })
      
      





そしてそれだけです! VTX頂点配列は、Y座標でソートされます...

なぜこれが必要なのですか? しかし、なぜ...



ボロノイ図を作成するには、座標による並べ替えが必要です。ボロノイ図については、Habréに関する多くの記事がありました。



ボロノイ図



凸包とその構築方法についてはご存知でしょう。 ロシア語では、これはボロノイ図と呼ばれます。 これは、混乱した平面にスケッチされたすべての点から等距離にあるグリッドであることを思い出させてください。 iPhoneの画面上の平面、太字の白いピクセル上のドットを置き換えて、そのような画像を取得します。









素敵で、すぐに何らかのゲームを書きたいです。 だから、読者の読者が、アンナ・カレーニナではなくレールに乗っているRubyについてさえも知らなかった2009年に私はやりました。



はい、それを嘘にして、私たちは夢中になります-それは私がOpenGLでゲームを作り、それで何も獲得しなかったときです。 おそらく私は5年間で50ドルを得ましたが、これはほとんどありません。



しかし、ゲームはクールです。 あなたは画面上で指を突くと、ボードからすべての細胞を除去する時間がないことに神経質です。 幸せには他に何が必要ですか? さて、多分小さなキャンディとジャム。 また、人生の最盛期に。



そして、私はゲームを新しい方法で作り直すことにしました。 ちょうどインターネット上で、米国の選挙についてのホットな話題の鮮やかな写真を手に入れ、それをアプリケーションアイコンにしました。 彼はポイントをClintonigとTrump-pam-pamに、グリッドを米国に置き換え、クリーンなSwiftでプログラムを急いだ。



OpenGLで待ち伏せ



OpenGLを選ぶ理由 テクスチャ付きの三角形を描画します。 純色で注ぐのは庭です。 幼稚園。ハードコアしかありません!



ああ! いや! 私はゼニスの擁護者の話ではありません。 OpenGL関数を呼び出すためのSwift APIはありません! こしょう! さて、結節で遊んで金属を試してください。 これは、AppleがOpenGLの代わりに作成したファッショナブルなライブラリであり、同様の機能とインターフェイスを備えていますが、ネイティブハードウェアではより高速に動作すると思われます。



金属と待ち伏せ



このライブラリはシミュレータでは機能しません! アタス! ジョブの下では、これはそうではありませんでした。 私を100人押さえてください! 三千の悪魔。 人生は無駄に生きてきたようです。 そして、悲しげな夢で、私は突然バルカンの雨の中をさまようと地元の男の隣人に耳を傾けました。 しかし、少女はさらに騒々しい。 突然、緑色の目のタクシーのチェッカーのように、私に考えが浮かびました-しかし、図書館は必要ありません、いい人! きれいなUIKitで、スウィートハートSwiftで、テクスチャを使用して三角形を自分で描くことができます。 そして、三角形ではなく、ポリゴン全体であり、さらにクールです。



どうやって? しかし、コードを見ると、ロシア語はここでは無力です。



  var mask = CAShapeLayer() mask.frame = groundTrump.layer.bounds let path = CGMutablePath() for t in app.trumpTriangles { if t.flag == 0 { path.closeSubpath() //   path.move(to: tp) //   } else { path.addLine(to: tp) //     } } mask.path = path groundTrump.layer.mask = mask1
      
      





はい、マスクは操縦し、私は彼女を知っています。 そして今、あなたも知っています。 グリッドを構築するためのアルゴリズムを書く必要があります。 私はグリッドが大好きで、私の論文はメッシュレス法(SPH)に関するものでした。 ここで、Pは粒子です。



ちなみに、githubにはSwift 3.0上に海外のボロノイ図グリッド構築アルゴリズムがあります。 2つまで。 残念ながら、それらの最初のものは長方形の境界線を考慮していませんが、他のものはエラーエラーで動作します。 私は自分でプログラムを書かなければなりませんでした。それは素晴らしく、脳は時計回りに横に曲がっていました。 時計回りに、各頂点を個別に移動し、ポイントの配列全体を移動します。 彼はフレッチャー法を使用せず、角度でポイントをソートし、バカバカしくO(N ^ 2)で揚げました。 50ポイントでは、これは重要ではありませんが、iPhone 4Sでは著しく遅くなります。 しかし、今誰がiPhone 4Sを持っていますか? Habréエディターでさえも使用しません。



他に何? ゲームはストアに配置されていません。多分明日やるでしょうが、 ゲームプレイのビデオを見て、コメントで私の素晴らしい仕事を賞賛することをお勧めします。







チャオ、じゃあね。



All Articles