我對下面的代碼不太瞭解,我希望有人能夠逐件將其分解。使用Javascript在圓圈圖案中創建破折號數學
$(function() {
var centerX = 200,
centerY = 200,
radius = 100,
width = 15,
angles = []
function draw() {
var ctx = document.getElementById("canvas").getContext("2d");
var angle;
//why 180
for (var i = 0; i < 180; i += 10) {
//is the "angle" increasing on every iteration? can you demostrate this please
angle = 2.1 + (i * Math.PI/90);
angles.push(angle)
ctx.beginPath();
ctx.moveTo(
centerX + Math.sin(angle) * radius,
centerY + Math.cos(angle) * radius
);
ctx.lineTo(
centerX + Math.sin(angle) * (radius + width),
centerY + Math.cos(angle) * (radius + width)
);
ctx.closePath();
ctx.stroke();
}
}
draw()
console.log(angles)
var str = "";
angles.forEach(function(e, i) {
str += " " + i + " : " + e + "|| Math.sin = " + Math.sin(e) + "|| Math.sin * radius = " + Math.sin(e) * radius
$(".display").html(str)
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<canvas id="canvas" width="400" height="400"></canvas>
<div class="display"></div>
像這部分angle = 2.1 + (i * Math.PI/90);
我看到i
由10遞增和提交由Math.PI/90
,其等於0.0348888888888889相乘。我知道Math.PI是180度,但沒有做180/90。我們正在少量增加2.1。我不能把所有的東西放在一起。
和for(var i = 0; i < 180; i += 10){
爲什麼作者選擇180.我知道180度是半圈,那他們爲什麼選擇它?
而且我總是在其他代碼中看到人們使用cos
作爲y座標,而使用sin
作爲y座標。它看起來不像作者使用它,就像我剛剛描述的那樣。你能否詳細說明一下。
任何幫助,將不勝感激!
編輯:我也想知道,當我們使用for(var i = 0; i < 180; i += 10){
我們就得到了一個完整的圓破折號,當我做i < 90
我們得到了一個半圈,但半圈不直像針對x或y軸的上一個角度。爲什麼它不在軸上?爲什麼它在一個角度?
我很抱歉,但我不完全瞭解問題的陳述。你能解釋你到底想達到什麼目的嗎? – Rajesh
@Rajesh問題是我不明白代碼如何產生輸出。我希望有人向我詳細解釋。 –
只是說我從這個問題得到的代碼.. http://stackoverflow.com/questions/3810768/mathematics-for-drawing-little-lines-around-circle –