問題タブ [coordinate-transformation]
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.
coordinate-transformation - (x,y,z) 座標を単一のインデックスに変換して、要素から近隣要素までの「距離」を最小化する
[0,N[ の整数座標を持つ固定サイズ (N) 3D 空間がある場合、それらの (x,y,z) 座標を単一の線形インデックス [0,N*N*N[] に変換するにはどうすればよいですか? 、1 つの座標 (x、y、z) から次の隣接座標 (x-1、y、z)、(x+1、y、z)、... (26 の隣接座標) までの平均距離が最小化され、比較されます。単純な「インデックス = x + N*y + N*N*z」式に?
私の場合、N は固定されていて大きすぎないため、高価な数式は許容できるソリューションです。そのため、マッピングを 1 回計算して、高価な場合は結果をキャッシュすることができます。
これが必要な理由は、近接度に基づいて同じ値を圧縮しようとしているためです。そのため、隣接する値を配列内で隣り合わせに配置すると、圧縮率が向上します。
いくつかのJavaコードを指すことができれば、さらに良いでしょう...
3d - 3D 平面と既知の原点から新しい基底 (変換行列) を計算するにはどうすればよいですか?
3D 平面とその上の任意の点が与えられ、新しい基底の起源を検討したい場合、次(0,0,0)
のことが可能です。(A) この情報から基底を定義しますか? (B) ワールド空間と新しい基底の間で変換できる変換行列を作成しますか?
変換はアフィンであると想定できます。
どうもありがとう!
r - 経度・緯度からUTMゾーンを求める(変換する)
いくつかの緯度/経度ポイントを期待するプログラムを作成しています。メートル単位で計算を行うために、それらを内部で UTM に変換しています。
緯度/経度ポイント自体の範囲は非常に小さく、約 200m x 200m です。ほとんどの場合、それらは単一の UTM ゾーン内にあることに依存できます (運が悪く、ゾーンの境界を越えていない限り)。
ただし、緯度/経度が含まれるゾーンは無制限です。ある日、このプログラムはオーストラリアの人々のために実行される可能性があります (そして、ああ、1 つの州でさえいくつのゾーンにまたがっており、それが私にどれほどの苦痛をもたらしたか...)、別の日にはメキシコの人々のために実行されるかもしれません。
私の質問は、特定の経度/緯度がどのゾーンにあるかを判断して、変換ライブラリに入力できるようにする方法はありますか (現在、proj4 と R パッケージを使用していますrgdal
)。
私の言語は R ですが、答えは R である必要はありません。単純な計算かもしれませんし、実行可能ファイルへのシステム コールを埋め込むことができるかもしれませんproj
。
乾杯。
matrix - オイラー角からの単位ベクトル
拡張現実エンジンである artoolkit に取り組んでいます。エンジンはカメラから入力を受け取り、マーカーを探し、カメラの変換マトリックスを作成します。変換行列を逆にすると、マーカー座標系でカメラの変換と移動を抽出できます。
getAngle メソッドもあり、変換行列から 3 つのオイラー角が得られます。(出典: http://artoolkit.sourceforge.net/apidoc/ar_8h.html#a91c0942b8061abae28060cfd548ed2a ) これら 3 つのオイラー角から方向単位ベクトルを作成したいと思います。この方向単位ベクトルを使用することで、プレイヤーが携帯電話のカメラ面方向に対して垂直にカメラから弾丸を発射しているという印象を与えることができます。弾丸はカメラ XYZ の位置で始まり、さらに位置は古い位置 + 単位ベクトルに時間デルタの速度を掛けたものになります.....
私はそれを正しくやっていますか?そして、オイラー角からこの方向ベクトルを抽出する方法。ありがとう
c++ - 回転した画像をキャンバスに描く
画像の一部を別の画像の回転バージョンに置き換えようとしています。画像ソースは、origin_source が image *this の orign_dest になるように表示する必要があります。また、ピクセルを置き換える前に、ソースを origin_source を中心に回転させる必要があります。
以下のコードは、R がミラー行列の場合に機能しますが、実際に回転行列にすると、結果の画像がずれてしまいます。なにが問題ですか?
使用されるその他の関数を次に示します。
T=ダブル
方向は正規化されたベクトルです
また
matlab - Matlab で (x,y) 座標を変換する
Matlab には、次の行列があります。
Grid
寸法付き[x,y]
私はそれを単一の行マトリックスに再形成しました
Row
寸法で[1,x*y]
。
Grid(x,y)
matrixRow(1,?)
で座標を見つける場所、またはその逆を知るにはどうすればよいですか? Matlabにこれのための機能はありますか?
geometry - ポイントを球に投影する方法
ポイント(x、y、z)がある場合、それを球(x0、y0、z0、radius)(その表面上)に投影する方法。私の入力は、点と球の座標になります。出力は、球上の投影点の座標である必要があります。
デカルト座標から球面座標に変換するだけですか?
objective-c - 視差:レイヤー上のポイントを他の視差レイヤーの座標空間に変換する
cocos2d親レイヤーの子として、次のzオーダーとディメンション(オフセットなし)を持つ3つのサブレイヤーがあります。
最上層:z:-1幅:2048高さ:2048
中間層:z:-2幅:1536高さ:1536
最深層:z:-3幅:1024高さ:1024
cocos2dで使用されるglViewのサブビューとしてUIScrollView(ViewControllerに接続されている)を使用して、各レイヤーの位置を次の比率で変換(したがってスクロール)します(したがって、3D効果を実現します)。
最上層:dragPt.x * 1(yについても同じ)
中間層:dragPt.x * 0.75(yについても同じ)
最深層:dragPt.x * 0.5(yについても同じ)
次のように、各レイヤーでユーザー入力を検出します
。-次のサイズのglViewに別のサブビュー(seeThroughと呼びます)をアタッチします(アプリは横向きモードです)
--(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
このサブビューで使用して、タッチポイントを「touchLocation」という名前のiVar。
-cocos2d-layerで、次のコードを使用して、各レイヤーのタッチ位置を決定します。
(320は画面の高さであり、そこからYをUIからgl座標系に変換する必要があります)
レイヤーをスクロールすると、それらの位置は負になります。seeThroughビューを参照プラットフォームとして使用して480x320サーフェスのタッチをキャプチャすることにより、seeThroughビューでキャプチャされたポイントから各レイヤーの負の位置の値を差し引くだけで、各レイヤーの座標系のタッチ位置を正しく特定できます。
問題は、そのような参照ポイントがまったくない場合です。たとえば、ユーザー入力なしでレイヤーの1つでスプライトの位置を取得しようとした場合です。
基準点がないので、cocos2dレイヤーの1つで特定の点を特定できる解決策を思い付くことができません。
私はいくつかの方法(convertToNodeSpace、convertToWorldSpace、そして日が経つにつれて最終的にはワイルドな数学)を試しましたが、どれも成功しませんでした。
したがって、私の質問は次のとおりです。レイヤーの1つにあるスプライトの位置を特定し、それを他のレイヤーの1つのスペースに変換するにはどうすればよいですか。
シナリオ:
-スプライトはdeepestLayerにありますが、midLayerの場所に移動したい
-スプライトはtopmostLayerにあり、deepestLayerに移動したい
-など...
coordinate-transformation - 4x4変換行列-回転の中心を見つける方法は?
任意の4x4変換行列が与えられた場合、回転の中心を見つけるにはどうすればよいですか?
android - スクリーンスペース座標をモデルスペース座標に逆投影
3Dシーンが表示されるAndroidアプリケーションで作業しており、ユーザーは画面をクリック/タップすることで領域を選択できるはずです。シーンは、さまざまなオブジェクトが配置された平面(ゲーム)ボードです。
さて、問題は、実際の画面空間座標からボード上のクリックされた領域をどのように取得するかです。
gluUnProject()
(ほぼ)必要なすべてのパラメーターにアクセスできるので、を使用することを計画していました。残念ながら、winZ
パラメータが欠落しており、タッチイベントがGLスレッドとは異なるスレッドで発生しているため、現在の深度を取得できません。
私の新しい計画は、引き続きgluUnProjectを使用することですが、winZ
0を使用して、結果のポイントをボードに投影します(ボードはモデル空間でから0,0,0
に伸び10,0,10
ます)。しかし、これを行う方法がわからないようです。
誰かがこれを行うために必要な数学を手伝ってくれるか(行列は私の最強の側面ではありませんでした)、またはおそらくより良い解決策を見つけることができれば、私は非常に幸せです。
明確にするために; これが私がやりたいことの画像です
。赤い長方形はデバイス画面を表し、緑のxはタッチイベントを表し、黒い正方形はボードを表します(灰色の細分は1ユニットの正方形を表します)。ボード上のどこでタッチが発生したかを把握する必要があります(この場合は正方形1,1にあります)。