使用Matlab计算两条线的交点及三角形垂心

Matlab版本:R2016A

操作系统:Win-8


为了让整个流程比较完整,

1、我用了12个点,每两个点一条线,能组成6条线;

2、每两条线相交于一点,一共有3个点;

3、3个点构成了三角形的三个顶点,然后再根据三个顶点计算三角形的垂心。


1、现在先给出12个点的坐标(坐标可以随意设置,只要构成的线不是平行没有交点即可)

(294.94, 2959.12) (668.61, 1464.42)

(1678.70, 2848.19) (1731.25, 1914.00)
(540.16, 1978.22) (1731.25, 1919.83)

(335.80, 2778.12) (1696.22, 2678.86)
(1106.51, 892.23) (1404.28, 1832.25)

(1351.74, 880.56) (1591.12, 1820.58)

上述点是我从一幅图片里面点选出来的,将每个点的橫坐标放在一个数组里,纵坐标放在一个数组里

好的,我会尽我所能回答你的问题。 对于这个任务,我们可以定义一个基类 Triangle,并在其内部定义虚函数来完成面积计算三角形类型判断、重心、垂心、外心、内心计算,以及点和三角形的关系判断。此外,我们还可以定义一个纯虚函数计算直线三角形交点。 具体实现如下: ```c++ class Triangle { public: virtual double getArea() = 0; virtual string getType() = 0; virtual Point getCentroid() = 0; virtual Point getOrthocenter() = 0; virtual Point getCircumcenter() = 0; virtual Point getIncenter() = 0; virtual string getPointRelation(Point p) = 0; virtual vector<Point> getIntersection(Line l) = 0; protected: Point a, b, c; }; class AcuteTriangle : public Triangle { public: AcuteTriangle(Point _a, Point _b, Point _c) { a = _a, b = _b, c = _c; } double getArea() { // 计算面积 } string getType() { // 判断三角形类型 } Point getCentroid() { // 计算重心 } Point getOrthocenter() { // 计算垂心 } Point getCircumcenter() { // 计算外心 } Point getIncenter() { // 计算内心 } string getPointRelation(Point p) { // 判断点和三角形的关系 } vector<Point> getIntersection(Line l) { // 计算直线三角形交点 } }; class RightTriangle : public Triangle { public: RightTriangle(Point _a, Point _b, Point _c) { a = _a, b = _b, c = _c; } double getArea() { // 计算面积 } string getType() { // 判断三角形类型 } Point getCentroid() { // 计算重心 } Point getOrthocenter() { // 计算垂心 } Point getCircumcenter() { // 计算外心 } Point getIncenter() { // 计算内心 } string getPointRelation(Point p) { // 判断点和三角形的关系 } vector<Point> getIntersection(Line l) { // 计算直线三角形交点 } }; class ObtuseTriangle : public Triangle { public: ObtuseTriangle(Point _a, Point _b, Point _c) { a = _a, b = _b, c = _c; } double getArea() { // 计算面积 } string getType() { // 判断三角形类型 } Point getCentroid() { // 计算重心 } Point getOrthocenter() { // 计算垂心 } Point getCircumcenter() { // 计算外心 } Point getIncenter() { // 计算内心 } string getPointRelation(Point p) { // 判断点和三角形的关系 } vector<Point> getIntersection(Line l) { // 计算直线三角形交点 } }; ``` 其中,我们定义了三个派生类 AcuteTriangle、RightTriangle 和 ObtuseTriangle,分别表示锐角三角形、直角三角形和钝角三角形。这些派生类都继承了 Triangle 的虚函数,并且根据其自身特点进行了实现。 在实际使用时,我们可以根据给定的三个点构造出一个 Triangle 对象,并调用其相应的虚函数来完成任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值