0
我需要圓始終與直線相交。 我是新來的數學功能,並試圖牢牢抓住他們。 我認爲這與罪和cos有關,但我可能是錯的。 它爲什麼沒有按預期行事?Math.atan2和cos sin角度不交叉畫布
codepen: http://codepen.io/philipbell/pen/PmwybL
let canvas = document.querySelector('#canvas');
let context = canvas.getContext('2d');
let width = canvas.width = window.innerWidth;
let height = canvas.height = window.innerHeight;
let centerY = height/2;
let centerX = width/2;
let circleSize = 10;
let Xradius = width/2 - circleSize;
let Yradius = height/2 - circleSize;
let angle = 0;
let dx = 10;
let dy = 10;
let distance = 20;
render();
function render() {
context.clearRect(0, 0, width, height);
context.save();
context.translate(centerX, centerY);
context.rotate(angle);
context.beginPath();
context.moveTo(0, 0);
context.lineTo(window.innerWidth, 0);
context.moveTo(distance, 0);
context.lineTo(distance - 10, -10);
context.moveTo(distance, 0);
context.lineTo(distance - 10, 10);
context.stroke();
context.restore();
// why isn't the line always intersecting the circle?
var xCos = centerX + Math.cos(angle) * Xradius;
var ySin = centerY + Math.sin(angle) * Yradius;
context.beginPath();
context.arc(xCos, ySin, circleSize, 0, Math.PI * 2, false);
context.fill();
requestAnimationFrame(render);
}
document.body.addEventListener('mousemove', (event) => {
dx = event.clientX - centerX;
dy = event.clientY - centerY;
distance = Math.sqrt(dx * dx + dy * dy)
angle = Math.atan2(dy, dx)
})
謝謝我的朋友。你統治。 –