Я пытаюсь нарисовать нижнюю половину круга с помощью соответствующих функций x = cos (theta), y = sin (theta). Если я итерацию тета от Math.PI до 2 * Math.PI я, кажется, получают верхнюю половину круга вместо:Как нарисовать нижнюю половину круга в холсте
Что я делаю неправильно в этом фрагменте кода:
window.onload = function()
{
var canvas = document.getElementById('circle-canvas');
if (canvas && canvas.getContext) {
var context = canvas.getContext('2d');
if (context) {
context.strokeStyle = "#369";
context.lineWidth = 4;
j = canvas.width/2;
k = canvas.height/2;
r = canvas.width/4;
function computeX(theta, r, j, k){ return r * Math.cos(theta) + j; }
function computeY(theta, r, j, k){ return r * Math.sin(theta) + k; }
start = Math.PI;
context.lineTo(computeX(start, r, j, k), computeY(start, r, j, k));
for(var theta = start; theta <= (2*Math.PI); theta += .1)
{
x = computeX(theta, r, j, k);
y = computeY(theta, r, j, k),
context.lineTo(x, y);
}
context.stroke();
context.closePath();
}
}
}
EDIT: Я знаю о функции дуги. Мне нужно реализовать дугу таким образом, потому что это будет использоваться как часть более серьезной проблемы, когда мне нужно вычислить каждую отдельную точку дуги.
Почему вы ожидаете получить нижний полукруг ? Сравните систему координат, обычно используемую и используемую на холсте (увеличивает координату y вверх или вниз?) –