乌啦呀哈呀哈乌啦!

欢迎光临,这里是喵pass的个人博客,希望有能帮到你的地方

0%

其次函数:输入函数扩大 a 倍,其响应函数相应的也扩大 a 倍。

Unity中的齐次坐标是一种在计算机图形学中常用的表示坐标的方式,通过引入一个额外的维度来扩展传统的笛卡尔坐标系,以便进行几何变换和矩阵运算。‌齐次坐标将n维的向量或矩阵用n+1维来表示,这样可以明确区分向量和点,并且能够方便地处理平移变换‌。

齐次坐标通过增加一个额外的分量w来实现。当w≠0时,可以将齐次坐标转化为普通的笛卡尔坐标;当w=0时,表示一个无穷远的点‌。这种表示方法使得4x4矩阵(仿射矩阵)能够同时进行线性变换和平移变换,而3x3矩阵(线性矩阵)则只能进行旋转和缩放等线性变换‌。

在Unity中,齐次坐标主要用于顶点着色器和片段着色器中,进行模型的变换、投影和视图转换等操作。通过使用齐次坐标,可以统一处理各种变换,使得着色器的实现更加统一和高效‌





一、单一设计原则(Single Responsibility Principle,SRP)

定义:
一个类应该只有一个引起变化的原因,或者说一个类应该只有一个责任。

关键思想:

  1. 一个类应该专注于一种类型的任务,只有一个责任;
  2. 一个类应该只有一个原因引起它变化。

二、里氏替换原则(Liskov Substitution Principle,LSP)

定义:
如果对于每一个类型为 S 的对象 o1,都有类型为 T 的对象 o2,使得以 T 定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 S 是类型 T 的子类型。

任何基类可以被其子类替代,而程序仍然能够保持正确性。换句话说,子类应该能够替代其基类而不引起程序错误。

关键思想:

  1. 子类型必须能够替代基类型,而程序的行为不会发生变化。
  2. 子类型应该继承基类型的行为,并且能够按照期望使用。

三、迪米特原则(Law of Demeter,LoD)

迪米特原则也被称为最少知识原则(Principle of Least Knowledge,PLK)或者直接调用原则(Least Knowledge for Law of Demeter,LKP),是面向对象设计中的一个原则,其核心思想是降低类之间的耦合度,减少对象之间的相互依赖。

定义:
一个对象应该对其他对象保持最少的了解。具体来说,一个类不应该直接调用其他类的内部方法,而是通过它自己的方法或者通过传递给它的对象来完成某项操作

关键点:

  1. 一个对象应该对其他对象有最少的了解。
  2. 类与类之间应该尽量减少耦合。
  3. 不要直接访问其他对象的内部成员,而应该通过该对象提供的公共方法来进行间接访问。

四、依赖倒置原则(Dependency Inversion Principle,DIP)

定义:
高层模块不应该依赖于低层模块,两者都应该依赖于抽象。

抽象不应该依赖于细节,细节应该依赖于抽象。

这意味着在设计系统时,应该避免高层次模块(比如模块的业务逻辑)依赖于低层次模块(比如数据库操作或具体实现类),而应该依赖于抽象,即接口或抽象类。这样可以使系统更加灵活,易于扩展和维护。

关键点:

  1. 高层次的模块(例如业务逻辑)不应该依赖于低层次的模块(例如具体实现),两者都应该依赖于抽象(接口或抽象类)。
  2. 抽象不应该依赖于具体的实现,具体的实现应该依赖于抽象。

五、接口隔离原则(Interface Segregation Principle,ISP)

定义:
接口隔离原则是面向对象设计中的一条原则,它强调一个类不应该强制依赖它不使用的接口。具体来说,一个类对其他类的依赖关系应该建立在最小的接口集上。

关键点:

  1. 一个类不应该被迫依赖它不使用的接口。
  2. 客户端不应该被迫依赖它不使用的方法。

这两点意味着接口设计应该精简,只包含客户端需要的方法,避免将不相关的方法强行放在同一个接口中。


六、开闭原则(Open/Closed Principle,OCP)

定义:
开闭原则是面向对象设计中的一个基本原则,它由勃兰特·梅耶(Bertrand Meyer)提出,并由罗伯特·C·马丁(Robert C. Martin)进一步发扬光大。该原则的定义是:

软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。

这意味着一个软件实体可以通过扩展来应对新的行为需求,而不需要修改已有的代码。这可以通过抽象和接口实现,以确保对于新增功能的引入,不需要修改现有的代码,而是通过扩展来实现。

关键点:

  1. 对扩展开放: 新的功能应该通过新增代码而不是修改已有代码的方式引入。
  2. 对修改关闭: 已有的代码在引入新的功能时不应该被修改,以确保稳定性。

Credits

六大设计原则举例说明:https://blog.csdn.net/qq_45165610/article/details/136027921