as3求两直线交点坐标

 var Arr:Array=new Array();
Arr.push({m_type:null});//0
Arr.push({m_type:"point",m_x:100,m_y:100});//1
Arr.push({m_type:"point",m_x:200,m_y:200});//2
Arr.push({m_type:"point",m_x:100,m_y:200});//3
Arr.push({m_type:"point",m_x:200,m_y:100});//4
Arr.push({m_type:"line2",m_p1:1,m_p2:2});    //5
Arr.push({m_type:"line2",m_p1:3,m_p2:4});    //6
//以上是两条直线的数组表示,如何求出以上两条直线的交点坐标呢?
//调用下面的函数,求编号为5,6的两直线交点。
p_l_l(5,6);
function p_l_l(line1:Number,line2:Number){
var line1_p1=Arr[line1].m_p1;
var line1_p2=Arr[line1].m_p2;
var line2_p1=Arr[line2].m_p1;
var line2_p2=Arr[line2].m_p2;
var line1_p1_x=Arr[line1_p1].m_x;
var line1_p1_y=Arr[line1_p1].m_y;
var line1_p2_x=Arr[line1_p2].m_x;
var line1_p2_y=Arr[line1_p2].m_y;
var line2_p1_x=Arr[line2_p1].m_x;
var line2_p1_y=Arr[line2_p1].m_y;
var line2_p2_x=Arr[line2_p2].m_x;
var line2_p2_y=Arr[line2_p2].m_y;
var line1_k=(line1_p1_x-line1_p2_x)/(line1_p1_y-line1_p2_y);
var line1_b=line1_p1_y- line1_k*line1_p1_x;
var line2_k=(line2_p1_x-line2_p2_x)/(line2_p1_y-line2_p2_y);
var line2_b=line2_p1_y- line2_k*line2_p1_x;
node_x=(line1_b-line2_b)/(line2_k-line1_k);
node_y= (line2_k*line1_b-line1_k*line2_b)/(line2_k-line1_k);
trace(node_x,node_y);
}
本文转自:http://www.5uflash.com/flashjiaocheng/Flash-as3-jiaocheng/1952.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要寻找多条直线交点及其坐标,可以使用OpenCV中的HoughLinesP函数来检测直线,并使用numpy中的polyfit函数来拟合直线,然后使用numpy中的linalg.solve函数来交点坐标。 下面是一个示例代码,该代码读取一张图片,检测其中的直线并计算它们的交点: ```python import cv2 import numpy as np # 读取图片 img = cv2.imread('lines.jpg') # 灰度化 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 边缘检测 edges = cv2.Canny(gray, 50, 150, apertureSize=3) # 检测直线 lines = cv2.HoughLinesP(edges, 1, np.pi/180, threshold=100, minLineLength=100, maxLineGap=10) # 拟合直线 line_params = [] for line in lines: x1, y1, x2, y2 = line[0] params = np.polyfit((x1, x2), (y1, y2), 1) line_params.append(params) # 计算交点 intersections = [] for i in range(len(line_params)): for j in range(i+1, len(line_params)): params1 = line_params[i] params2 = line_params[j] A = np.array([[params1[0], -1], [params2[0], -1]]) b = np.array([-params1[1], -params2[1]]) intersection = np.linalg.solve(A, b) intersections.append(intersection.astype(int)) # 在图片上绘制交点 for intersection in intersections: cv2.circle(img, tuple(intersection), 5, (0, 0, 255), -1) # 显示图片 cv2.imshow('image', img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这个例子中,我们首先读取了一张名为"lines.jpg"的图片,然后将其转换为灰度图像并进行边缘检测。然后,我们使用HoughLinesP函数检测直线,并使用polyfit函数拟合直线。接下来,我们使用linalg.solve函数计算直线交点,并将它们绘制在原始图像上。最后,我们显示处理后的图像。 请注意,此代码仅适用于检测直线相交的情况。如果直线平行或重合,则可能会出现除以零的错误。在实际应用中,您可能需要添加一些额外的逻辑来处理这些情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值