|
var Arr:Array=new Array(); Arr.push({m_type:null});//0 Arr.push({m_type:"point",m_x:1,m_y:1});//1 Arr.push({m_type:"point",m_x:2,m_y:2});//2 Arr.push({m_type:"line2",m_p1:1,m_p2:2}); //3 Arr.push({m_type:"point",m_x:1,m_y:1});//4 Arr.push({m_type:"point",m_x:0,m_y:1});//5 Arr.push({m_type:"circle",m_center:4,m_point:5});//6 //以上是圆6和线3 chuizu(3,6);
function chuizu(line:Number,circle:Number){
//圆的两个控制点信息
var circle_center:Number =Arr[circle].m_center; var circle_point:Number =Arr[circle].m_point;
var circle_center_x:Number =Arr[circle_center].m_x; var circle_center_y:Number =Arr[circle_center].m_y; var circle_point_x:Number =Arr[circle_point].m_x; var circle_point_y:Number =Arr[circle_point].m_y;
//线的两个控制点信息
var line_p1:Number =Arr[line].m_p1; var line_p2:Number =Arr[line].m_p2;
var line_p1_x:Number =Arr[line_p1].m_x; var line_p1_y:Number =Arr[line_p1].m_y; var line_p2_x:Number =Arr[line_p2].m_x; var line_p2_y:Number =Arr[line_p2].m_y;
//线k b
var line_k:Number =(line_p2_y-line_p1_y)/(line_p2_x-line_p1_x); var line_b:Number =line_p1_y-line_k*line_p1_x; //半径
var circle_radius:Number =Math.sqrt((circle_center_x-circle_point_x)*(circle_center_x-circle_point_x)+(circle_center_y-circle_point_y)*(circle_center_y-circle_point_y)) //计算 var A:Number =1+line_k*line_k; var B:Number =-2*circle_center_x+2*line_k*line_b-2*line_k*circle_center_y; var C:Number =circle_center_x*circle_center_x+(line_b-circle_center_y)*(line_b-circle_center_y)-circle_radius*circle_radius; var DELTA:Number =B*B-4*A*C; var x1:Number =(-B+Math.sqrt(DELTA))/(2*A); var x2:Number =(-B-Math.sqrt(DELTA))/(2*A); var y1:Number =line_k*x1+line_b; var y2:Number =line_k*x2+line_b; if (DELTA>0){ trace("point1:"+x1,y1,"point2:"+x2,y2); }else if (DELTA==0){ trace("point:"+x1,y1); }else{ trace("无交点") } }
|