诀窍是将您的问题转化为您知道如何解决的问题。您可以通过从角度减去 90 度并否定 y 来做到这一点,即 x=r cos(theta-90) 和 y = -r sin(theta-90)。在 JavaScript 中:
function circleXY(r, theta) {
// Convert angle to radians
theta = (theta-90) * Math.PI/180;
return {x: r*Math.cos(theta),
y: -r*Math.sin(theta)}
}
for (var theta=0; theta<=360; theta += 30) {
var answer = circleXY(60, theta);
console.log('(x, y) = ' + '(' + answer.x + ', ' + answer.y + ') for theta=' + theta);
}
产生以下结果:
(x, y) = (3.67394039744206e-15, 60) 对于 theta=0
(x, y) = (30.000000000000007, 51.96152422706631) 对于 theta=30
(x, y) = (51.96152422706632, 29.9999999999999996) 对于 theta=60
(x, y) = (60, 0) 对于 theta=90
(x, y) = (51.96152422706632, -29.999999999999996) 对于 theta=120
(x, y) = (30.000000000000007, -51.96152422706631) 对于 theta=150
(x, y) = (3.67394039744206e-15, -60) 对于 theta=180
(x, y) = (-29.999999999999986, -51.96152422706632) 对于 theta=210
(x, y) = (-51.96152422706632, -29.999999999999996) 对于 theta=240
(x, y) = (-60, -7.34788079488412e-15) 对于 theta=270
(x, y) = (-51.96152422706631, 30.000000000000007) 对于 theta=300
(x, y) = (-30.00000000000003, 51.961524227066306) 对于 theta=330
(x, y) = (-1.1021821192326178e-14, 60) 对于 theta=360