《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行是计算两条鱼之间的力的方法。先计算出两条鱼之间的距离判断是否小于阈值,如果小于阈值则两条鱼之间产生力的作用并且力的大小与两条鱼之间的距离成反比。当两条鱼之间的距离超出一定范围之后则两条鱼之间的力会消失。

相关文章
|
22小时前
|
缓存 Java Android开发
构建高效的Android应用:内存优化策略解析
【5月更文挑战第25天】在移动开发领域,性能优化一直是一个不断探讨和精进的课题。特别是对于资源受限的Android设备来说,合理的内存管理直接关系到应用的流畅度和用户体验。本文深入分析了Android内存管理的机制,并提出了几种实用的内存优化技巧。通过代码示例和实践案例,我们旨在帮助开发者识别和解决内存瓶颈,从而提升应用性能。
|
22小时前
|
移动开发 Android开发 开发者
构建高效Android应用:Kotlin协程的实践之路
【5月更文挑战第25天】 在移动开发领域,性能优化与流畅的用户体验始终是开发者追逐的目标。对于Android平台而言,Kotlin协程作为一种新型的异步编程解决方案,提供了更加简洁和高效的代码实现方式。本文将深入探讨如何在Android应用中利用Kotlin协程来提升后台任务处理的效率,同时确保UI线程的流畅性,从而打造高性能的应用程序。我们将分析协程的核心概念,并通过实际案例演示如何集成协程到现有项目中,以及如何调试和优化协程代码,以期帮助开发者更好地掌握这一强大工具。
|
1天前
|
移动开发 Android开发 开发者
构建高效Android应用:Kotlin与协程的完美融合
【5月更文挑战第25天】 在移动开发的世界中,性能和响应性是衡量应用质量的关键指标。随着Kotlin的流行和协程的引入,Android开发者现在有了更强大的工具来提升应用的性能和用户体验。本文深入探讨了Kotlin语言如何与协程相结合,为Android应用开发带来异步处理能力的同时,保持代码的简洁性和可读性。我们将通过实际案例分析,展示如何在Android项目中实现协程,以及它们如何帮助开发者更有效地管理后台任务和用户界面的流畅交互。
|
1天前
|
调度 数据库 Android开发
构建高效Android应用:Kotlin协程的全面应用
【5月更文挑战第25天】随着移动开发技术的不断进步,Android开发者寻求更高效的异步处理解决方案以提升应用性能和用户体验。Kotlin协程作为一种轻量级的线程管理机制,在简化异步编程、提升响应速度以及降低资源消耗方面展现出独特的优势。本文将深入探讨Kotlin协程的核心原理,并通过实例演示如何在Android应用中有效地利用协程来处理网络请求、数据库操作以及UI线程的流畅交互,旨在为开发者提供一套系统的应用实践指南。
|
1天前
|
缓存 监控 Java
安卓应用开发中的内存优化策略
【5月更文挑战第24天】 在移动设备上,资源的有限性要求开发者对应用程序进行细致入微的性能优化。特别是对于安卓平台,由于设备的多样性和碎片化问题,内存管理成为提升应用性能、用户体验和电池寿命的关键因素。本文将探讨针对安卓开发的内存优化技巧,从避免内存溢出、减少内存占用到提高内存回收效率等方面展开讨论,旨在为开发者提供实用的内存优化策略,以改善应用的运行效率和稳定性。
|
3天前
|
数据库 Android开发 UED
构建高效Android应用:探究Kotlin协程的优势与实践
【5月更文挑战第23天】在移动开发领域,性能优化和响应性是至关重要的。随着Kotlin成为Android官方推荐的开发语言,其提供的协程功能为异步编程带来了革命性的改进。本文将深入探讨Kotlin协程的核心优势,并通过实例演示如何在Android应用中有效利用协程来提升性能和用户体验。
|
3天前
|
数据库 Android开发 开发者
构建高效的Android应用:Kotlin协程的优势与实践
【5月更文挑战第23天】 在移动开发领域,性能优化和流畅的用户体验始终是开发者追求的目标。随着Kotlin语言在Android平台的广泛采用,其提供的协程功能已成为提升应用性能的强大工具。本文将深入探讨Kotlin协程的核心优势,并通过具体实例展示如何在Android应用中高效地运用协程进行异步编程,以及如何通过协程简化后台任务处理,实现流畅的用户界面。
|
3天前
|
移动开发 数据处理 Android开发
构建高效Android应用:Kotlin的协程与Flow的使用
【5月更文挑战第23天】 在移动开发领域,性能优化和异步编程一直是核心议题。随着Kotlin语言在Android开发中的普及,其提供的协程(coroutines)和流式编程(Flow)功能为开发者带来了革命性的工具,以更简洁、高效的方式处理异步任务和数据流。本文将深入探讨Kotlin协程和Flow在Android应用中的实际应用,以及它们如何帮助开发者编写更加响应迅速且不阻塞用户界面的应用程序。我们将通过具体案例分析这两种技术的优势,并展示如何在现有项目中实现这些功能。
|
4天前
|
安全 数据库 Android开发
构建高效Android应用:采用Kotlin与Jetpack的实践指南
【5月更文挑战第22天】 在移动开发领域,Android系统因其开放性和广泛的用户基础而备受开发者青睐。随着技术的不断演进,Kotlin语言以其简洁性和功能性成为Android开发的首选语言。本文将深入探讨如何结合Kotlin和Android Jetpack组件来构建一个高效且易于维护的Android应用。我们将重点讨论如何使用Jetpack的核心组件,如LiveData、ViewModel和Room,以及Kotlin的语言特性来优化代码结构,提高应用性能,并简化数据管理。通过具体案例分析,本文旨在为开发者提供一套实用的技术指导,帮助他们在竞争激烈的市场中脱颖而出。
|
4天前
|
移动开发 监控 Android开发
构建高效Android应用:从内存优化到电池续航
【5月更文挑战第22天】 在移动开发的世界中,一个流畅且高效的Android应用是区分优秀与平庸的关键因素。本文深入探讨了如何通过内存管理和电池使用效率的优化来提升应用性能,确保最终用户获得无缝且持久的体验。我们将透过具体策略和编码实践,揭示开发过程中可实施的改进措施,旨在帮助开发者克服常见的性能瓶颈,打造更高质量的Android应用。