2017-11-18 12 views
0

私はボールが回転する四角形から飛び跳ねるようなプログラムを作ろうとしていましたが、基本的な三角法を学ばなくてはなりませんでしたが、それは半不正確であったということでした。ボールが中心からちょうどちょっと離れた矩形に当たったときと同じように、それはまっすぐに進むか、または想定しなかった方向に跳ね返るでしょう。私の問題のより良い視覚化を得るために、あなたが行って、my fiddleをチェックしたなら、私はそれを感謝します。三角法の問題:四角で囲まれた円

私はそれが数学の問題だと思っています(私の学年は10年生や11年生まで学ばないと考えています)。ここで


は数学funcionsです:

function getNormal(a) { 
    return { 
     x: Math.sin(a), 
     y: Math.cos(a) 
    } 
} 

function reflect(n, v) { 
    let d = 2 * dot(v, n); 
    v.x -= d * n.x; 
    v.y -= d * n.y; 
    return v; 
} 

function dot(v1, v2) { 
    return v1.x * v2.x + v1.y * v2.y; 
} 

答えて

0

は、この場合には通常の計算が

x: - Math.sin(a), 
    y: Math.cos(a) 

    (or for opposite normal) 
    x: Math.sin(a), 
    y: - Math.cos(a) 

つ以上の可能

間違っている、接線方向の角度(表面ラインの角度)であるようです三角関数はあなたの言語のラジアンまたは度で動作していますか?

+0

OPのコードの主な問題を逃しました。線102は 'let normal = getNormal(padAngle);を読み、' padAngle'は '未定義'であり、線は 'let normal = getNormal(pad.angle);を読んで、degとradの間に単位変換を見ません回転のスケールとは別に、使用されるユニットに問題はありません。 – Blindman67

関連する問題