私は複雑な問題を抱えており、それは私が自信を持っていない数学の理解を伴います。
若干のコンテキストが役立つ場合があります。私は子供向けの3D列車シミュレーターを構築しており、WebGLを使用してブラウザーで実行されます。線路資産を配置するためのポイントのネットワークを作成し(画像を参照)、列車が移動するための参照を提供しようとしています。
私はスクリプトを作成できるデザイナーであり、実際にはプログラマーや数学者ではないため、問題を説明するために視覚的な表現を作成しました。
基本的に3つの形(図A、B、C)があり、幅はありますが、Aと曲線(B、C)の直線として表すことができます。曲線BとCはAから派生(曲げ修正)されているため、すべて同じ長さ(l)で112です。曲線(BとC)の半径(r)はそれぞれ285.5で、(a)角度は曲げられています。 atは22.5°でした。
各形状(A、B、C)には、それぞれに取り付けられた緑色のボックスの中央に示されている登録ポイント(開始点)があります。
私がやろうとしているのは、0、0から始まる「トラック」のネットワークを作成することです(標準のデカルト座標を使用)。
私の問題は、曲線の後に次の要素を配置する場所です。直線の場合は、y軸に沿った一定のオフセットとして長さを使用できるので問題ありませんが、それは退屈なので、曲線を追加する必要があります。
図Dは、可能なトラックレイアウトの例を示していますが、静的な回答(画像内のすべてが配置されている場所に基づく)を探しているわけではないことを理解してください。どのように構成しても適用できる式が必要です。追跡。
図Dを使用して、最初の要素の後に2番目の曲線要素を配置する場所を見つけようとしました。中心座標と半径を指定して、円の円周の点をプロットする式を使用しました(図E)。
直線の長さ(y位置)を設定しただけなので、ポイント1がありました。円の中心は、オフセットy位置、半径(r)(x位置)のオフセット、および角度(a)が常に22.5°(ちなみに、ラジアンに変換された)であるため、簡単に計算できます。式の要件に従って)。
数式に値を渡した後、数式は3時から反時計回りに作業していると想定していたため、正しい結果が得られませんでした。そのため、(a)から180を差し引き、それをラジアンに変換して、期待値を取得する必要がありました。結果。
それはうまくいきました。180°のトラックカーブを作成したい場合は、同じ中心点を使用して、毎回角度から22.5°を差し引くことができます。素晴らしい。しかし、私は図1と図2のようなよりダイナミックなトラックレイアウトが必要です。D&E。
では、図Eの作業点5は、その曲線セグメントの中心点を表すため、どのように処理すればよいでしょうか。わからない。
また、ボーナスの質問として、これはこれを行うための正しい方法ですか、それとも私は物事を複雑にしすぎていますか?
この問題は私がゲームを構築するのを妨げる唯一の問題であり、あなたが理解できるように、それは少し大きな問題なので、事前に誰かの貢献に感謝します。