Saya baru-baru ini belajar bahwa kita banyak menggunakan teorema Pythagoras dalam perhitungan fisika kita dan saya khawatir saya tidak benar-benar mengerti maksudnya.
Berikut ini contoh dari buku untuk memastikan objek tidak bergerak lebih cepat daripada MAXIMUM_VELOCITY
konstanta pada bidang horizontal:
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;
}
}
Mari kita coba ini dengan beberapa angka:
Objek mencoba memindahkan 5 unit dalam x dan 5 unit dalam z. Seharusnya hanya dapat memindahkan 5 unit secara horizontal total!
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
}
}
Sekarang ini berfungsi dengan baik, tetapi kita dapat melakukan hal yang sama tanpa Pythagoras:
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
}
}
Manfaat melakukannya tanpa Pythagoras:
- Garis kurang
- Dalam garis-garis itu, lebih mudah untuk membaca apa yang terjadi
- ... dan butuh waktu lebih sedikit untuk menghitung, karena ada lebih sedikit perkalian
Sepertinya saya seperti komputer dan manusia mendapatkan kesepakatan yang lebih baik tanpa teorema Pythagoras! Namun, saya yakin saya salah karena saya telah melihat teorema Pythagoras di sejumlah tempat terkemuka, jadi saya ingin seseorang menjelaskan kepada saya manfaat menggunakan teorema Pythagoras kepada seorang pemula matematika .
Apakah ini ada hubungannya dengan vektor satuan? Bagi saya vektor satuan adalah ketika kita menormalkan vektor dan mengubahnya menjadi pecahan. Kami melakukan ini dengan membagi vektor dengan konstanta yang lebih besar. Saya tidak yakin apa itu konstan. Ukuran total grafik? Lagi pula, karena ini pecahan, saya ambil, vektor satuan pada dasarnya adalah grafik yang dapat masuk ke dalam kisi 3D dengan sumbu x berjalan dari -1 ke 1, sumbu z berjalan dari -1 ke 1, dan y -aksis berjalan dari -1 ke 1. Itu benar-benar semua yang saya tahu tentang vektor satuan ... tidak banyak: P Dan saya gagal melihat kegunaannya.
Selain itu, kami tidak benar-benar membuat vektor satuan dalam contoh di atas. Haruskah saya menentukan skalar seperti ini:
// 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
Sekali lagi, saya tidak dapat melihat mengapa ini lebih baik, tetapi lebih "unit-vector-y" karena multiplicative_scalar adalah unit_vector? Seperti yang Anda lihat, saya menggunakan kata-kata seperti "unit-vector-y" jadi saya benar-benar bukan jagoan matematika! Juga sadar bahwa vektor satuan mungkin tidak ada hubungannya dengan teorema Pythagoras jadi abaikan semua ini jika saya menggonggong pohon yang salah.
Saya orang yang sangat visual (modeller 3D dan artis konsep berdasarkan perdagangan!) Dan saya menemukan diagram dan grafik benar-benar bermanfaat, jadi sebanyak mungkin yang bisa dilakukan secara manusiawi!
sqrt(2.5*2.5 + 2.5*2.5)
(2.5, 2.5)
memiliki besaran sekitar 3,54, bukan 5.