几何对象基本元素与表现

news2024/9/23 9:30:51

点与向量

点 (point) 表示空间中的位置,它有空间中的坐标,例如在三维空间中,点有 (x, y, z) 坐标。

向量 (vector) 是有方向的量,它可以表示在空间中的移动。向量可以通过两个点的差计算,它连接起始点和终止点。

结构体:

class Point{
    double x;
    double y;
}

向量(Vector)也可以使用点的结构体来使用。

线段与直线

线段 (line segment) 是由两个端点组成的有向的有限长度的直线。

直线 (line) 是由无限多个点组成的无限长的线。

与线段不同,直线没有端点,它一直延伸到无穷远。

结构体:

class Segment{
    Point p1;
    Point p2;
}

同时直线和线段可以使用相同的方法实现。

圆 (circle) 是一种二维图形,由一个中心点和一个固定半径组成。所有离中心点距离相等的点在同一个圆上。圆的定义可以通过一个方程来表示,例如 (x-a)^2 + (y-b)^2 = r^2,其中 (a,b) 是圆心,r 是半径。

表示圆的类:

class Circle{
    Point c;
    double r;
}

此外多边形可以使用点的序列来表示,通常使用Point数组或List来表示。

向量的基本运算

 简单实现:

class Point{
    double x;
    double y;

    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }

   //加
    private Point add(Point p){
        return new Point(x+p.x,y+p.y);
    }
    //减
    private Point sub(Point p){
        return new Point(x-p.x,y-p.y);
    }
    //乘
    private Point mul(double k){
        return new Point(x*k,y*k);
    }
}

 向量大小

向量大小,也称为向量的模,是一维向量的长度,它反映了向量在空间中的长度。向量的模可以通过欧几里得公式来计算。

 double abs (Point a){
        return Math.sqrt(a.x*a.x+a.y*a.y);
    }

 向量内积

向量内积(也称为点积)是两个向量的数学表达式,用于评估向量的相似性。它可以计算为两个向量的对应元素的乘积的和。结果是一个标量,可以用来评估向量的相关性、方向和长度。

  double dot(Point a,Point b){
        return a.x*b.x+a.y*b.y;
    }

 向量外积

向量外积(也称为叉积)是两个向量的数学表达式,用于描述向量在三维空间中的相对位置。它返回一个向量,该向量的方向垂直于原始两个向量,长度为两个向量所围成平行四边形的面积。

 double cross(Point a,Point b){
        return a.x*b.y-a.y*b.x;
    }

 

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

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

相关文章

第3章:基于媒体查询生成PDF

图:pdfHTML C3F01 检查示例HTML文件 图3.1显示了一个HTML页面,介绍 South by South West,这是德克萨斯州奥斯汀的一项年度活动。该页面分布在三个浏览器窗口中;请参阅 sxsw.html 和 sxsw.css 以获取用于创建此页面的html和css代码。这个HTML页面的布局灵感来自 w3schools…

vite 运行项目报错 ‘axios/index.js‘ does not provide anexport named ‘default‘

报错信息 报错信息:The requested module ‘/node_modules/axios/index.js?v2866e624’ does not provide an export named ‘default’ 现象 使用 vite 打包工具开发时出现,生产环境正常 原因 原因在于 Vite 是完全依靠 ESM 原生能力的&#xff0c…

jspssm学生宿舍预订报修管理系统

目录 摘 要 1 Abstract 2 1 绪论 3 1.1 课题背景 4 1.2 课题研究现状 5 1.3 初步设计方法与实施方案 6 1.4 本文研究内容 7 2 系统开发环境 8 2.1 Java语言 9 2.2 JSP技术 9 2.3 B/S架构 9 2.4 Eclipse环境配置 9 2.5 MySQL数据库 9 3 …

springBean的作用域

前言:最近在进行springBean的作用域学习,并且学习了对应的例子。这里进行一下总结 一:Bean的作用域基础概念 如果想学习SpringBean的生命周期,那么就必须要学习Bean的作用域。因为不同的作用域的bean的生命周期不同 1:singleto…

基于VS2019的ceres solver配置

一、ceres solver介绍Ceres Solver 是一个开源的C库,用于建模和解决大型、复杂的优化问题。它可以用来解决有边界约束的非线性最小二乘法问题和一般无约束的优化问题。官网:http://www.ceres-solver.org/案例网址:http://www.ceres-solver.or…

【数据结构】各排序方法比较

文章目录一、时间性能二、空间性能三、排序方法的稳定性能四、关于排序方法的时间复杂度的下限一、时间性能 按照平均时间性能来分,有三类排序方法: 时间复杂度为 O(nlogn)的方法有: 快速排序、堆排序、归并排序,其中以快速排序最…

Cesium 常见错误集

解决cesium widgets.css is not exported from package 在版本1.9以上版本后,按照官方文档引入css 时 会报错:cesium widgets.css is not exported from package 解决方案: 1.node_modules里找到cesium的package.json文件,在exports里增加导出widgets.css [rml_read_mo…

华为HCIE学习之open stack开篇(笔记)

文章目录一、云计算和虚拟化的区别二、Openstack的作用三、Openstack部署方式四、Openstack内的一些概念1、租户2、镜像3、规格4、网络一、云计算和虚拟化的区别 云计算是一种服务模式,而虚拟化是一种具体的技术。 二、Openstack的作用 Openstack是一个云操作系统…

小程序开发(五)

上拉触底进行节流处理在data中定义isloading发起请求时完成时回调事件响应式判断自定义编译模式:》编译自动跳转生命周期:onlaunch 初始化完成 只执行一次onShow:切换到前台onHide:切换到后台app.js :onReady :渲染完成才可以修改…

优秀的代码最终选择if else,还是switch case

今天我们不讨论哪个写法读起来更优秀,不讨论对于性能而言哪个更完美,也不讨论哪种情况下对于判断语句是常量还是变量的选择,而是单纯从最简单的角度来看一下,为什么很多优秀的项目优秀的代码,最终选择了if else语句&am…

惠普Probook450G7电脑开机总是卡死蓝屏怎么重装系统?

惠普Probook450G7电脑开机总是卡死蓝屏怎么重装系统?有用户在使用惠普Probook450G7电脑的时候,电脑一开机的时候总是会卡死无法操作,然后就变成蓝屏了。那么遇到这个问题怎么去进行系统的重新安装呢?一起来看看重装系统的具体操作…

中国电子学会2021年06月份青少年软件编程Python等级考试试卷一级真题(含答案)

青少年软件编程(Python)等级考试试卷(一级) 分数:100.00 题数:37 一、单选题(共25题,每题2分,共50分) 1. 下列程序运行的结果是?&am…

python 环境安装

时隔 将近一年了, 我又重新追寻我的理想了。 趁着2023年刚到,先写一点 python 打个基础。 还是老样子,学到及输出,所以继续写文章。 本文章主要介绍 python 的环境搭建 和 输出 HelloWorld 用于测试搭试好的环境。 本专栏主要…

【ArcGIS微课1000例】0062:标准样式世界地图制作方法

本文基于世界行政区轮廓矢量数据,讲解标准地图的样式(形状)的世界矢量图制作方法。 文章目录 一、加载世界数据二、修改地图投影三、地图布局整饰一、加载世界数据 首先我们将世界行政数据(配套实验数据包中的0062.rar)加载到ArcMap,我们可以看到地图形状接近于矩形形状…

在线 OJ 项目(三) · 处理项目异常 · UUID · 校验代码的安全性 · 阶段性总结

一、处理异常二、区分不同请求的工作目录UUID对 Task 类进行重构三、校验代码的安全性四、阶段性总结书接上回,我们自己测试没问题,是因为使用了正常数据;万一用户输入的是非法的请求,该咋办? 我们需要处理异常请求&a…

内网服务器结合vxlan和iptables-snat实现内网服务器上网——筑梦之路

之前通过其他方式实现 CentOS搭建NAT和DHCP服务,实现共享上网_筑梦之路的博客-CSDN博客_vsphere 创建dhcp CentOS 7 firewalld实现共享上网和搭建本地yum仓库——筑梦之路_筑梦之路的博客-CSDN博客 如上图,有这样一种场景,我们经常遇到&…

【以音视频开发进阶指南为基础】音视频基础概念

一、数字音频 数字音频可以粗糙的理解为将本质是模拟信号的声音音频数字化,那么如何数字化呢,需要经过三个步骤:采样、量化和编码。 采样:将声音的振动信息转化为电信号,再对电信号进行放大处理得到声音的模拟信号&a…

POE交换机常见问题解答

POE交换机通过网线供电的方式为标准的POE终端设备供电,可以免去额外的电源布线,在为一些基于IP的终端(如IP电话机、无线局域网接入点AP、网络摄像机等)传输数据信号的同时,还能为此类设备提供直流供电的技术。POE技术能…

Windows10安装java环境

Windows10安装java环境 文章目录Windows10安装java环境下载解压配置下载 Java8 https://www.oracle.com/java/technologies/downloads/#java8-windows Java11 https://www.oracle.com/java/technologies/downloads/#java11-windows Java17 https://www.oracle.com/java/techno…

12.日期与时间

目录 一.Date类 1.1 什么是Date类 1.2 Date类的构造器和常用方法 1.2.1 常用构造器 1.2.2 常用方法 二.SimpleDateFormat 2.1 什么是SimpleDateFormat 2.2 SimpleDateFormat的作用 2.3 SimpleDateFormat的构造器和方法 2.3.1 构造器 2.3.2 方法 2.3.3 例子 2.4 Sim…