我試圖讓一些事情告訴你兩個圓的交點。我在哪裏放置在圓圈和半徑的中心。 (我從stackoverflow得到交集函數:here)。我正在嘗試添加用戶輸入,但是當我將代碼內部的靜態數字更改爲用戶輸入時(通過提示或html輸入),該函數將中斷並且警報會向我發送一個未完成的答案和一個Nan。用戶輸入令人費解功能
這裏是編碼至今(沒有用戶輸入):
<html>
<button onclick="button()">Test</button>
<script>
var x0 = 3;
var y0 = 0;
var r0 = 3;
var x1 = -1;
var y1 = 0;
var r1 = 2;
function button() {
intersection(x0, y0, r0, x1, y1, r1)
function intersection(x0, y0, r0, x1, y1, r1) {
var a, dx, dy, d, h, rx, ry;
var x2, y2;
/* dx and dy are the vertical and horizontal distances between
* the circle centers.
*/
dx = x1 - x0;
dy = y1 - y0;
/* Determine the straight-line distance between the centers. */
d = Math.sqrt((dy*dy) + (dx*dx));
/* Check for solvability. */
if (d > (r0 + r1)) {
/* no solution. circles do not intersect. */
return false;
}
if (d < Math.abs(r0 - r1)) {
/* no solution. one circle is contained in the other */
return false;
}
/* 'point 2' is the point where the line through the circle
* intersection points crosses the line between the circle
* centers.
*/
/* Determine the distance from point 0 to point 2. */
a = ((r0*r0) - (r1*r1) + (d*d))/(2.0 * d) ;
/* Determine the coordinates of point 2. */
x2 = x0 + (dx * a/d);
y2 = y0 + (dy * a/d);
/* Determine the distance from point 2 to either of the
* intersection points.
*/
h = Math.sqrt((r0*r0) - (a*a));
/* Now determine the offsets of the intersection points from
* point 2.
*/
rx = -dy * (h/d);
ry = dx * (h/d);
/* Determine the absolute intersection points. */
var xi = x2 + rx;
var xi_prime = x2 - rx;
var yi = y2 + ry;
var yi_prime = y2 - ry;
var list = "(" + xi + ", " + yi + ")" + "(" + xi_prime + ", " +
yi_prime + ")"
alert(list);
}
}
</script>
</html>
當我改變的變量中的任何一個分開的圓是爲用戶的輸入,如:
var x0 = prompt("X cord of circle 1");
警報來(3-2.6250,-1.4523687548277813)(NaN,1.4523687548277813)
並且沒有用戶輸入(顯示在大代碼塊中),它出現爲:(0.375,-1.4523687548277813)(0.375,1.45 23687548277813)。這是正確的答案。
任何人都可以告訴我我做錯了什麼或發生了什麼?