Geçenlerde, Pisagor teoremini fizik hesaplamalarımızda çok kullandığımızı öğrendim ve korkarım ki gerçekten bir şey anlamadım.
Bir nesnenin yatay düzlemde sabit hızdan daha hızlı hareket etmediğinden emin olmak için bir kitaptan bir örnek 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;
}
}
Bunu bazı sayılarla deneyelim:
Bir nesne x'te 5 birimi ve z'de 5 birimi taşımaya çalışıyor. Toplamda sadece 5 adet yatay hareket edebilmelidir!
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
}
}
Şimdi bu iyi çalışıyor, ancak Pisagor olmadan da aynı şeyi yapabiliriz:
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
}
}
Pisagor olmadan yapmanın faydaları:
- Daha az satır
- Bu satırların içinde neler olduğunu okumak daha kolay
- ... ve daha az çarpma olduğu için hesaplanması daha az zaman alır.
Bana göre bilgisayar ve insanlar Pisagor teoremi olmadan daha iyi bir anlaşma elde ediyorlar! Ancak, ben emin bana Pisagor teoremi bir matematik kullanmanın yararı açıklamaya biri gibi olur bu yüzden, saygın yerlerde bir dizi Pisagor teoremini gördüğümüz gibi yanılıyorum değilim acemi .
Bunun birim vektörlerle bir ilgisi var mı? Bana göre bir birim vektör, bir vektörü normalleştirip kesir haline getirdiğimiz zamandır. Bunu vektörü daha büyük bir sabitle bölerek yapıyoruz. Hangi sabit olduğundan emin değilim. Grafiğin toplam boyutu? Her neyse, çünkü bu bir kesir, sanırım, bir birim vektör temel olarak bir x-1 ile 1 arasında çalışan x-ekseni ile -1 - 1 ile 1 arasında çalışan z-ekseni ile 3B bir ızgaraya sığabilecek bir grafiktir. -axis -1'den 1'e koşuyor. Bu, birim vektörler hakkında bildiğim her şey.
Ayrıca, yukarıdaki örneklerde gerçekten bir birim vektör yaratmıyoruz. Skalleri şöyle belirleyeyim mi:
// 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
Yine, bunun neden daha iyi olduğunu göremiyorum, ancak multiplicative_scalar bir unit_vector olduğundan daha fazla "unit-vector-y" var? Gördüğünüz gibi, "unit-vector-y" gibi kelimeler kullanıyorum, bu yüzden gerçekten bir matematik sınavı değilim! Ayrıca birim vektörlerin Pisagor teoremiyle bir ilgisi olamayacağının farkındayım, bu yüzden yanlış ağaca havlarsam tüm bunları görmezden gelin.
Ben çok görsel bir insanım (Ticaretten 3B modeller ve konsept sanatçısıyım!) Ve diyagramları ve grafikleri gerçekten, gerçekten faydalı buluyorum, bu yüzden insanca mümkün olduğunca lütfen!
sqrt(2.5*2.5 + 2.5*2.5)
(2.5, 2.5)
değil, 5. yaklaşık 3.54 arasında bir büyüklüğe sahip olduğu