三角函数在编程中的实际运用—永劫无间脚本

news2024/10/7 8:27:29

三角函数在编程中的实际运用—永劫无间脚本

    • 前言
    • 需求
    • 思路
    • 代码
      • ■ 转义码
      • ■ 源码
    • 具体讲解
      • 三角函数计算相对移动
      • 求余跳过不需要的位置
    • 成品
    • 最后

前言

义务教育下,年轻人从初中就开始学三角函数却半辈子也没用上,除了特殊行业,做开发的可能也就大学oj刷题用到。在编写永劫无间脚本的时候,灵机一动用上了三角函数,实属有趣,记之。

需求

在永劫无间中,我需要做这么一个脚本功能。游戏中按下X+鼠标向方向移动+松开X就是发表情。用脚本实现快速转一圈把所有表情都发一遍并循环,而且还要跳过225°和270°的两个非表情动作。
在这里插入图片描述

思路

普通思路就是创建数组坐标常量,遍历循环,简单粗暴,没毛病。但是有洁癖的码农都会追求优雅,脑子里立马浮现了三角函数,利用角度可以计算正负数表示方向,改个参数就能换场景使用。

代码

话不多说,上代码。

■ 转义码

在这里插入图片描述

■ 源码

Sub 嘲讽()
	int num = 8
	count = 0
	pi = 3.1415926535897932
	degrees = 360/8
	For 1120
		mx = Sin(degrees * count * pi/180)*10
	    my = -Cos(degrees * count * pi/180)*10
		KeyDown "X", 1
		Delay 120
 		For 3
 			dm.MoveR mx, my
			Delay 10
 		Next
		KeyUp "X", 1
		count = count + 1
		// 跳过调息敬礼的位置
		If degrees * count mod 360 = degrees * 5 Then 
			count = count + 1
		End If
		If  degrees * count mod 360 = degrees * 6 Then
			count = count + 1
		End If 
	Next
End Sub

具体讲解

三角函数计算相对移动

我们以上面的表情作为第一个表情也就是起始位置,即为0°
一圈是360°,8个表情说明一个占用45°,第二表情就是45°。

第一个表情只需要鼠标向上移动,对应x轴不变,y轴负数移动。
三角函数可得Sin0°等于0,Cos0°等于1。

同理,第二个表情需要鼠标向右上移动,对应x轴正数移动,y轴负数移动。
三角函数可得Sin 45°等于0.707,Cos45°等于0.707。

推导得出,Sin可以表示x轴移动,-Cos表示y轴移动。

求余跳过不需要的位置

这个就经常用了,对总表情量取模,就可以表示循环中的位置,只不过要灵活运用,加入度数来计算。

degrees * count mod 360 = degrees * 5

成品

成品就不发了,有兴趣可以抖音搜索永劫无间求饶脚本查看。

最后

这样,我们就成功利用三角函数优雅的表示移动方向,是不是强迫症一下子就舒服了。很多知识可能花了我们很大精力去学习却无用武之地,但是增加储备粮,并活学活用,终有一天会在一个个小小的场景中起到丁点力量,虽微末,却心旷神怡,岂不乐哉。

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

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

相关文章

Nginx web服务器入门及其在Linux中的搭建

目录 ​编辑 一、Nginx基本概述 1.介绍 2.优点 3.应用场景 (1)负载均衡 (2)代理缓存 (3)静态资源 (4)安全应用场景 4.Nginx的组成 (1)Nginx二进制…

Canal同步数据

canal同步数据 canal可以用来监控数据库数据的变化,从而获得新增数据,或者修改的数据。 canal是应阿里巴巴存在杭州和美国的双机房部署,存在跨机房同步的业务需求而提出的。 阿里系公司开始逐步的尝试基于数据库的日志解析,获取…

(9)Qt中信号与槽重载的解决方案

信号与槽重载的解决方案 一、通过函数指针解决 //信号 void (Me::*funchungury)() &Me::hungury; void (Me::*funchungury_QString)(QString) &Me::hungury; //槽 void (Me::*funceat)() &Me::eat; void (Me::*funceat_QString)(QString) &Me::eat;//有参…

Oracle与MySQL语法转换

前言 Oracle与MySQL语法转换 场景:系统改造,需要由Oracle切换为MySQL,因而要对代码中的Oracle语法的sql调整为MySQL语法 博客地址:芒果橙的个人博客 【http://mangocheng.com】 sysdate–当前日期 Oracle 使用sysdate select s…

hdl_graph_slam代码解析

hdl SLAM和定位的关系:HDL和cartographer一样,是离线建图的 整个SLAM系统的架构 包含四个节点: 预处理、 帧匹配、hdl_slam、地面检测 输入点云首先经过预处理进行降采样,然后传给下一个节点。帧匹配通过迭代获取两帧之间运动变化…

【SpringCloud01】微服务架构入门

1.微服务架构理论入门 SpringCloud微服务 2.Boot和Cloud版本选型 上篇:SpringBoot2.X版和SpringCloud H版 下篇:SpringCloud Alibaba 官网强烈推荐SpringBoot2.0以上的版本 Cloud与Boot之间的版本关系 技术选型相关的网站使用在线解析json字符串 由于…

第2章 马尔可夫决策过程

2.1 马尔可夫决策过程(上) Markov Decision Process(MDP) Markov Decision Process can model a lot of real-world problem. It formally describes the framework of reinforcement learningUnder MDP, the environment is ful…

Promise 实现 (从简易版到符合Promise A+规范)

前言 手写 Promise 是面试的时候大家都逃避的送命题,在学些了解后发现通过实现源码更能将新一代的异步方案理解的通透,知其然知其所以然的运用。 如果直接将源码贴到此处势必不能有更大的收获,下面就按实现版本来看做简要分析。 回顾 Prom…

SpringBoot测试类编写

前置要求: a.测试类上需要的注解 SpringBootTest AutoConfigureMockMvc Slf4j b.引入MockMvc类 Autowired private MockMvc mockMvc; c.如果需要前置条件可以用before注解 1.get/delete请求 // 查询Testvoid testQuery() throws Exception {String content mockMvc.perfor…

Django(15):身份和权限认证

目录1.Django中的身份认证模块1.1 用户模型1.2 认证模块1.3 项目搭建演示2.权限管理架构2.1 权限相关数据模型2.2 权限相关功能函数2.3 权限分配函数2.4 权限设置3.资源访问管理1.Django中的身份认证模块 1.1 用户模型 Django中有内建的用户模块django.contrib.auth.models.U…

2022 CNCC 中国计算机大会参会总结

前言 第 19 届 CNCC 于2022年12月8-10日召开,本届大会为期三天,首次采取全线上举办形式,主题为“算力、数据、生态”,重点在保持多样性、聚焦热点前沿话题、平衡学术界和产业界参与等维度展开讨论。大会由CCF会士、中国科学院院士…

【SpringBoot】一文带你入门SpringBoot

✅作者简介:热爱Java后端开发的一名学习者,大家可以跟我一起讨论各种问题喔。 🍎个人主页:Hhzzy99 🍊个人信条:坚持就是胜利! 💞当前专栏:【Spring】 🥭本文内…

【职场进阶】做好项目管理,先从明确职责开始

优秀的项目管理一定是高效协调各方资源、反馈及时、调整迅速的。 同时可以做到让参与各方在整个项目过程中张弛有序、愉快合作,最终实现产品项目的效益最大化。 那什么是项目呢? 项目是为向客户提供独特的产品或服务而进行的临时性任务,项目有…

TypeScript 对象key为number时的坑

首先在js的对象中有一个设定,就是对象的key可以是字符串,也可以是数字。 不论key是字符串还是数字,遍历对象key的时候,这个key会变成字符串 通过[] 操作符访问key对应值时候,不论是数字还是字符串都转成了 字符串的k…

Chromedriver安装教程

第一步 查看你当前Chrome浏览器的版本,如下图所示: 第二步 查看当前Chrome浏览器的版本号,如下图所示,版本 108.0.5359.125(正式版本) (64 位)中的,108就是我们的版本号。 第三…

VTK-PointPlacer

前言:本博文主要研究VTK中点转换到曲面上的应用,相关的接口为vtkPolygonalSurfacePointPlacer,为深入研究将基类vtkPointPlacer开始讲解。主要应用为在PolyData表面进行画线。 vtkPointPlacer 描述:将2D display位置转换为世界坐…

ospf知识点汇总

OSPF : 开放式最短路径优先协议使用范围:IGP 协议算法特点: 链路状态型路由协议,SPF算法协议是否传递网络掩码:传递网络掩码协议封装:基于IP协议封装,协议号为 89一.OSPF 特点1.OSPF 是一种典型…

基于javaweb(springboot+mybatis)网上酒类商城项目设计和实现以及文档报告

基于javaweb(springbootmybatis)网上酒类商城项目设计和实现以及文档报告 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏…

【Linux】Linux项目自动化构建工具—make/Makefile

目录一.什么是make/MakefileMakefilemake二.Makefile逻辑1.简单依赖2.复杂依赖三.make指令1.make的使用2.clean清理3.伪目标4.make如何确定是否编译访问时间的影响修改时间的影响一.什么是make/Makefile Makefile 在Windows下,我们使用VS、VS Code这些ide编写C/C程…

MySQL的客户端/服务器架构

以我们平时使用的微信为例,它其实是由两部分组成的,一部分是客户端程序,一部分是服务器程序。客户端可能有很多种形式,比如手机APP,电脑软件或者是网页版微信,每个客户端都有一个唯一的用户名,就…