私は最近、ピタゴラスの定理を物理計算で多く使用していることを学びましたが、私は本当に意味が分からないのではないかと心配しています。
これは、オブジェクトが水平面内の定数よりも速く移動しないようにするための本の例MAXIMUM_VELOCITY
です。
MAXIMUM_VELOCITY = <any number>;
SQUARED_MAXIMUM_VELOCITY = MAXIMUM_VELOCITY * MAXIMUM_VELOCITY;
function animate(){
var squared_horizontal_velocity = (x_velocity * x_velocity) + (z_velocity * z_velocity);
if( squared_horizontal_velocity <= SQUARED_MAXIMUM_VELOCITY ){
scalar = squared_horizontal_velocity / SQUARED_MAXIMUM_VELOCITY;
x_velocity = x_velocity / scalar;
z_velocity = x_velocity / scalar;
}
}
これをいくつかの数字で試してみましょう。
オブジェクトがxで5ユニット、zで5ユニットを移動しようとしています。合計で5ユニットしか移動できないはずです!
MAXIMUM_VELOCITY = 5;
SQUARED_MAXIMUM_VELOCITY = 5 * 5;
SQUARED_MAXIMUM_VELOCITY = 25;
function animate(){
var x_velocity = 5;
var z_velocity = 5;
var squared_horizontal_velocity = (x_velocity * x_velocity) + (z_velocity * z_velocity);
var squared_horizontal_velocity = 5 * 5 + 5 * 5;
var squared_horizontal_velocity = 25 + 25;
var squared_horizontal_velocity = 50;
// if( squared_horizontal_velocity <= SQUARED_MAXIMUM_VELOCITY ){
if( 50 <= 25 ){
scalar = squared_horizontal_velocity / SQUARED_MAXIMUM_VELOCITY;
scalar = 50 / 25;
scalar = 2.0;
x_velocity = x_velocity / scalar;
x_velocity = 5 / 2.0;
x_velocity = 2.5;
z_velocity = z_velocity / scalar;
z_velocity = 5 / 2.0;
z_velocity = 2.5;
// new_horizontal_velocity = x_velocity + z_velocity
// new_horizontal_velocity = 2.5 + 2.5
// new_horizontal_velocity = 5
}
}
これでうまくいきましたが、ピタゴラスなしでも同じことができます。
MAXIMUM_VELOCITY = 5;
function animate(){
var x_velocity = 5;
var z_velocity = 5;
var horizontal_velocity = x_velocity + z_velocity;
var horizontal_velocity = 5 + 5;
var horizontal_velocity = 10;
// if( horizontal_velocity >= MAXIMUM_VELOCITY ){
if( 10 >= 5 ){
scalar = horizontal_velocity / MAXIMUM_VELOCITY;
scalar = 10 / 5;
scalar = 2.0;
x_velocity = x_velocity / scalar;
x_velocity = 5 / 2.0;
x_velocity = 2.5;
z_velocity = z_velocity / scalar;
z_velocity = 5 / 2.0;
z_velocity = 2.5;
// new_horizontal_velocity = x_velocity + z_velocity
// new_horizontal_velocity = 2.5 + 2.5
// new_horizontal_velocity = 5
}
}
ピタゴラスなしでそれを行う利点:
- 少ない線
- これらの行内で、何が起こっているかを読みやすくします
- ...また、乗算が少ないため、計算にかかる時間が短くなります
コンピューターと人間はピタゴラスの定理なしでより良い取引を得るように思えます!しかし、ピタゴラスの定理を多くの評判の良い場所で見たので間違いだと思うので、数学の初心者にピタゴラスの定理を使用することの利点を誰かに説明してほしい。
これは単位ベクトルと関係がありますか?私にとって単位ベクトルとは、ベクトルを正規化し、分数に変換することです。これを行うには、ベクトルをより大きな定数で除算します。何が定数なのかわかりません。グラフの合計サイズは?とにかく、それは分数なので、単位ベクトルは基本的に、-1から1までのx軸、-1から1までのz軸、およびyの3Dグリッド内に収まるグラフです-axisは-1から1まで実行されます。それは文字通り、単位ベクトルについて知っているすべてです...あまりありません:Pそして、それらの有用性がわかりません。
また、上記の例では単位ベクトルを実際に作成していません。このようなスカラーを決定する必要があります:
// a mathematical work-around of my own invention. There may be a cleverer way to do this! I've also made up my own terms such as 'divisive_scalar' so don't bother googling
var divisive_scalar = (squared_horizontal_velocity / SQUARED_MAXIMUM_VELOCITY);
var divisive_scalar = ( 50 / 25 );
var divisive_scalar = 2;
var multiplicative_scalar = (divisive_scalar / (2*divisive_scalar));
var multiplicative_scalar = (2 / (2*2));
var multiplicative_scalar = (2 / 4);
var multiplicative_scalar = 0.5;
x_velocity = x_velocity * multiplicative_scalar
x_velocity = 5 * 0.5
x_velocity = 2.5
繰り返しますが、なぜこれが優れているのかわかりませんが、multiplicative_scalarはunit_vectorであるため、より多くの「unit-vector-y」ですか?ご覧のとおり、「unit-vector-y」などの単語を使用しているので、数学の達人ではありません。また、単位ベクトルはピタゴラスの定理とは何の関係もないかもしれないので、間違ったツリーをbarえている場合はこのすべてを無視してください。
私は非常に視覚的な人物です(3Dモデラーであり、業界のコンセプトアーティストです!)。私は図とグラフが本当に役立つと思います。
sqrt(2.5*2.5 + 2.5*2.5)
(2.5, 2.5)
約3.54の大きさは、ありません。5.持つ