as3求直线与圆的交点坐标来源:51xflash收藏整理 | 作者:51xflash | 发表时间:2010-09-09 | 点击:240 次 01.var Arr:Array=new Array(); 02.Arr.push({m_type:null});//0 03.Arr.push({m_type:"point",m_x:1,m_y:1});//1 04.Arr.push({m_type:"point",m_x:2,m_y:2});//2 05.Arr.push({m_type:"line2",m_p1:1,m_p2:2}); //3 06.Arr.push({m_type:"point",m_x:1,m_y:1});//4 07.Arr.push({m_type:"point",m_x:0,m_y:1});//5 08.Arr.push({m_type:"circle",m_center:4,m_point:5});//6 09.//以上是圆6和线3 10. 11.chuizu(3,6); 12. 13.function chuizu(line:Number,circle:Number){ 14. 15.//圆的两个控制点信息 16. 17.var circle_center:Number =Arr[circle].m_center; 18.var circle_point:Number =Arr[circle].m_point; 19. 20.var circle_center_x:Number =Arr[circle_center].m_x; 21.var circle_center_y:Number =Arr[circle_center].m_y; 22.var circle_point_x:Number =Arr[circle_point].m_x; 23.var circle_point_y:Number =Arr[circle_point].m_y; 24. 25.//线的两个控制点信息 26. 27.var line_p1:Number =Arr[line].m_p1; 28.var line_p2:Number =Arr[line].m_p2; 29. 30.var line_p1_x:Number =Arr[line_p1].m_x; 31.var line_p1_y:Number =Arr[line_p1].m_y; 32.var line_p2_x:Number =Arr[line_p2].m_x; 33.var line_p2_y:Number =Arr[line_p2].m_y; 34. 35.//线k b 36. 37.var line_k:Number =(line_p2_y-line_p1_y)/(line_p2_x-line_p1_x); 38.var line_b:Number =line_p1_y-line_k*line_p1_x; 39.//半径 40. 41.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)) 42.//计算 43.var A:Number =1+line_k*line_k; 44.var B:Number =-2*circle_center_x+2*line_k*line_b-2*line_k*circle_center_y; 45.var C:Number =circle_center_x*circle_center_x+(line_b-circle_center_y)*(line_b-circle_center_y)-circle_radius*circle_radius; 46.var DELTA:Number =B*B-4*A*C; 47.var x1:Number =(-B+Math.sqrt(DELTA))/(2*A); 48.var x2:Number =(-B-Math.sqrt(DELTA))/(2*A); 49.var y1:Number =line_k*x1+line_b; 50.var y2:Number =line_k*x2+line_b; 51.if (DELTA>0){ 52.trace("point1:"+x1,y1,"point2:"+x2,y2); 53.}else if (DELTA==0){ 54.trace("point:"+x1,y1); 55.}else{ 56.trace("无交点") 57.} 58.} |
|
来自: 灵岩侠客 > 《flashas3.0》