Scratch 之 两点之间距离的测算

news/2025/2/13 16:01:21/

1.前言

        在Scratch中,对于坐标系上的两点,我们可以确定通过x坐标或y坐标之差确定两点横坐标或是纵坐标上的距离,那么如何知道两点之间的直线距离呢?


2.勾股定理

        对于一个直角三角形,两条直角边的平方和等于斜边的平方,勾股定理 :a^2+b^2=c^2

        ‌勾股定理将作为确定两点之间距离算法的核心原理,下文参考百度百科:

        勾股定理,是一个基本的几何定理,指直角三角形的两条直角边的平方和等于斜边的平方。中国古代称直角三角形为勾股形,并且直角边中较小者为勾,另一长直角边为股,斜边为弦,所以称这个定理为勾股定理,也有人称商高定理。

        勾股定理现约有500种证明方法,是数学定理中证明方法最多的定理之一。勾股定理是人类早期发现并证明的重要数学定理之一,用代数思想解决几何问题的最重要的工具之一,也是数形结合的纽带之一。

        在中国,周朝时期的商高提出了“勾三股四弦五”的勾股定理的特例。在西方,最早提出并证明此定理的为公元前6世纪古希腊的毕达哥拉斯学派,他们用演绎法证明了直角三角形斜边平方等于两直角边平方之和。 

3.基本算法

对于前言中的问题,我们不妨在两点之间构造一个直角三角形,以两点之间的直线距离为斜边,如图

通过勾股定理我们可以知道,两点之间的距离c可以通过以下表达式得到:

因此,只需知道a,b的值,我们就可以知道A,B之间的距离,通过sc中的坐标系,我们不难得到:

简单进行解释,由于平方带有非负性,所以绝对值可以去掉

a, b的值分别为A,B两点x坐标和y坐标上的差值

4.代入Scratch

在Scratch中,我们可以专门写一个函数用于测量两点之间的距离,通过上面的推理可知,我们的参数只需要这两个点各自的x,y坐标

勾选运行时不刷新屏幕,立刻完成距离测算

x0, y0 为A点坐标,x1, y1 为B点坐标,代入表达式,具体如下:

这样一来,两点之间的距离就被存储在了 #distance 私有变量中

5.结束语

该算法可适用范围极大,比如检测克隆体间的碰撞,不能用侦测积木,就可通过测算两点之间距离来判定是否接触。

以上就是关于两点之间距离测算的全部内容,喜欢的话请多多支持作者。


http://www.ppmy.cn/news/1003727.html

相关文章

CrackQL:一款功能强大的图形化密码爆破和模糊测试工具

关于CrackQL CrackQL是一款功能强大的图形化密码爆破和模糊测试工具,在该工具的帮助下,广大研究人员可以针对密码安全和应用程序安全进行渗透测试。 除此之外,CrackQL同时也是一款通用的GraphQL渗透测试工具,它可以控制速率限制…

Android Studio 屏幕适配

Android开发屏幕适配流程 首先studio中没有ScreenMatch这个插件的,下去现在这个插件 点击File->settings->Plugins->(搜索ScreenMatch插件),点击下载,应用重启Studio即可,如下图 在values下 创建dimens.xml&#xff0c…

?.的写法 后缀修饰符

概览:处理后端返回的数据data,写法:data?.name。解决vue框架编译出现的报错Cannot read property name of undefined。出现问题的原因:这是因为我们试图访问对象中不在的 key 为 name 的属性,那么怎么解决呢&#xff…

QWidget样式

1、设置边框样式: QWidget {font-family:Microsoft YaHei UI;background:#ffffff;/*border:3px solid rgba(207, 209, 208, 170);设置整体边框*/border-bottom: 3px solid rgba(207, 209, 208, 170);/*设置底部边框*/border-top: 3px solid rgba(207, 209, 208, 1…

postman----传参格式(json格式、表单格式)

本文主要讲解postman使用post请求方法的2中传参方式:json格式、表单格式 首先了解下,postman进行接口测试,必须条件是: ♥请求地址 ♥请求协议 ♥请求方式 ♥请求头 ♥参数 json格式 先看一下接口文档,根据接口文档&…

react icon ant简单使用

refer&#xff1a; 文字提示 Tooltip - Ant Design 1.首先保证已经引入了Ant 2.在组件&#xff08;页面&#xff09;引入tooltip import { Form, Tooltip } from antd; 3.在合适的位置使用tooltip&#xff1a; <span>寿命 <Tooltip title"这是寿命的说明&quo…

redis原理 3:未雨绸缪 —— 持久化

redis原理 3&#xff1a;未雨绸缪 —— 持久化 Redis 的数据全部在内存里&#xff0c;如果突然宕机&#xff0c;数据就会全部丢失&#xff0c;因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失&#xff0c;这种机制就是 Redis 的持久化机制。 Redis 的持久化机制有两种…

[Docker实现测试部署CI/CD----自由风格的CI操作[中间架构](4)]

10、自由风格的CI操作&#xff08;中间架构&#xff09; 中间架构图 创建web项目 创建一个 web 项目&#xff0c;就使用简单的 spring boot 工程&#xff0c;例如工程名为 hellojks。仅需导 入 spring web 依赖即可。 import org.springframework.web.bind.annotation.GetMapp…