精华内容
下载资源
问答
  • 求空间两直线交点-MATLAB代码+原理说明 原理.pdf —— 说明性文档 main_demo.m —— demo主程序,也就是一个示例 Intersection_of_TwoLines.m —— 求交点的函数
  • 经过图像处理,得到两直线方程求两直线交点;void GetCrossPoint(float A1, float B1, float A3, float B3,int count,vector<Point2d>& cross_Pt) { int L1x0 = 1, L1x1 = 500, L3x0 = 1, L3x1 = 500; float L1...

    经过图像处理,得到两直线方程,求两直线交点;
    直线的一般方程为F(x) = ax + by + c = 0。既然我们已经知道直线的两个点,假设为(x0,y0), (x1, y1),那么可以得到a = y0 – y1, b = x1 – x0, c = x0y1 – x1y0。
    因此我们可以将两条直线分别表示为
    F0(x) = a0*x + b0*y + c0 = 0, F1(x) = a1*x + b1*y + c1 = 0
    那么两条直线的交点应该满足
    a0*x + b0*y +c0 = a1*x + b1*y + c1
    由此可推出
    x = (b0*c1 – b1*c0)/D
    y = (a1*c0 – a0*c1)/D
    D = a0*b1 – a1*b0, (D为0时,表示两直线平行)

    void GetCrossPoint(float A1, float B1, float A3, float B3,int count,vector<Point2d>& cross_Pt)
    {   
        int L1x0 = 1, L1x1 = 500, L3x0 = 1, L3x1 = 500;   //像素坐标X上随便取两点
        float L1y0 = A1*L1x0 + B1;                        //根据已知直线方程求对应的Y值
        float L1y1 = A1*L1x1 + B1;
        float L3y0 = A3*L3x0 + B3;
        float L3y1 = A3*L3x1 + B3;
        float a1 = L1y0 - L1y1;
        float b1 = L1x1 - L1x0;
        float c1 = L1x0*L1y1 - L1x1*L1y0;
        float a3 = L3y0 - L3y1;
        float b3 = L3x1 - L3x0;
        float c3 = L3x0*L3y1 - L3x1*L3y0;
        float D = a1*b3 - a3*b1;
        double x = (b1*c3 - b3*c1) / D;
        double y = (a3*c1 - a1*c3) / D;
        Point2d tmp_pt;
        tmp_pt.x = x;
        tmp_pt.y = y;
        cross_Pt.push_back(tmp_pt);
    }
    展开全文
  • 两空间直线求交点,fortran编制

    热门讨论 2009-12-07 21:05:29
    该程序使用Fortran编制,用于判断由空间四点表示的两直线是否相交,若相交则交点. 输入说明: 输入文件名为input.txt; 其中数据分别为:确定直线1所需点坐标(x1,y1,z1),(x2,y2,z2); 确定直线2所需点坐标(x3...
  • 求空间直线交点 求交点坐标的问题完全可以用数学的方法求得结果的表达公式来解决啊 设P1(x1,y1,z1),P2(x2,y2,z2) L2:P3(x3,y3,z3),P4(x4,y4,z4) 记xi-xj=xij,ij是下标 (或xij,yij,zij表示该直线的方向...

    求空间中两条直线的交点

    求交点坐标的问题完全可以用数学的方法求得结果的表达公式来解决啊
    设P1(x1,y1,z1),P2(x2,y2,z2) L2:P3(x3,y3,z3),P4(x4,y4,z4)
    记xi-xj=xij,ij是下标 (或xij,yij,zij表示该直线的方向向量)
    利用参数式,设:

    L1方程 x=x1+x12t, y=y1+y12t,z=z1+z12t
    L2方程 x=x3+x34
    s, y=y3+y34s,z=z3+z34s.

    将L1带入L2,先得到:

    s=(x13+x12t)/x34

    再带入方程得到t的表达式:

    t=(y13x34-y34x13)/(y34x12-x34y12)

    带入L1中,即可得到交点。。。。
    如:

    x=x1+x12*((y13x34-y34x13)/(y34x12-x34y12))

    y、z同理可得

    全部都是已知的。
    图 计算过程

    展开全文
  • 求两直线交点程序 C

    2021-05-21 12:21:39
    const double EPS = 1e-5; // 计算精度const int CROSS = 0; // 两直线相交const int COLINE = 1; // ...

    const   double   EPS                 =   1e-5;           //   计算精度

    const   int   CROSS                   =   0;                 //   两直线相交

    const   int   COLINE                 =   1;                 //   两直线共线

    const   int   PARALLEL             =   2;                 //   两直线平行

    struct   Point   {                             //   二维点或矢量

    double   x,   y;

    Point()   {}

    Point(double   x0,   double   y0):   x(x0),   y(y0)   {}

    };

    struct   Line   {                               //   二维的直线或线段

    Point   p1,   p2;

    Line()   {}

    Line(Point   p10,   Point   p20):   p1(p10),   p2(p20)   {}

    };

    inline   bool   EQ(double   x,   double   y)             //   eqaul,   x   ==   y

    {

    return   (fabs(x   -   y)   <   EPS);

    }

    //   计算两条二维直线的交点,结果在参数P中返回

    //   返回值说明了两条直线的位置关系

    //   COLINE       --   共线

    //   PARALLEL   --   平行

    //   CROSS         --   相交

    int   CalCrossPoint(Line   L1,   Line   L2,   Point&   P)

    {

    double   A1,   B1,   C1,   A2,   B2,   C2;

    A1   =   L1.p2.y   -   L1.p1.y;

    B1   =   L1.p1.x   -   L1.p2.x;

    C1   =   L1.p2.x   *   L1.p1.y   -   L1.p1.x   *   L1.p2.y;

    A2   =   L2.p2.y   -   L2.p1.y;

    B2   =   L2.p1.x   -   L2.p2.x;

    C2   =   L2.p2.x   *   L2.p1.y   -   L2.p1.x   *   L2.p2.y;

    if   (EQ(A1   *   B2,   B1   *   A2))         {

    if   (EQ(   (A1   +   B1)   *   C2,   (A2   +   B2)   *   C1   ))   {

    return   COLINE;

    }   else   {

    return   PARALLEL;

    }

    }   else   {

    P.x   =   (B2   *   C1   -   B1   *   C2)   /   (A2   *   B1   -   A1   *   B2);

    P.y   =   (A1   *   C2   -   A2   *   C1)   /   (A2   *   B1   -   A1   *   B2);

    return   CROSS;

    }

    展开全文
  • 已知点A(x1,y1)、B(x2,y2)为直线L1上个点,点C(x3,y3)、D(x4,y4)为直线L2上个点,求解直线方程以及交点坐标,直接贴代码 //定义Point2f结构体 struct Point2f { float x; float y; } // ...

    已知点A(x1,y1)、B(x2,y2)为直线L1上两个点,点C(x3,y3)、D(x4,y4)为直线L2上两个点,求解两个直线的方程以及交点坐标,直接贴代码


    #include <iostream>
    
    using namespace std;
    
    
    //定义Point2f结构体  
    struct Point2f
    {
    	float x;
    	float y;
    };
    
    // 定义直线参数结构体  
    struct LinePara
    {
    	float k;
    	float b;
    
    };
    
    // 获取直线参数  
    void getLinePara(float& x1, float& y1, float& x2, float& y2, LinePara & LP)
    {
    	double m = 0;
    
    	// 计算分子  
    	m = x2 - x1;
    
    	if (0 == m)
    	{
    		LP.k = 10000.0;
    		LP.b = y1 - LP.k * x1;
    	}
    	else
    	{
    		LP.k = (y2 - y1) / (x2 - x1);
    		LP.b = y1 - LP.k * x1;
    	}
    
    
    }
    
    // 获取交点  
    bool getCross(float & x1, float &y1, float & x2, float & y2, float & x3, float &y3, float & x4, float & y4,  Point2f & pt){
    
    	LinePara para1, para2;
    	getLinePara(x1, y1, x2, y2, para1);
    	getLinePara(x3, y3, x4, y4, para2);
    
    	// 判断是否平行  
    	if (abs(para1.k - para2.k) > 0.5)
    	{
    		pt.x = (para2.b - para1.b) / (para1.k - para2.k);
    		pt.y = para1.k * pt.x + para1.b;
    
    		return true;
    
    	}
    	else
    	{
    		return false;
    	}
    
    }
    
    void main()
    {
    	Point2f pt1, pt2, pt3, pt4, pt;
    	pt1.x = 1.0;
    	pt1.y = 1.0;
    
    	pt2.x = 2.0;
    	pt2.y = 2.0;
    
    	pt3.x = 0.0;
    	pt3.y = 2.0;
    
    	pt4.x = 2.0;
    	pt4.y = 0.0;
    
    	getCross(pt1.x, pt1.y, pt2.x, pt2.y, pt3.x, pt3.y, pt4.x, pt4.y, pt);
    
    	cout << pt.x << " , " << pt.y << endl;
    }


    直接来个完整版的,ctrl+F5,运行效果如下,打完收工!

    在这里感谢大佬给的建议,将int m改成double m,谢谢~





    展开全文
  • 三维空间两直线交点

    万次阅读 2018-09-06 18:39:48
    emmm这个我今天百度了好久,发现都是同一篇,而且很长懒得看。。。于是我自己想了一个 设四个点构成个线段p1(x1,y1,z1) p2(x2,y2,z2) p3(x3,... //就是同时与两直线垂直的向量 3.根据 p1和d 确定一个平面,计算...
  • 向量叉乘三维空间两直线(或线段)的交点

    万次阅读 多人点赞 2019-01-11 20:58:44
    在二维空间中,利用直线方程y = kx + b我们可以直接计算出交点,但是这种方法麻烦了些,并且套用到三维空间用公式就更麻烦了,接下来介绍的是如何利用向量叉乘出直线交点。并且由于利用叉乘最后可以的到一个...
  • 背景介绍最近在水面无人艇(USV)模拟仿真中,用到了一些点和...博客更新可参见github点线关系点确定直线表达式定义空间直线的表达式有多种,比如一般式Ax+By+C=0、点斜式y-y0=k(x-x0)、截距式x/a+y/b=1、点式:(y...
  • 求空间直线与平面的交点

    千次阅读 2014-09-10 17:20:31
    若直线不与平面平行,将存在交点。如下图所示,已知直线L过点m(m1,m2,m3),且方向向量为VL(v1,v2,v3),平面P过点n(n1,n2,n3)...将直线方程写成参数方程形式,即有: x = m1+ v1 * t y = m2+ v2 * t
  • 下面是修正后的/// /// 计算直线交点/// /// L1的点1坐标/// L1的点2坐标/// L2的点1坐标/// L2的点2坐标/// public static PointF GetIntersection(PointF lineFirstStar, PointF lineFirstEnd, PointF ...
  • 在二维空间中,利用直线方程y = kx + b我们可以直接计算出交点,但是这种方法麻烦了些,并且套用到三维空间用公式就更麻烦了,接下来介绍的是如何利用向量叉乘出直线交点。并且由于利用叉乘最后可以的到一个...
  • clear;clc;... t = title(‘Linear Equations and Their Solution’) ylabel(‘y’) xlabel(‘x’) 运行结果 重点是三个交点,分三次计算交点,然后做到一个图中 还有图例显示多个,用句柄方式处理
  • 空间直线同球体交点求解

    千次阅读 2019-10-04 07:41:34
    空间直线同球体交点问题求解,为求解二元二次方程问题,下面是求解过程 二、代码实现 1、代码实现 1 void cal_q ( double par_x, double par_y, double par_z, double par_r, double bpx, double bpy, ...
  • 在二维空间中,利用直线方程 y = kx + b 我们可以直接计算出交点,但是这种方法麻烦了些,并且套用到三维空间用公式就更麻烦了,接下来介绍的是如何利用向量叉乘出直线交点。并且由于利用叉乘最后可以的到一个...
  • 空间直线及其方程

    万次阅读 2020-03-09 19:54:44
    一、空间直线一般方程 二、空间直线的对称式方程与参数方程 三、直线的夹角 四、直线与平面的夹角
  • 求空间平面与直线交点

    千次阅读 2017-12-07 21:36:00
    已知P1(x1,y1,z1),P2(x2,y2,z2),平面α:ax+by+cz+d=0,求直线P1P2与平面α的交点P。 数学分析 存在性:直线与平面的交点可能有零个,一个,或无数个。可行性:已知直线上不重合点,可以确定一条直线,已知...
  • 大一的求两直线公垂线方程公垂线是无数条的,公垂线段所在的直线是唯一一条第一条线的方向向量n1=(1,-1,0),第二条线的方向向量n2=(1,1,0)于是公垂线的方向向量n1*n2=(0,0,1)在l1上取点A(t+1,-t+1,0) l2上取...
  • 空间直线与平面的交点

    千次阅读 2019-02-22 10:51:59
    空间直线与平面的交点
  • 详细论述了空间或平面判断线段相交(求交点)的算法。
  • 分别知道直线上的个点,,求两直线交点坐标(x,y,z): imgp1=[0.0000000000E+000 6.2058724432E-002 1.7314630678E+002 ]; %其中x坐标均为0,即可以看成2维空间 imgp2=[ 0.0000000000E+000 2.8569510432E
  • 【问题】 已知个线段的端点坐标分别为(x1, y1, z1)、(x2, y2, z2);(x3, y3, z3)、(x4, y4, z4),它们的交点坐标? 已知线段1坐标:(7,6,7)、(1,4,5),线段2的...直线方程可以写成: 用参数方程表示,也可以...
  • 我相信哪怕一点光,也能驱散学习中的迷雾,我在这分享一点自己的挫见 思路: 这题最大的难点就是abc三个常数要...直线方程:Ax+By+C = 0 只要能知道一条线段的abc参数,便可以计算条线的交点。 公式推导: .
  • 转自:... 已知空间4点,点A、B构成直线L1, 点C、D构成直线L2, L2上点P,使P到L1的距离最短,相应点的坐标分别为: A(Xa,Ya,Za),B(Xb,Yb,Zb),C(Xc,Yc,Zc),D(Xd,Yd,Zd...
  • 求空间直线与平面的交点     若直线不与平面平行,将存在交点。如下图所示,已知直线L过点m(m1,m2,m3),且方向向量为VL(v1,v2,v3),平面P过点n(n1,n2,n3),且法线方向向量为VP(vp1,vp2...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,425
精华内容 1,370
关键字:

两空间直线方程求交点