《Android 应用案例开发大全(第二版)》——2.8节工具常量类

简介:

本节书摘来自异步社区《Android 应用案例开发大全(第二版)》一书中的第2章,第2.8节工具常量类,作者 吴亚峰 , 于复兴 , 杜化美,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.8 工具常量类
Android 应用案例开发大全(第二版)
上一节完成了线程相关类的详细介绍,这一节将对本案例工具类Vector3f的开发进行介绍,Vector3f是一个向量类,在该类里进行了向量的基本运算,如向量的加法、减法、求模等,具体代码如下所示。

1 package com.bn.ld.Vectors;
2 public class Vector3f {
3  public float x;         // 向量中的_x_
4  public float y;         // 向量中的_y_
5  public float z;         // 向量中的_z_
6  public Vector3f(float x, float y, float z) {
7   this.x = x;
8   this.y = y;
9   this.z = z;
10  }
11  public float Vectormodule() {      // 获取向量的模长
12   float Vectormodule = (float) Math.sqrt(this.x * this.x + this.y* this.y   
   + this.z * this.z);
13   return Vectormodule;
14  }
15  public void plus(Vector3f Vector) {     // 向量的加法
16   this.x += Vector.x
17   this.y += Vector.y;
18   this.z += Vector.z;
19  }
20  public void ChangeStep(float Length) {    // 向量的缩放
21   this.x = this.x / Length;
22   this.y = this.y / Length;
23   this.z = this.z / Length;
24  }
25  public void getforce(float weight) {     // 获取力的大小
26   if (weight != 0) {
27    this.x = this.x / weight;
28    this.y = this.y / weight;
29    this.z = this.z / weight;
30   }}
31  public Vector3f cutGetforce(Vector3f Vector) {  // 恒力的归一化
32   Vector3f Vtr = new Vector3f(this.x - Vector.x, this.y - Vector.y,this.z   - Vector.z);//向量减法
33   float Length = Vtr.Vectormodule();   // 获取模长
34   if (Length != 0){
35    Vtr.ChangeStep(Length);    // 向量归一化
36   }
37   return Vtr;
38  }
39  public Vector3f cutPc(Vector3f Vector){
40   Vector3f Vtr = new Vector3f(this.x - Vector.x, this.y - Vector.y,this.z   - Vector.z);//向量减法
41   return Vtr;
42  }
43  public Vector3f cut(Vector3f Vector, float MinDistances) {
44   Vector3f Vtr = new Vector3f(this.x - Vector.x, this.y - Vector.y,this.z   
   - Vector.z);//向量减法

45   float Length = Vtr.Vectormodule();   // 求模
46   if (Length <= MinDistances) {
47    if (Length != 0) {
48     Vtr.ChangeStep(Length * Length);  // 向量归一化
49    }} else {      // 两条鱼的距离超出一定范围力消失
50    Vtr.x = 0;      // 将_x_轴的力设为零
51    Vtr.y = 0;      // 将_y_轴的力设为零
52    Vtr.z = 0;      // 将_z_轴的力设为零
53   }
54   return Vtr;
55 }}

第1~24行依次为求向量的模,以及向量的加减法,和向量的归一化。向量的加法主要用在鱼的速度与鱼受到的力相加得到新的速度或鱼的位移与鱼的速度相加得到新的位移等方面。
第25~42行分别为获得了力的大小,进行力的减法与力的归一化的方法。力的大小是与鱼的质量(力的缩放比)成反比的。
第43~55行是计算两条鱼之间的力的方法。先计算出两条鱼之间的距离判断是否小于阈值,如果小于阈值则两条鱼之间产生力的作用并且力的大小与两条鱼之间的距离成反比。当两条鱼之间的距离超出一定范围之后则两条鱼之间的力会消失。

相关文章
|
5天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
24 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
4天前
|
Android开发 芯片 开发者
Android MediaTek bootloader 的序列号长度 & 移除非字母和数字限制 SN-Writer工具支持写入
Android MediaTek bootloader 的序列号长度 & 移除非字母和数字限制 SN-Writer工具支持写入
11 0
|
2天前
|
数据库 Android开发 开发者
安卓应用开发:构建高效用户界面的策略
【4月更文挑战第24天】 在竞争激烈的移动应用市场中,一个流畅且响应迅速的用户界面(UI)是吸引和保留用户的关键。针对安卓平台,开发者面临着多样化的设备和系统版本,这增加了构建高效UI的复杂性。本文将深入分析安卓平台上构建高效用户界面的最佳实践,包括布局优化、资源管理和绘制性能的考量,旨在为开发者提供实用的技术指南,帮助他们创建更流畅的用户体验。
|
2天前
android-agent-web中js-bridge案例
android-agent-web中js-bridge案例
10 2
|
3天前
|
移动开发 Java Android开发
构建高效Android应用:采用Kotlin协程优化网络请求
【4月更文挑战第24天】 在移动开发领域,尤其是对于Android平台而言,网络请求是一个不可或缺的功能。然而,随着用户对应用响应速度和稳定性要求的不断提高,传统的异步处理方式如回调地狱和RxJava已逐渐显示出局限性。本文将探讨如何利用Kotlin协程来简化异步代码,提升网络请求的效率和可读性。我们将深入分析协程的原理,并通过一个实际案例展示如何在Android应用中集成和优化网络请求。
|
3天前
|
调度 Android开发 开发者
构建高效Android应用:探究Kotlin协程的优势与实践
【4月更文挑战第24天】随着移动开发技术的不断演进,提升应用性能和用户体验已成为开发者的核心任务。在Android平台上,Kotlin语言凭借其简洁性和功能性成为主流选择之一。特别是Kotlin的协程功能,它为异步编程提供了一种轻量级的解决方案,使得处理并发任务更加高效和简洁。本文将深入探讨Kotlin协程在Android开发中的应用,通过实际案例分析协程如何优化应用性能,以及如何在项目中实现协程。
|
4天前
|
存储 缓存 安全
Android系统 应用存储路径与权限
Android系统 应用存储路径与权限
6 0
Android系统 应用存储路径与权限
|
4天前
|
存储 安全 Android开发
Android系统 自定义系统和应用权限
Android系统 自定义系统和应用权限
19 0
|
9天前
|
缓存 移动开发 Android开发
构建高效Android应用:从优化用户体验到提升性能表现
【4月更文挑战第18天】 在移动开发的世界中,打造一个既快速又流畅的Android应用并非易事。本文深入探讨了如何通过一系列创新的技术策略来提升应用性能和用户体验。我们将从用户界面(UI)设计的简约性原则出发,探索响应式布局和Material Design的实践,再深入剖析后台任务处理、内存管理和电池寿命优化的技巧。此外,文中还将讨论最新的Android Jetpack组件如何帮助开发者更高效地构建高质量的应用。此内容不仅适合经验丰富的开发者深化理解,也适合初学者构建起对Android高效开发的基础认识。
10 0
|
9天前
|
移动开发 Android开发 开发者
构建高效Android应用:采用Kotlin进行内存优化的策略
【4月更文挑战第18天】 在移动开发领域,性能优化一直是开发者关注的焦点。特别是对于Android应用而言,由于设备和版本的多样性,确保应用流畅运行且占用资源少是一大挑战。本文将探讨使用Kotlin语言开发Android应用时,如何通过内存优化来提升应用性能。我们将从减少不必要的对象创建、合理使用数据结构、避免内存泄漏等方面入手,提供实用的代码示例和最佳实践,帮助开发者构建更加高效的Android应用。
14 0