どこかから取ったこのコードを学習目的で使用しています。私はそれを分解して、それがどのように機能するかを理解しようとしています。
この関数は、マウスとそれぞれの要素の間の距離を返します。
function calculateDistance(elem, mouseX, mouseY) {
return Math.floor(Math.sqrt(Math.pow(mouseX - (elem.offset().left+(elem.width()/2)), 2) + Math.pow(mouseY - (elem.offset().top+(elem.height()/2)), 2)));
}
マウスと要素の間のピクセルのみを計算して、正の数を返します。
それを取り除き、Math.floorだけを残します。math.sqrt(math.pow ...)がないと、要素に対するマウスの位置に応じて負の値が得られる理由がわかりません-> left(-x)、right(x)、above(-y)、以下(y)要素
また、要素の別の中心を取得します。
function calculateDistance(elem, mouseX, mouseY) {
return Math.floor(mouseX - (elem.offset().left+(elem.width()/2)) + mouseY - (elem.offset().top+(elem.height()/2)));
}
Math.powとsqrtが単独で何をするか知っています。elem.offset().left+(elem.width()/2)
水平方向にそれを行っているのに対しelem.offset().top+(elem.height()/2)
、垂直方向に行っていると思っていたので、要素の中心をどのように見つけているのかわかりません。
だから1
is elem.width()/2
2は
elem.height()/2
追加することにより
elem.offset().left and elem.offset().top
要素の中心を取得します。
あなたは3を得る
mouseX - (elem.offset().left+(elem.width()/2)
そして、あなたが得る4で
mouseY - (elem.offset().top+(elem.height()/2)
最後に、マウスポインターと要素の間の距離を見つけるには、古き良きピタゴラス定理a²+b²=c²を使用する必要があります。辺3と4の正方形を見つけるには、Math.pow()を使用します。あなたの質問について、削除すると負の整数が返されるのはなぜですか。正の数と負の数のどちらを二乗しても、数値の二乗は常に正です。たとえば、この場合、マウスが要素の左側にあるため、サイド3(mouseX-(elem.offset()。left +(elem.width()/ 2))の結果は負になります。
これにより、距離が2乗された場合の長さがわかります。そのため、Math.sqrtを使用してc²からcだけを取得する必要があります。
最後に、Math.floorは、最も近い整数に切り捨てるために使用されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加