Marupeke-IKD

ゲームプログラマを生業としています。「マルペケつくろ~どっとコム(http://mar…

Marupeke-IKD

ゲームプログラマを生業としています。「マルペケつくろ~どっとコム(http://marupeke296.com/)」という主にプログラマ向けの情報サイトを運営しています。「ゲームってどうやったら作れるんだろう…」という戸惑いにお答えできる情報を発信していければと思います。

マガジン

  • ビビッと感じる数学パズル

  • マルペケの徒然なるプログラムのお話

    ゲームプログラマである筆者が日々の業務や趣味の中で見つけたプログラム技術について、些末に書き連ねて行こうと思います。枯れた技術も今の技術もごちゃまぜのおもちゃ箱ですが、その中に皆様のお役に立てるものがあれば幸いです。

  • Oculus Quest 2 + UnityでVR開発

    Oculus Quest 2とUnityでVRな世界を開発する方法などについて解説します。僕が得た知識のアウトプットとして掲載しようと思いますので、更新頻度はインプットの量によります(^-^;。

  • Rustやろうぜ!

    C++級のハイパフォーマンスと近代プログラムの安全性を両立し、マルチプラットフォームで実行可能なアプリケーションを同一コードから作成できる魅力たっぷりなRust。クライアントもサーバも、組み込み系までもカバーする今注目のRustで色々遊んで学んでみましょう!

  • 地面に足つくゲームプログラム

    ゲームプログラムでの普遍的な技術・設計・実装方法をご紹介。膨大なコードやリソースが必要なゲームプログラムをより頑健にする、足元をしっかり固める情報を発信致します(^-^)

最近の記事

正三角形を囲う最小の正方形は?(問題)

 今回は非常にシンプルな問題。一辺の長さが1の正三角形を囲う最小の正方形の辺の長さはいくつになるでしょうか?ちなみに上図右にあるように正方形の底辺を正三角形の1辺に合わせたものは最小ではありません。もっと小さい正方形があります。  この問題、中学生の皆さんは「こんな風に囲うんじゃないかな?」という正方形の囲い方だけでOKです。高校生以上の方は長さと共に是非「なぜそれが最小なのか?」という証明にチャレンジしてみて下さい。これ、かなり奥深いですよ。 ※解説はこちら その他の

    • 正三角形を囲う最小の正方形は?(解説)

      問題はこちら: 答え: 辺の長さ1の正三角形を囲う正方形は、上図のように正三角形の1頂点を角にし、他の頂点までの角度が丁度15°になるようにした時に最小になります。何となくそういう形かなと想像した方は多いのではないでしょうか?ただ、これを証明しようとすると中々大変です。なぜこの長さになり、なぜこれが最小正方形なのかを解説します。  なお以下の証明は僕が導いた一例でちょっと泥臭い印象です。もっとスマートな方法があるような気がしています。思い付いた方は是非コメントで教えて下さ

      • VBのデリゲートやラムダ式をC++のDLLに渡す時に色々注意があるお話

         関数の中で非同期処理を行い、その終了や結果を呼び出し元にお知らせしたい。そういう事って非常に良くあります。作っているアプリがVBやC#内だけで完結しているのであれば、デリゲートとかラムダ式を関数に渡せば、関数内で任意のタイミングでそれをコールバックできるので、呼び出し元は問題無くお知らせを受け取る事ができます。  しかし時にC++で作ったDLL内で非同期処理をして、その結果をVBやC#に返したいという事があります。それを実現するにはDLLにデリゲート(ラムダ式)を渡さなけ

        • 2段ジャンプの最大高と最大幅跳び距離(問題)

           横スクロールアクションゲームなどでは「2段ジャンプ」が良く使われます。これは1回目でジャンプした後に空中でもう1度ジャンプできる能力です。これによって1回のジャンプでは届かない遠くのブロックの上に飛び乗ったり、崖から落ちながら横穴に飛び込んだりとアクションの幅が広がりゲームが面白くなります。  今回はそんな2段ジャンプからの問題。今横方向に1秒で2m走るキャラクタがいます。キャラクタがジャンプした時の滞空時間は2秒です。また1回目のジャンプの後空中にいるどのタイミングでも

        正三角形を囲う最小の正方形は?(問題)

        マガジン

        • ビビッと感じる数学パズル
          199本
        • マルペケの徒然なるプログラムのお話
          48本
        • Oculus Quest 2 + UnityでVR開発
          5本
        • Rustやろうぜ!
          7本
        • 地面に足つくゲームプログラム
          12本

        記事

          2段ジャンプの最大高と最大幅跳び距離(解説)

          問題はこちら: 答え:高さは16m、幅跳びは8m  今回の2段ジャンプの仕様で、キャラクタは最大16mの高さまで到達でき、8mの距離を横跳びする事ができます。そして双方共に1回目のジャンプをした直後に2回目のジャンプをすると実現できます。なぜそういうタイミングなのかを含め解説します。 解説1:自由落下ジャンプの式 まず座標を整理しましょう。キャラクタの初期位置を(0,0)とし、横方向をX軸、上方向をY軸と定めます。キャラクタは1秒間に2m横移動できるので、横方向の速度Vx

          2段ジャンプの最大高と最大幅跳び距離(解説)

          道をスムーズに繋ごう(問題)

           今上図のように途切れた直線道路があり、間を繋ぐ工事をする事になりました。工事は左下の直線道の先端S(0,0)から始め、右上の道の先端G(6,4)まで滑らかに繋ぐ予定です。滑らかに繋ぐ方法は色々考えられますが、今回は接続道の経路の座標を以下の式で計算する事になりました: tはいわゆる媒介変数で、t=0の時が左下のスタート地点S、t=1の時が右上のゴール地点Gで、0≦t≦1で接続道のある位置を表せるとします。先端SはX軸方向(1,0)を向き、先端Gは(-1,1)の方向に進入す

          道をスムーズに繋ごう(問題)

          道をスムーズに繋ごう(解説)

          問題はこちら: 答え:以下の式 問題の道をスムーズに繋ぐ経路は上式で計算できます。式内の係数をどう計算するか解説します。 解説:スムーズは「微分」で 今回の接続道の経路は以下の式で計算するとしました: 問題の条件を満たす係数a~fを求めるのが目的です。  まず曲線はt=0の時にS(0,0)を通るのでt=0を代入してみます: 係数cとfがそれぞれゼロなのがわかりました。  t=1の時曲線はG(6,4)を通ります。同様にして、 aとbそしてdとeの関係が出てきました

          道をスムーズに繋ごう(解説)

          あまりに難し過ぎた伝説の図形問題(問題)

           ジュニア算数オリンピックは小学5年生までの小学生が挑戦できる算数の競技試験です。1992年から毎年開催されていて、世界中の小学生がチャレンジしています。出題される問題は、小学生の算数の範囲で解けるのですが、大人でも舌を巻くレベルの高難易度。その為試験を受けるのは算数が極めて得意な小学生が殆どのようです。  今回はそんな難問揃いの中から平成9年のジュニア算数オリンピックで出題された伝説の問題にチャレンジです。ずばり上の図のxの長さを求めて下さい。  この問題、参加した小学

          あまりに難し過ぎた伝説の図形問題(問題)

          あまりに難し過ぎた伝説の図形問題(解説)

          問題はこちら: 答え:5.5cm 図のxの長さは5.5cmになります。なぜそうなるかを以下で解説しますが、算数の範囲でこれをノーヒントで導くのは本当に難しいです。まずはその算数の範囲で解く方法を、その後に中学数学の範囲での解き方、高校数学の範囲での解き方をそれぞれ解説します。 算数の範囲で解く 図を見た時、使えそうな特徴が2つあるのがわかります。一つは底辺が2等分されている事、そして∠ADCが135°の有名角になっている事です。  底辺2等分は頂点から中点に線を引いて三

          あまりに難し過ぎた伝説の図形問題(解説)

          折り紙の中に面積1/2の正方形を作ろう(問題)

           今回はシンプルな折り紙の問題。  今1辺が1の正方形の折り紙があります。この折り紙を折って、その折り跡で面積1/2の正方形を作って下さい。ただし折り方のルールがあります。 定規等で長さを測るのはNG 辺と辺を合わせて折るのはOK 角と辺、角と角を合わせて折るのはOK 折り目が交差している所(辺と折り目も含む)は交点として利用できる。交点と角を合わせて折る、交点を通るように折り目を付けるのはOK。 以上です。要はちゃんと跡に残った目印となる物に沿って折るのはOKと

          折り紙の中に面積1/2の正方形を作ろう(問題)

          折り紙の中に面積1/2の正方形を作ろう(解説)

          問題はこちら: 答え:解説の手順で折る 一辺が1の正方形の中に面積1/2の正方形を折り目で作る事はできます。おそらく複数の解答があると思いますが、ここでは僕が思い付いた方法を解説します。 解説1:一辺が√2/2の正方形を目指す 面積が1/2の正方形という事は、一辺の長さLは、 です。この長さを見つければ答えにぐっと近付きます。幾何学で√2は割と簡単に作れます。そう、直角二等辺三角形の辺の比が1:1:√2でしたよね。これがポイントになりそうです。 解説2:十字に追って斜

          折り紙の中に面積1/2の正方形を作ろう(解説)

          円周率の日記念、小さい円の面積は?(問題)

           今日は2024.3.14。3月14日は、3.14、つまり円周率の日です。という事で円周率の元である円の問題を考えてみました。  上図の大きな円の半径は3です。中ぐらいの円2つは合同で、図のように上下2つだるまのように互いに外接していて、大きな円とも内接しています。この中くらいの円はこういう接し方が可能な一番直径が大きな円とします。そして緑色の一番小さな円は大きな円に内接、中ぐらいの円2つに外接しています。さてこの時、小さい円1つの面積はいくつになるでしょうか?  この問

          円周率の日記念、小さい円の面積は?(問題)

          円周率の日記念、小さい円の面積は?(解説)

          問題はこちら: 答え:π 小さい円の面積はπになります。円周率の日記念ですから、この答えが欲しかったww。どのように求めるか解説します。 解説:接する円の性質と三平方の定理で 求めたい緑の円の半径をxとします。このxを求める為に補助線を幾つか引いてあります。本当はこういう補助線が引ける根拠をちゃんと示さないといけないのですが、それは深堀に回すとしまして(^-^;、まずはある程度自明として答えまでの道筋を進む事にします。  点Aは大きい円の中心、点Bは中くらいの円の中心で

          円周率の日記念、小さい円の面積は?(解説)

          皆既日食に至るまでの被覆率は食分でどう変化する?(問題)

           皆既日食は太陽がその前を通る月によって覆われる天体現象です。  こちらの写真、これは2012年5月21日朝7時32分の東京の空で実際に観察された金環日食を僕が撮影したものです。当時東京は曇り空で、最大食になる直前まで太陽は厚い雲の後ろに隠れて見えませんでした。時計を見つめながら「だめか…」と思った瞬間、わずかな雲間から太陽が!レンズに取り付けたフィルター越しでは光量が足りず、慌ててフィルターを取り外し直撮りしたのをよく覚えています。人生で初めて見た金環日食は本当に神秘的で

          皆既日食に至るまでの被覆率は食分でどう変化する?(問題)

          皆既日食に至るまでの被覆率は食分でどう変化する?(解説)

          問題はこちら: 答え:以下の式 皆既日食で食分Lに対する被覆率Rは上式となります。この式をどう導出するか解説します。 解説1:扇形から三角形の面積を引く 今回の問題を図で確認してみましょう:  月と太陽の見かけの直径を1としておきます。こうする食分Lが0~1の範囲になって便利です。月の中心をP、太陽の中心をQとし、交点をA、Bとします。被覆率は図の赤線で囲まれた面積を円の面積で割れば求まります。  この赤線の領域は図の対称性からオレンジの領域の倍の面積になっているのは

          皆既日食に至るまでの被覆率は食分でどう変化する?(解説)

          Welzlの最小球アルゴリズムを非再帰で実装する

           前回Welzlの最小球アルゴリズムの理屈を説明しました:  最終的なアルゴリズムはシンプルなのですが、非常に激しい再帰呼び出しが起こる為、点群の数が増えるとすぐにスタックオーバーフローを起こしてしまいます。よってこのアルゴリズムを実用するには再帰しない形に直さないとちょっと実用に耐えないんですね。  そこで今回は非再帰なWelzlアルゴリズを実装してみようと思います。 単純にスタックするのは無理がある 関数が呼び出される時に引数と関数内のローカル変数がスタックメモリに

          Welzlの最小球アルゴリズムを非再帰で実装する