問題タブ [vectormath]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 任意次元の数学ベクトル用の 1 つのクラス
数学的ベクトル (実数を保持) のクラスを作成したいと考えています。ベクトルの操作はベクトルの次元に関係なくほとんど同じであると考えたので、 、 、 、 ... のようなクラスを書く代わりに、クラスVector2D
をVector3D
書きVector4D
たいだけですVector
。
問題は、2D ベクトルと 4D ベクトルを乗算できないことです。そのため、フィールドについて考えましたdimension
。しかし、今ではすべての操作でそれをチェックしなければならなかったので、それよりもうまくやれるかどうか自問自答しました. これは、ジェネリックが頭に浮かんだことです。しかしVector<? extends Dimension>
、ここでDimension
は単純に の基本クラスであるDimension.One
などのようなことをしなければなりません。つまり、ベクトルを使用するすべての次元に対してクラスをDimension.Two
作成する必要があります。Dimension
だから私の質問:
実行時に次元をチェックすることなく、任意の次元のベクトルに対して 1 つのクラスを作成する方法はありますか?
.net - フライングカメラのLookVectorの処理
XNAでフリーフライングカメラをセットアップしようとしています。この例では、主にCLRに接続されたLuaを使用してカメラを制御しています。
私はこれまでに次のことを試しました。
結果は、同じポイントの正と負の形式の間でカメラが前後にバウンドするようになるため、私は明らかに正しいことをしていません。
KeyUpで使用しているコードは次のとおりです。
LookVectorが何であるかを誤解しましたか? LocalCamera
は現在のカメラオブジェクトでTarget
あり、カメラが見ている位置Position
であり、ターゲットを見ているポイントです。
linear-algebra - 方向の異なるベクトルを見つける最も簡単な方法
(x、y、z)として与えられる入力ベクトルを取得し、それとは異なる方向の新しいベクトルを見つける最も簡単な方法は何ですか?どの方向でもかまいませんが、入力とは異なる方向である必要があります(些細な正反対の方向を除く)。
分岐を伴わない簡単な解決策があるはずなのに、見つからないようですが、実際にあるのか知りたいです。
c# - XNA ベクトル演算の動き
私は、大学のゲームデザインクラスのために、c# xna でトップダウンの 2D RPG ゲームを作成しています。敵をプレイヤーに向けて移動させる単純な AI を作成しようとしています。現在、私のコードは次のとおりです
update メソッドでターゲットが正しく渡されます。
しかし、敵はまったく動かない。敏捷性と移動速度が 0 でないことを確認するコードをコンストラクターに追加しました。これらの値を変更しても何も起こりません。
助けてくれてありがとう。
algorithm - 速度を理解し、Boids アルゴリズムを実装していますか?
そのため、疑似コード hereに基づいて、Brightscript への Boid の移植に取り組んでいます。
関連するデータ構造を理解しようとしています。たとえば、Velocity は単一の値ですか、それとも 3D 値ですか? (つまりvelocity={x,y,z}
)
疑似コードがこれを混同しているように見えますが、ベクトルと単一値項目の両方を含む方程式が含まれている場合があります。
Velocity が 3 つの値である場合、これは理にかなっていますが、よくわかりません。
それで、私の最初の質問: 上記の疑似コードに基づいて、これは単一のボイドの正しいデータ構造ですか?
どこでpc
= 知覚された中心、およびpv
= 知覚された速度。
vector_add
、vector_sub
、vector_div
、およびベクトルのブール関数を実装しました。
この疑似コードから始めた理由は、他に読みやすいものを見つけることができなかったからですが、変数ごとにデータ構造が明示的に定義されていないため、まだ多くの疑問が残ります。
(編集)これが私が話していることの良い例です:
両方とも 3D 座標である場合、そうb.position - b[j].position
でない限り、どのように「100 未満」と見なすことができます< {100,100,100}
か?
math - 法線と点によって定義された平面が与えられたときに下り坂の方向ベクトルを見つける
したがって、空間P内の点と法線Nによって定義される平面があります。平面の「下り坂」を直接指す、法線ベクトルを見つけたいと思います。これをどうやって理解するのですか?
trigonometry - 任意の点を使用して、2 つの平行線間の最短距離を見つける
次のシナリオへの回答を取得するための信頼できるメソッドを作成する必要があります...
線分 AB と任意の点 C が与えられたとき、点 C を通り AB に平行な線上で A に最も近い点を見つけるにはどうすればよいでしょうか? (上記の信頼性とは、A、B、および C の座標を完全に恣意的で予測不可能にすることを許可しながら、D を見つけるアルゴリズムの能力を指します。考えられるシナリオ、悲しいことに...)
下の図に表示されているデータの場合、D の x、y 座標を確実に見つけるにはどうすればよいでしょうか?
AB と CD が平行であるということは、傾きが同じであることを意味します。
私は多くの異なる式を無駄に試しましたが、これに数週間取り組んでいます. 私は困惑しています!
directx - ジオメトリ シェーダーを使用したビルボード
ポイントを入力として受け取り、三角形のストリームを出力するジオメトリ シェーダーを使用してビルボードをレンダリングしようとしています (DirectX11 を使用)。しかし、現在の結果は私が期待するものではありません。
比較のために、ここに 2 つのスクリーンショットを示します。まったく同じセットのパーティクルをレンダリングし、同じ方向 (多かれ少なかれ、カメラを ~90° 回転させる必要がありました) と距離から見たものです。ポイントとしてレンダリングしたものと、ビルボードでレンダリングしたものですシェーダー:
2 番目の画像でわかるように、ポイントとしてレンダリングすると、パーティクルが中心から離れて移動し、ほぼ画面全体をカバーしていることがはっきりとわかりますが、ビルボード シェーダーでレンダリングすると、スケールがわずかに変化しますが、常に静止している。
残念ながら、何がこれを引き起こしているのかについての手がかりはありません。私はthisなどのチュートリアルに従ってきました.これは、マトリックスがどのように設定されることになっているのかを説明していますが、結果は私の期待または実装が間違っていることを示しています.
以下は、ビルボード シェーダーのコードです。このシェーダーは、マトリックスを構築してパーティクルの方向を記述し、ビルボードの 2 つの三角形を放出します。
参考までに、パーティクルを単純なポイントとしてレンダリングするためのシェーダー コードを次に示します。
私が気付いたもう 1 つの奇妙な点は、少なくとも常にではなく、私のビルボードがカメラの方を向いていないことです。ただし、マトリックスをセットアップする方法からすると、そうなると思います。代わりに、2 つの反対方向から見た場合にのみカメラの方を向き、カメラを回転させ始めるとすぐに幅が狭くなります。
これにより、マトリックスの作成を間違えたと思いましたが、それを見つけることができません。
うまくいけば、あなたたちは私が問題を見つけるのを手伝ってくれるでしょう. よろしくお願いします。
編集
この問題の解決策を見つけたようですが、なぜこれが解決策なのかわかりません。奇妙な理由で、localToWorld マトリックスに ViewProjection マトリックスを掛けることができません。代わりに、次のように 2 つのステップに分ける必要があります。
これが事実である理由がわかりません。おそらく、デフォルトの column_major の代わりに row_major マトリックスを使用することに関連しています。しかし、現状では、この動作は私にはまったく意味がありません。行列の乗算は連想的でなければならないため、上記のスニペットは元のコードと同じ結果になるはずですが、明らかにそうではありません。ここで何が起こっているのか、いくつかの光を当てることができる人もいるかもしれません。
c++ - ベクトルによる惑星軌道のシミュレーション
ベクトルがどのように機能するかをよりよく理解するために、太陽を周回する地球の非常に単純なシミュレーションを作成しようとしています。現在、私が望むのは、地球が太陽の周りを一周することだけです。物理法則は考慮されていません。
私がやっていることはうまくいくだろうと思っていましたが、フィボナッチスパイラルに何らかの動きを引き起こしました.
計算のどこが間違っていますか?
c++ - 速度 c++ の数学関数クラスの改善
プログラム内で使用するためにいくつかの数学関数を作成しましたが、それらは非常に頻繁に使用されます。a) ロジックが改善されているかどうか、b) これを行うためのより良い方法があるかどうかを確認するために、コードを提供したいと思います。必要に応じてインクルードされるヘッダー ファイルです。
私はc++ 11用にコンパイルしていないので、そのことを心に留めておいてください。- 負の数の rootDouble が数学的に正しくないことも認識しています。
最初に発生する可能性があるのは、ベクトル入力を参照渡しに変換することだと思います。その周りのコメントは大歓迎です。
回答を受け入れるという点では、これらの機能をどのように改善して速度を向上できるかを知りたいです。
++ 私はこれをかなり早く投稿しました。恥ずかしいエラーを内部に残さなかったことを願っています!