判断点B是否在线段AC上?

news2024/11/17 1:32:43

问题

判断点B是否在线段AC上?

解决方法

1).使用矩阵的秩解决

 矩阵的秩代码

#include <iostream>
#include <vector>
#include <cmath>

class Matrix {
public:
    std::vector<std::vector<double>> data;
    int rows, cols;

    Matrix(int r, int c) : rows(r), cols(c), data(r, std::vector<double>(c, 0)) {}

    // 设置矩阵元素
    void set(int r, int c, double val) {
        if (r >= 0 && r < rows && c >= 0 && c < cols) {
            data[r][c] = val;
        }
    }

    // 获取矩阵元素
    double get(int r, int c) const {
        if (r >= 0 && r < rows && c >= 0 && c < cols) {
            return data[r][c];
        }
        return 0;
    }

    // 打印矩阵
    void print() const {
        for (int i = 0; i < rows; ++i) {
            for (int j = 0; j < cols; ++j) {
                std::cout << data[i][j] << " ";
            }
            std::cout << std::endl;
        }
    }

    // 求矩阵的秩
    int rank() const {
        Matrix temp(*this); // 创建一个临时矩阵,‌用于高斯消元
        int rank = 0;

        for (int col = 0; col < cols; ++col) {
            // 查找当前列中绝对值最大的元素,‌并进行行交换
            int maxRow = rank;
            for (int row = rank + 1; row < rows; ++row) {
                if (std::abs(temp.data[row][col]) > std::abs(temp.data[maxRow][col])) {
                    maxRow = row;
                }
            }

            // 如果当前列的最大元素为0,‌则跳过这一列
            if (temp.data[maxRow][col] == 0) {
                continue;
            }

            // 交换当前列的最大元素所在的行与当前处理的行
            if (maxRow != rank) {
                for (int k = col; k < cols; ++k) {
                    std::swap(temp.data[rank][k], temp.data[maxRow][k]);
                }
            }

            // 将当前列下方的元素消为0
            for (int row = rank + 1; row < rows; ++row) {
                double factor = temp.data[row][col] / temp.data[rank][col];
                for (int k = col; k < cols; ++k) {
                    temp.data[row][k] -= factor * temp.data[rank][k];
                }
            }

            ++rank; // 增加秩
        }

        return rank;
    }
};

int main() {
    Matrix m(3, 3);
    m.set(0, 0, 1);
    m.set(0, 1, 2);
    m.set(0, 2, 3);
    m.set(1, 0, 4);
    m.set(1, 1, 5);
    m.set(1, 2, 6);
    m.set(2, 0, 7);
    m.set(2, 1, 8);
    m.set(2, 2, 9);

    std::cout << "Matrix:" << std::endl;
    m.print();

    std::cout << "Rank: " << m.rank() << std::endl;

    return 0;
}

2).使用向量的点积判断

向量点积代码

// 计算两个向量的点积
float dot(const Vector3D& other) const {
        return x * other.x + y * other.y + z * other.z;
    }

向量长度代码

// 计算向量的长度
    float length() const {
        return sqrt(x * x + y * y + z * z);
    }

结论

使用工具解决问题。两种方法:1.矩阵的秩2.点积。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2049542.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电子合同如何在线签?9大协助工具软件

文章介绍了以下几个工具&#xff1a;e签宝、上上签、契约锁、法大大、合同管家、Concord、爱签、微签、PandaDoc。 在选择合适的电子签名工具时&#xff0c;很多企业面临着如何确保合规、提高效率以及优化用户体验的挑战。市场上的众多选项使得决策过程变得更加复杂。但是&…

【Kubernetes】虚拟 IP 与 Service 的代理模式

虚拟 IP 与 Service 的代理模式 1.userspace 代理模式2.iptables 代理模式3.IPVS 代理模式 由于 Service 的默认发布类型是 ClusterlP&#xff0c;因此也可以把 ClusterIP 地址叫作 虚拟 IP 地址。在 Kubernetes 创建 Service 时&#xff0c;每个节点上运行的 kube-proxy 会自动…

百度地图SDK Android版开发 6 显示覆盖物

百度地图SDK Android版开发 6 显示覆盖物 前言地图类中覆盖物的接口覆盖物类Marker示例Polyline示例Polygon示例Arc示例Circle示例Text示例效果图 Marker的更多属性常用属性交互碰撞动画其它属性 折线的更多属性常用属性交互其它 多边形的更多属性常用属性交互其它 Arc的更多属…

keepalive原理详解及应用

目录 一、高可用集群 1.1 什么是keepalived 1.2 什么是VRRP协议 二、Keepalived 部署 2.1 keepalived 简介 2.2 keepalived 框架 2.3 实验环境搭建 2.4 Keepalived 安装 2.5 Keepalived 配置 2.5.1 虚拟路由配置 2.5.2 独立日志 2.5.3 独立子配置文件 三、Keepali…

Unity动画模块 之 3D Rig页签

​本文仅作笔记学习和分享&#xff0c;不用做任何商业用途本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正​​ 1.Rig页签 Rig 选项卡 - Unity 手册&#xff0c;rig是设置骨骼与替身系统的&#xff0c;工作流程如下 Avatar是什么…

【算法】弗洛伊德(Floyd)算法求最短路径

目录 1.弗洛伊德&#xff08;Floyd&#xff09;算法介绍 2.弗洛伊德算法图解分析 2.1思路&#xff1a; 2.2图和矩阵的准备 2.3弗洛伊德算法的步骤&#xff1a; 2.4疑问 3.弗洛伊德算法的代码实现 3.1创建图并显示距离表与前驱表 3.2完整代码 1.弗洛伊德&#xff08;Flo…

数据结构stack (笔记)

文章目录 1. 概念理解易混淆内容 2. 时间复杂度3. 实现方式4. 应用5. 内容出处 1. 概念理解 stack(中文名&#xff1a;堆栈、栈)&#xff1a;虽然它叫堆栈&#xff0c;但是它其实指的是栈&#xff0c;跟堆没啥关系。 栈的特性&#xff1a;先进后出、后进先出(这个过程就…

【STL】红黑树(插入、删除底层实现)

目录 红黑树简介 红黑树框架构建 构造函数 析构函数 四种旋转逻辑&#xff08;左单旋&#xff0c;右单旋&#xff0c;左右双旋&#xff0c;右左双旋&#xff09; 左右双旋与右左双旋 左单旋 右单旋 红黑树的插入 Insert 插入节点的颜色 红黑树插入的三种情况 代码…

Datawhale X 魔搭 AI夏令营第四期 魔搭-AIGC方向 task03笔记

Datawhale官方的Task3链接&#xff1a;Task03 往期Task1、Task2链接&#xff1a;Task01&#xff0c; Task02 【学习者手册】&#xff1a;链接直达 【QA文档】&#xff1a;链接直达 【赛事官网】&#xff1a;链接直达 ComfyUI ComfyUI是一个基于深度学习的图像生成软件&…

鸿萌数据恢复服务:SQL Server 中的“PFS 可用空间信息不正确”错误

天津鸿萌科贸发展有限公司从事数据安全服务二十余年&#xff0c;致力于为各领域客户提供专业的数据恢复、数据备份、网络及终端数据安全等解决方案与服务。 同时&#xff0c;鸿萌是国际主流数据恢复软件(Stellar、UFS、R-Studio、ReclaiMe Pro 等)的授权代理商&#xff0c;为专…

【教学类-58-10】黑白三角拼图08(参考图+操作卡+黑白块,适合个别化)

背景需求&#xff1a; 前期做了一套适合集体操作的绘画“黑白三角” 【教学类-58-09】黑白三角拼图07&#xff08;1页3张黑白的白点卡片&#xff0c;一种宫格36张&#xff0c;适合一个班级一次操作&#xff09;-CSDN博客文章浏览阅读1k次&#xff0c;点赞30次&#xff0c;收藏…

面向自动驾驶保证车辆转向稳定性的模型预测控制

摘 要 车辆智能化是当前和未来汽车发展的主要方向和核心技术之一。随着车辆智能化水 平的提高&#xff0c;自动驾驶等级从无自动驾驶向完全自动驾驶提升。在自动驾驶的人机协同控制 和完全自动驾驶阶段&#xff0c;由于人类驾驶员在动态驾驶任务中的参与程度不同&#xff0c;…

23. 机盒通信

1. 概述 耳机和充电盒,采用机盒通信的方式,完成通信和充电。受限于耳机上的触电,机盒通信采用单线模式。 注:耳机只做应答,不主动发起通信 2. 硬件连接 由于bes2700外置SY5501的电源管理芯片,实际上串口通信,通过SY5501进行转发。 充电盒 -> SY5501 -> bes27…

windows安装boost后没有b2.exe(无法执行b2)

原因&#xff1a;如果你是在官网下载的.exe文件进行的boost安装&#xff0c;那么就不需要再执行bootstrap.bat&#xff0c;也因此不会有b2.exe 链接&#xff1a;官方网址下载 通过.exe安装boost并配置环境变量之后就可以直接使用了 如果你仍希望有b2.exe&#xff0c;那么双击执…

2024“钉耙编程”中国大学生算法设计超级联赛(9)hdu7529 树异或价值(树形dp+贪心)

题目 t(t<20)组h里&#xff0c;每次给定一棵n(n<2e5)个点的&#xff0c;点1为根的有根树&#xff0c; 定义树的价值为&#xff0c; 其中&#xff0c;&#xff0c;dep为深度&#xff0c;1号点的深度为0 而a数组待确定&#xff0c;对于所有的种方案&#xff0c;你要使树…

Leetcode每日刷题之118.杨辉三角

1.题目解析 杨辉三角作为一个经典的数学模型&#xff0c;其基本原理相信大家已经耳熟能详&#xff0c;这里主要是在学习了vector之后&#xff0c;对于本题有了新的解法&#xff0c;更加简便。关于vector的基本使用详见 面向对象程序设计(C)之 vector&#xff08;初阶&#xff0…

Selenium + Python 自动化测试17(数据驱动-文本操作)

我们的目标是&#xff1a;按照这一套资料学习下来&#xff0c;大家可以独立完成自动化测试的任务。 之前有一篇我们讨论了使用模块化测试来优化我们的测试脚本&#xff0c;今天我们试着进一步深入学习数据驱动。 本篇文章我们讨论一下数据驱动思想&#xff0c;如何将数据和脚本…

Zookeeper的在Ubuntu20.04上的集群部署

安装资源 官方安装包下载地址&#xff1a;https://zookeeper.apache.org/releases.html 懒得找版本的可以移步下载zookeeper3.84稳定版本&#xff1a; https://download.csdn.net/download/qq_43439214/89646735 安装方法 创建安装路径&&解压安装包 # 创建路径 m…

机器学习之ROC曲线

机器学习之ROC曲线 1.TPR与FPR计算2.TPR、FPR与分类阈值的关系3.生成ROC曲线4.AUC计算参考文献本博客主要参考了https://www.evidentlyai.com/classification-metrics/explain-roc-curve。 1.TPR与FPR计算 真阳率TPR(True Positive rate),又称召回率recall rate。 假阳率F…

AtCoder Beginner Contest 367(ABCDEF题)视频讲解

A - Shout Everyday Problem Statement In the Kingdom of AtCoder, residents are required to shout their love for takoyaki at A A A o’clock every day. Takahashi, who lives in the Kingdom of AtCoder, goes to bed at B B B o’clock and wakes up at C C C o’…