問題タブ [trigonometry]

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.

0 投票する
9 に答える
8174 参照

c - sin、cos、tan、丸め誤差

C/C++ で三角関数の計算を行っていますが、丸め誤差の問題が発生しています。たとえば、私の Linux システムでは次のようになります。

このプログラムは、次の出力を提供します。

正解がもちろん0のとき。

三角関数を使用する場合、どの程度の丸め誤差が予想されますか? そのエラーをどのように処理するのが最善ですか? Bruce Dawson のComparing Floating Point Numbersから、浮動小数点数を比較するための Units in Last Place 手法に精通していますが、0 と 1.22e-16 はかなりの数の ULP が離れているため、ここでは機能しないようです。

0 投票する
2 に答える
3964 参照

c++ - 衝突検出のためにモデル座標をワールド座標に変換するc++opengl

(これはすべてオルソモードで、原点は左上隅にあり、xは右に正、yはy軸に沿って正です)

ワールドスペースに長方形があり、回転m_rotation(度単位)を持つことができます。

私は長方形をうまく操作することができます、それは回転し、拡大縮小し、あなたがそれをしたいすべてのものをします。

私が本当に混乱しているのは、ローカル座標から長方形の世界座標を計算することです。

私は次の式を使おうとしています:

次のような式を実装してみました。

平行移動した点へのベクトルを作成し、それを長方形のworld_verticeメンバー変数に格納します。それはいいです。ただし、メインの描画ループでは、(0,0,0)からベクトルBLに線を描画し、長方形上の点(長方形の左下隅)から線が円を描いているように見えます。世界の起源の周りの座標。

基本的に、m_orientationが大きくなると、(0,0,0)ワールド座標系の原点の周りに巨大な円が描かれます。編集:m_orientation = 360の場合、0に戻されます。

私はこの部分を間違っているように感じます:

tは、x軸からラジアンで測定された角度です。

おそらく、この式でm_orientation(長方形の回転角)を使用することは想定されていませんか?

ありがとう!

編集:私がこれを行っている理由は、衝突検出のためです。衝突検出のために、長方形(まもなく剛体になる)の座標がワールド座標の場所のどこにあるかを知る必要があります。

0 投票する
5 に答える
3702 参照

c# - C#-三角法コードの説明(物理学)

このコードは、XNAフレームワークで構築されたゲームから取得されました。三角法と物理学の観点から、それがどのように機能するかについて説明したいと思います。

ball.velocity = new Vector2((float)Math.Cos(cannon.rotation)、(float)Math.Sin(cannon.rotation));

ball.rotationは、私が考えるべきスプライトの回転、ラジアンです。

なぜ彼らはラジアン単位の角度を使用してx位置を見つけるだけで、同じことを斜辺が指している方向のy位置を見つけることができるのですか。

私がこれを尋ねた理由。このフレームワークがtrigの計算をどのように行うかを感じてみたいと思います。マウスがある方向にスプライトを回転させようとしています。つまり、xとyがわかっているので、角度が必要です。

したがって、ここには2つの質問があります。上記のコードを説明し、既知の点の方向にスプライトを向けます。

アップデート:

xnaは逆座標系を使用しているため、オブジェクトが存在する点aは(0,0)ではないことがわかりました。だから今私が持っている変数はこれらです:

オブジェクトのポイント。マウスのポイント。

0 投票する
11 に答える
9182 参照

c - 組み込みシステムの三角関数

sin関数は遅く、cos組み込みシステムで実行するには多くのリソースが必要です。よりリソースを節約し、より高速な方法で計算sinして機能させるにはどうすればよいでしょうか?cos

0 投票する
5 に答える
28244 参照

c++ - 角度と長さを指定して、座標を計算するにはどうすればよいですか

左上隅が (0,0) で、角度 30 度、始点 (0,300)、線の長さ 600 が与えられていると仮定すると、線の終点を計算して線が与えられた角度を表します。

C 疑似コードは次のとおりです。

0 投票する
6 に答える
49337 参照

math - Javaの緯度/経度座標から一定の距離離れたバウンディングボックスを計算する

座標 (緯度、経度) を指定して、座標から特定の距離 (たとえば 50 km) 離れた正方形の境界ボックスを計算しようとしています。したがって、入力として緯度、経度、距離があり、出力として2つの座標が必要です。1 つは南西 (左下) の角で、もう 1 つは北東 (右上) の角です。ここで、Python でこの質問に対処しようとするいくつかの回答を見てきましたが、特に Java の実装を探しています。

明確にするために、私は地球上でのみアルゴリズムを使用するつもりであるため、可変半径に対応する必要はありません。

非常に正確である必要はなく (+/-20% で問題ありません)、短距離 (150km 以下) の境界ボックスを計算するためにのみ使用されます。そのため、効率的なアルゴリズムのために精度をいくらか犠牲にしてもかまいません。どんな助けでも大歓迎です。

編集:私はもっと明確にするべきでした。私は本当に円ではなく四角形を求めています。四角形の中心と四角形の周囲に沿ったさまざまな点との間の距離は、円のように一定の値ではないことを理解しています。私が言いたいのは、中心から周囲の 4 つの点のいずれかに線を引くと、周囲の辺に垂直な線になる正方形のことだと思います。これらの 4 つの線は同じ長さになります。

0 投票する
3 に答える
1352 参照

c# - Easy Trig - オブジェクトをある位置に移動する

これが非常に簡単な三角法であることは知っていますが、ベクトルなどについて紹介されたことはなく、これがどのように機能するかを理解できていません。

点 XY と方向 N にあるオブジェクトが与えられた場合、そのオブジェクトをその方向に移動するにはどうすればよいでしょうか?

また、オブジェクトが点 XY にあり、目的地が点 XY にある場合、オブジェクトを目的地に向かって移動するにはどうすればよいでしょうか?

ベクトルなどを追加する必要があることは理解しています。

誰かが消化しやすい資料を私に紹介してくれませんか?

ありがとう。

0 投票する
25 に答える
1349663 参照

c++ - C++でPI定数を使用する方法

いくつかのC++プログラムでPI定数と三角関数を使用したいと思います。で三角関数を取得しinclude <math.h>ます。ただし、このヘッダーファイルにはPIの定義がないようです。

手動で定義せずにPIを取得するにはどうすればよいですか?

0 投票する
2 に答える
1133 参照

algorithm - 固定小数点逆正弦

4.12固定小数点の角度の正弦を計算する(できれば高速な)方法を知っている人はいますか?(結果は円の32768分の1または度のいずれかです)

4.12固定小数点は、数値が16ビットで、左に12シフトされることを意味します。したがって、1.0は(1 << 12)または4096になります。0.5は(0.5 << 12)==2048などになります。

0 投票する
1 に答える
8361 参照

opengl - 3Dでパスを押し出す方法は?

3D でパスを押し出そうとしています。いくつかのポイントをたどり、「チューブ」に正多角形を使用するだけです。今のところ、プロトタイピングを迅速に行うために Processing を使用していますが、後でコードを OpenGL に変換します。

私の問題は、「関節」を直角に回転させることです。角度を取得する方法は大まかにわかっていると思いますが、よくわかりません。

Simon Greenwold によるサンプル (Processing > File > Examples > 3D > Form > Vertices) から始めました。これまでの試みは次のとおりです。

更新 > リファクタリング/簡略化されたコード

押し出しクラスは次のとおりです。

インポート処理.core.PMatrix3D;

アップデート

私のスケッチは次のようになります。

押し出しの処理 http://doc.gold.ac.uk/~ma802gp/trusion.gif

問題は、ジョイントが直角ではないため、押し出しが正しく見えないことです。これは旋盤で実現できるため、あまり良い例ではありません。旋盤で任意の点のセットと軸を操作できるようになれば、それは素晴らしいことです。Liviu Stoicoviciu のアートに基づいて幾何学的なボディを作成しようとしているため、押し出しを使用しています。

以下にいくつかのサンプルを示します。

星の絵 http://doc.gold.ac.uk/~ma802gp/star_painting.jpg

星の紙の彫刻 http://doc.gold.ac.uk/~ma802gp/star_paper_sculpture.jpg

三角形 http://doc.gold.ac.uk/~ma802gp/triangles_pencil.jpg

画質が悪くてすみません。

三角形の画像でわかるように、これは押し出しで実現できます。

アップデート

draw メソッドで drhirsch のヘルプを使用する試みは次のとおりです。

コードをリファクタリングしたので、CShape と呼ばれていたクラスは Extrude と呼ばれるようになりました。コードは少なくなり、できれば単純になりました。また、PVector オブジェクトの Vector の代わりに PVector オブジェクトの配列を使用しているため、混乱する可能性があります。

これは、いくつかのエッシャー風の結果を伴う私のさらに別の試みです。

更新されたドロー

fix_test http://doc.gold.ac.uk/~ma802gp/trusion2.gif

drhirschによる編集 これはうまくいくはずです:

アップデート

これが私の問題の簡単な図です。

説明 http://doc.gold.ac.uk/~ma802gp/description.gif

青色のパスは、pointNum = 6 の場合、コード内の points[] PVector 配列と同等です。赤色のパスは解決に苦労しているもので、緑色のパスは達成したいものです。

アップデート

私が思う頂点の順序に関するいくつかの小さな問題。以下は、6 ポイントを使用し、スター条件 (if/else % 2) を使用しない印刷画面です。

ポイント1 http://doc.gold.ac.uk/~ma802gp/points1.gif

代替テキスト http://doc.gold.ac.uk/~ma802gp/points2.gif