我相信哪怕一点光,也能驱散学习中的迷雾,我在这分享一点自己的挫见

思路:

这题最大的难点就是abc三个常数要怎么去构造,这里需要数学公式去推导,虽然是初中水平,也能体现编程和数学密不可分了。因为我之后要涉及ai算法,需要线代和高数的知识去研究像傅里叶滤波算法,矩阵运算等等知识,所以苦逼的自学日子又要开始了。

整体思路就是构造点和线对象,线是由始点终点所构成,由两点可以得出一条线段。

直线方程:Ax+By+C = 0

只要能知道一条线段的abc参数,便可以计算两条线的交点。

公式推导:

详细代码

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;class Line;//Point类需要Line的类型,所以需要先申明。
class Point {
public:Point(double x = 0,double y = 0):x(x),y(y) {}Point(const Point& p) :x(p.x), y(p.y) {}~Point() {}   Point setPoint(Line& l1, Line& l2);
public:double x,y;
};
class Line :public Point{friend Point Point::setPoint(Line& l1, Line& l2);//通过命名空间来把函数从Point转到Line,之前函数未定义是因为没有放作用域分辨符
public:Line GetLine(Point Source, Point Destination);double LineA() { return a; }//三个参数的传参double LineB() { return b; }double LineC() { return c; }//由于不知道没有c时候的x,y对应方程只好把c写出来,void Show(Point p);
private:double a, b, c;
};
Point Point::setPoint(Line& l1, Line& l2) {//Point Point::setPoint,第一个Point是函数返回类型,第二个Point是函数的作用域。Point ptemp;double Equational;Equational = l1.LineA() * l2.LineB() - l2.LineA() * l1.LineB();//因为在类外不能访问私有成员,用函数接口调用私有成员。//Equational是方程式的意思,这里通过数学计算算出a,b,c常数关于x,y的关系。ptemp.x = (l1.LineB() * l2.LineC() - l2.LineB() * l1.LineC()) / Equational;ptemp.y = (l1.LineC() * l2.LineA() - l2.LineC() * l1.LineA()) / Equational;return ptemp;//把点对象返回。则返回ptemp.x和ptemp.y。
}
Line Line:: GetLine(Point Source, Point Destination) {//计算直线的方程,main函数里面给出始点和终点Line ltemp;//给一个Line对象,让这个对象的三个参数分别被给出的两点修饰。//数学推导a,b,c的方程。ltemp.a = Source.y - Destination.y;ltemp.b = Destination.x - Source.x;ltemp.c = Source.x*Destination.y - Destination.x*Source.y;return ltemp;
}
void Line::Show(Point p) {//点对象传参cout << "(" << p.x << "," << p.y << ")" << endl;
}
int main() {Line l;double x0, x1, x2, x3, y0, y1, y2, y3;while (1) {cout << "直线A的起点到终点:";cin >> x0 >> y0 >> x1 >> y1;cout << "直线B的起点到终点:";cin >> x2 >> y2 >> x3 >> y3;Line a = l.GetLine(Point(x0, y0), Point(x1, y1));Line b = l.GetLine(Point(x2, y2), Point(x3, y3));cout << "两直线交点坐标为:";l.Show(l.setPoint(a, b));}
}

C++面向对象思想 两条直线交点计算相关推荐

  1. 使用C++面向对象思想计算两条直线交点

    使用C++面向对象思想计算两条直线交点 以下是使用C++面向对象思想计算两条直线交点的示例代码: #include <iostream>using namespace std;class ...

  2. java两条直线交点_求两条直线的交点坐标

    看UdaCity机器学习大纲,发现入门班中有一条:编写算法计算一组直线或平面的交点. 遂从最简单的直角坐标系两条直线的交点开始, 直线1的方程解析式: 2x-y=0; 直线2的方程解析式: 4x-5y ...

  3. PCL:求两条直线交点

    使用PCL库中的直线拟合方法,可以拟合出来多条直线,可以对这多条直线求交点(前提是直线相交).   对应实现代码如下: 见链接:https://blog.csdn.net/m0_37957160/ar ...

  4. 两条直线的交点 c语言,计算两条直线的交点(C#)

    PS:从其他地方看到的源码是有问题的.下面是修正后的 /// /// 计算两条直线的交点 /// /// L1的点1坐标 /// L1的点2坐标 /// L2的点1坐标 /// L2的点2坐标 /// ...

  5. 用矢量变换的方法求两条直线的交点

    求两条直线的交点,最常见的写法是列出两条直线的方程,联立求解.     但这种办法的弊端很大:     1 )算法是坐标系相关的,要考虑直线是水平还是垂直,写出很多判断条件,增加了程序的不稳定性    ...

  6. C#CAD二次开发学习 两条直线求交点的方法IntersectWith的一点整理

    求两条直线交点时可以使用IntersectWith方法,但对于我这种初学者有点摸不清该怎么使用. 直接上代码吧 [CommandMethod("GTest")]public sta ...

  7. JAVA计算两条直线的交点(判断两条线段相交)

    //计算两条直线的交点 //输入四个点,前两个点确定线段1,后两个点确定线段2 //输出交点坐标 public class Main{public static void main(String ar ...

  8. 判断两条直线是否相交c语言,学习OpenCV3:判断两条直线相交,并计算交点和夹角...

    一.问题 已知两条直线 和 ,现希望判断 与 间是否相交.若相交,计算出两条直线的交点和夹角. 二.分析 1.直线方程 的直线方程: 的直线方程: 提示: 和 不能同时为0.若 和 同时为0,起点和终 ...

  9. Matlab计算两条直线的交点坐标

    %% 已知两条直线的斜率和截距,求交点坐标 function [x,y]=linecross(k1,b1,k2,b2)x=[];y=[];if k1==k2&b1==b2disp('chong ...

最新文章

  1. 2020年AI怎么发展?听加州大学、谷歌、英伟达、IBM怎么说
  2. .Net Core 在 Linux-Centos上的部署实战教程(二)
  3. 【Jenkins持续集成】docker部署+配置+操作Jenkins
  4. Citrix桌面及应用虚拟化系列之二:XenServer补丁
  5. mysql 多表混全_mysql--浅谈多表查询1
  6. js 日期星期 带农历
  7. 从零开始学python | 什么是Python JSON?
  8. rfid 标签内存_智能仓库之RFID仓库管理中的条形码与电子标签应用-RFID仓库管理功能与特点-新导智能...
  9. linux的shell脚本if语句,Shell脚本编程之判断语句
  10. 计算机算法设计与分析 递归实现快速排序和随机化实现快速排序
  11. shiro 基于springmvc中做登陆功能
  12. 387. First Unique Character in a String - String
  13. 用计算机编纂家谱的作用,家谱的编纂几大流程?
  14. 百科系统php,HDwiki与PHPCMS联合推出开源中文Wiki系统
  15. 扫地机器人漫谈(一):扫地机的形状
  16. IE8兼容性问题及解决方案
  17. 贝叶斯学派:先验分布、后验分布、共轭分布、共轭先验分布
  18. Socket在iOS客户端上的简单实现 - 利用GCAsyncSocket框架
  19. Python之dir()与__dict__的区别
  20. LAYUI解决checked的 switch 开关赋值问题

热门文章

  1. java基础回顾之第一章节思维导图
  2. c++模板显示实例化,显示具体化,隐式实例化
  3. 微博机器学习平台云上最佳实践
  4. 如何落地云原生DevOps?
  5. AliExpress智能营销引擎大揭秘 - AnalyticDB如何做到快准狠省
  6. 新基建与智慧城市相遇 会碰撞出什么样的“火花”?
  7. Flutter for Web 详细预研
  8. 阿里开发者们的第13个感悟:工程师需要在循环迭代中成长
  9. 想学 Python?那这套教程再适合你不过了!!
  10. OpenStack发布Ussuri版本 实现智能开源基础设施的自动化