なぜコサインはx値を計算し、アークのy値をサインするために使用されるのですか?
-
28-09-2019 - |
質問
私はこのraphael.jsデモの数学を理解しようとしています:
セクターの方法をチェックアウトします:
function sector(cx, cy, r, startAngle, endAngle, params) {
var x1 = cx + r * Math.cos(-startAngle * rad),
x2 = cx + r * Math.cos(-endAngle * rad),
y1 = cy + r * Math.sin(-startAngle * rad),
y2 = cy + r * Math.sin(-endAngle * rad);
return paper.path(["M", cx, cy, "L", x1, y1, "A", r, r, 0, +(endAngle - startAngle > 180), 0, x2, y2, "z"]).attr(params);
}
これが実際のデモです:http://raphaeljs.com/pie.html
私の数学は少し錆びており、セクターの機能を理解しようとしています - startangle and endangleパラメーター(0〜360の各開始点と360の端線値が弧を描く)を考えると、なぜこの関数は機能しますか?
解決
それはすべてあなたがどのように扱うかに依存します startAngle
と endAngle
. 。これは、水平から右への開始(すなわち0の角度が東を指している)として扱っているように扱っているように見えます。
通常、数学では、水平から右へと始まる角度を考慮しますが、反時計回りに増加します...しかし、角度を描くように非数学者に依頼すると、時計回りに垂直方向に(つまり北)増加する(すなわち、北)からうまく処理できます。これは混合物を取っているように見えます:)ここには本当に「間違った」または「正しい」答えはありません - それはすべて定義の問題です。
写真が人気があるので、ここに私が説明した3つのシステムがあります。それぞれが長さであると仮定しています r
:
通常の数学:X軸からの反時計回り
(ソース: arachsys.com)
路上で男に角度を描くように頼む(Y軸から時計回り)
このコードで使用される角度(x軸から時計回り)
他のヒント
センター(CX、CY)および半径Rとの円周に関する任意のポイントには、次の座標があります(COSおよびSINの幾何学的定義から直接続きます - 対応するカテトゥスとヒポテニュースの長さの比率):
x = cx + R*cos(a)
y = cy + R*sin(a) for 0 <= a < 2π
したがって、角度Aに制限を設定すると、任意のアークを定義できます。
xが増加すると水平に0°を取ると、yが増加すると垂直として90°を増やした場合、次のようになります。
cos(0) = 1
sin(0) = 0
cos(90) = 0
sin(90) = 1
X値をCosineで掛けることでX値を変化させ、Y値をサインで掛けることでY値を変化させることができます。