分享

as3求直线与圆的交点坐标

 灵岩侠客 2011-10-16

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.} 
文章来源: 我要学flash网(www.) 原文地址:http://www./article/as3/201009/09-12086.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多