岩体、岩石、结构面、结构体之间的关系

岩体、岩石、结构面、结构体之间的关系,第1张

要确定它们之间的关系肯定要从它们的定义说起:

岩体是地质体,它经历多次反复的地质作用,经受过变形,遭受过破坏,形成一定的岩石成分和结构,赋存在一定的地质环境中。

在上诉岩体内存在各种地质界面,它包括地质分异面和不连续面,如假整合、不整合、断层、层理、节理、片理等。这些不同成因、不同特性的地质界面统称为结构面(其实就是岩体的缺陷)

再如上所述,结构面依其本身的产状,彼此组合将岩体切割成形态不一、大小不等以及成分各异的岩石块体就是结构体。

最后,岩石就是自然界中各种矿物的集合体。

好了,上面就是基本定义,最后我们用一句话来总结其关系:

岩体中的结构面(就是岩体中的断层啊等等天然缺陷)把岩体分为一块块的结构体(岩石)。(其实结构体就是岩石,只是在不同的位置叫法不同而已,岩体中就是结构体,拿出来就是岩石了。)

口头上讲就是:岩体和结构面、结构体、岩石是包含关系,结构面与结构体是并列关系,结构体与岩石是等价关系。

(全部手机打的哦,累死我了,采纳吧!)

何谓数据结构

数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。数据结构有逻辑上的数据结构和物理上的数据结构之分。逻辑上的数据结构反映成分数据之间的逻辑关系,而物理上的数据结构反映成分数据在计算机内部的存储安排。数据结构是数据存在的形式。 数据结构是信息的一种组织方式,其目的是为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。

数据结构主要研究什么?

数据结构作为一门学科主要研究数据的各种逻辑结构和存储结构,以及对数据的各种操作。因此,主要有三个方面的内容:数据的逻辑结构;数据的物理存储结构;对数据的操作(或算法)。通常,算法的

设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构。

什么是数据结构?什么是逻辑结构和物理结构?

数据是指由有限的符号(比如,"0"和"1",具有其自己的结构、操作、和相应的语义)组成的元素的集合。结构是元素之间的关系的集合。通常来说,一个数据结构DS 可以表示为一个二元组:

DS=(D,S), //ie, data-structure=(data-part,logic-structure-part) 这里D是数据元素的集合(或者是“结点”,可能还含有“数据项”或“数据域”),S是定义在D(或其他集合)上的关系的集合,S = { R | R : D×D×},称之为元素的逻辑结构。 逻辑结构有四种基本类型:集合结构、线性结构、树状结构和网络结构。表和树是最常用的两种高效数据结构,许多高效的算法可以用这两种数据结构来设计实现。表是线性结构的(全序关系),树(偏序或层次关系)和图(局部有序(weak/local orders))是非线性结构。

数据结构的物理结构是指逻辑结构的存储镜像(image)。数据结构 DS 的物理结构 P对应于从 DS 的数据元素到存储区M(维护着逻辑结构S)的一个映射:

(PD,S) -- > M 存储器模型:一个存储器 M 是一系列固定大小的存储单元,每个单元 U 有一个唯一的地址 A(U),该地址被连续地编码。每个单元 U 有一个唯一的后继单元 U'=succ(U)。 P 的四种基本映射模型:顺序(sequential)、链接(linked)、索引(indexed)和散列(hashing)映射。

因此,我们至少可以得到4×4种可能的物理数据结构:

sequential (sets)

linked lists

indexed trees

hash graphs

(并不是所有的可能组合都合理)

数据结构DS上的操作:所有的定义在DS上的操作在改变数据元素(节点)或节点的域时必须保持DS的逻辑和物理结构。

DS上的基本操作:任何其他对DS的高级操作都可以用这些基本操作来实现。最好将DS和他的所有基本操作看作一个整体——称之为模块。我们可以进一步将该模块抽象为数据类型(其中DS的存储结构被表示为私有成员,基本操作被表示为公共方法),称之为ADT。作为ADT,堆栈和队列都是一种特殊的表,他们拥有表的操作的子集。 对于DATs的高级操作可以被设计为(不封装的)算法,利用基本操作对DS进行处理。

好的和坏的DS:如果一个DS可以通过某种“线性规则”被转化为线性的DS(例如线性表),则称它为好的DS。好的DS通常对应于好的(高效的)算法。这是由计算机的计算能力决定的,因为计算机本质上只能存取逻辑连续的内存单元,因此如何没有线性化的结构逻辑上是不可计算的。比如对一个图进行操作,要访问图的所有结点,则必须按照某种顺序来依次访问所有节点(要形成一个偏序),必须通过某种方式将图固有的非线性结构转化为线性结构才能对图进行操作。

树是好的DS——它有非常简单而高效的线性化规则,因此可以利用树设计出许多非常高效的算法。树的实现和使用都很简单,但可以解决大量特殊的复杂问题,因此树是实际编程中最重要和最有用的一种数据结构。树的结构本质上有递归的性质——每一个叶节点可以被一棵子树所替代,反之亦然。实际上,每一种递归的结构都可以被转化为(或等价于)树形结构。

从机器语言到高级语言的抽象

我们知道,算法被定义为一个运算序列。这个运算序列中的所有运算定义在一类特定的数据模型上,并以解决一类特定问题为目标。这个运算序列应该具备下列四个特征。 有限性,即序列的项数有限,且每一运算项都可在有限的时间内完成;确定性,即序列的每一项运算都有明确的定义,无二义性;可以没有输入运算项,但一定要有输出运算项;可行性,即对于任意给定的合法的输入都能得到相应的正确的输出。这些特征可以用来判别一个确定的运算序列是否称得上是一个算法。 但是,我们现在的问题不是要判别一个确定的运算序列是否称得上是一个算法,而是要对一个己经称得上是算法的运算序列,回顾我们曾经如何用程序设计语言去表达它。

算法的程序表达,归根到底是算法要素的程序表达,因为一旦算法的每一项要素都用程序清楚地表达,整个算法的程序表达也就不成问题。

作为运算序列的算法,有三个要素。 作为运算序列中各种运算的运算对象和运算结果的数据;运算序列中的各种运算;运算序列中的控制转移。这三种要素依序分别简称为数据、运算和控制。 由于算法层出不穷,变化万千,其中的运算所作用的对象数据和所得到的结果数据名目繁多,不胜枚举。最简单最基本的有布尔值数据、字符数据、整数和实数数据等;稍复杂的有向量、矩阵、记录等数据;更复杂的有集合、树和图,还有声音、图形、图像等数据。 同样由于算法层出不穷,变化万千,其中运算的种类五花八门、多姿多彩。最基本最初等的有赋值运算、算术运算、逻辑运算和关系运算等;稍复杂的有算术表达式和逻辑表达式等;更复杂的有函数值计算、向量运算、矩阵运算、集合运算,以及表、栈、队列、树和图上的运算等:此外,还可能有以上列举的运算的复合和嵌套。 关于控制转移,相对单纯。在串行计算中,它只有顺序、分支、循环、递归和无条件转移等几种。

我们来回顾一下,自从计算机问世以来,算法的上述三要素的程序表达,经历过一个怎样的过程。

最早的程序设计语言是机器语言,即具体的计算机上的一个指令集。当时,要在计算机上运行的所有算法都必须直接用机器语言来表达,计算机才能接受。算法的运算序列包括运算对象和运算结果都必须转换为指令序列。其中的每一条指令都以编码(指令码和地址码)的形式出现。与算法语言表达的算法,相差十万八千里。对于没受过程序设计专门训练的人来说,一份程序恰似一份"天书",让人看了不知所云,可读性

极差。

用机器语言表达算法的运算、数据和控制十分繁杂琐碎,因为机器语言所提供的指令太初等、原始。机器语言只接受算术运算、按位逻辑运算和数的大小比较运算等。对于稍复杂的运算,都必须一一分解,直到到达最初等的运算才能用相应的指令替代之。机器语言能直接表达的数据只有最原始的位、字节、和字三种。算法中即使是最简单的数据如布尔值、字符、整数、和实数,也必须一一地映射到位、字节和字

中,还得一一分配它们的存储单元。对于算法中有结构的数据的表达则要麻烦得多。机器语言所提供的控制转移指令也只有无条件转移、条件转移、进入子程序和从子程序返回等最基本的几种。用它们来构造循环、形成分支、调用函数和过程得事先做许多的准备,还得靠许多的技巧。 直接用机器语言表达算法有许多缺点。

大量繁杂琐碎的细节牵制着程序员,使他们不可能有更多的时间和精力去从事创造性的劳动,执行对他们来说更为重要的任务。如确保程序的正确性、高效性。程序员既要驾驭程序设计的全局又要深入每一个局部直到实现的细节,即使智力超群的程序员也常常会顾此失彼,屡出差错,因而所编出的程序可靠性差,且开发周期长。 由于用机器语言进行程序设计的思维和表达方式与人们的习惯大相径庭,只有经过

较长时间职业训练的程序员才能胜任,使得程序设计曲高和寡。因为它的书面形式全是"密"码,所以可读性差,不便于交流与合作。因为它严重地依赖于具体的计算机,所以可移植性差,重用性差。这些弊端造成当时的计算机应用未能迅速得到推广。

克服上述缺点的出路在于程序设计语言的抽象,让它尽可能地接近于算法语言。 为此,人们首先注意到的是可读性和可移植性,因为它们相对地容易通过抽象而得到改善。于是,很快就出现汇编语言。这种语言对机器语言的抽象,首先表现在将机器语言的每一条指令符号化:指令码代之以记忆符号,地址码代之以符号地址,使得其含义显现在符号上而不再隐藏在编码中,可让人望"文"生义。其次表现在这种语言摆脱了具体计算机的限制,可在不同指令集的计算机上运行,只要该计算机配上汇编语言的一个汇编程序。这无疑是机器语言朝算法语言靠拢迈出的一步。但是,它离算法语言还太远,以致程序员还不能从分解算法的数据、运算和控制到汇编才能直接表达的指令等繁杂琐碎的事务中解脱出来。 到了50年代中期,出现程序设计的高级语言如Fortran,Algol60,以及后来的PL/l, Pascal等,算法的程序表达才产生一次大的飞跃。

诚然,算法最终要表达为具体计算机上的机器语言才能在该计算机上运行,得到所需要的结果。但汇编语言的实践启发人们,表达成机器语言不必一步到位,可以分两步走或者可以筑桥过河。即先表达成一种中介语言,然后转成机器语言。汇编语言作为一种中介语言,并没有获得很大成功,原因是它离算法语

言还太远。这便指引人们去设计一种尽量接近算法语言的规范语言,即所谓的高级语言,让程序员可以用它方便地表达算法,然后借助于规范的高级语言到规范的机器语言的"翻译",最终将算法表达为机器语言。而且,由于高级语言和机器语言都具有规范性,这里的"翻译"完全可以机械化地由计算机来完成,就像汇编语言被翻译成机器语言一样,只要计算机配上一个编译程序。 上述两步,前一步由程序员去完成,后一步可以由编译程序去完成。在规定清楚它们各自该做什么之后,这两步是完全独立的。它们各自该如何做互不相干。前一步要做的只是用高级语言正确地表达给定的算法,产生一个高级语言程序;后一步要做的只是将第一步得到的高级语言程序翻译成机器语言程序。至于程序员如何用高级语言表达算法和编译程序如何将高级语言表达的算法翻译成机器语言表达的算法,显然毫不相干。

处理从算法语言最终表达成机器语言这一复杂过程的上述思想方法就是一种抽象。汇编语言和高级语言的出现都是这种抽象的范例。 与汇编语言相比,高级语言的巨大成功在于它在数据、运算和控制三方

面的表达中引入许多接近算法语言的概念和工具,大大地提高抽象地表达算法的能力。 在运算方面,高级语言如Pascal,除允许原封不动地运用算法语言的四则运算、逻辑运算、关系运算、算术表达式、逻辑表达式外,还引入强有力的函数与过程的工具,并让用户自定义。这一工具的重要性不仅在于它精简了重复的程序文本段,而且在于它反映出程序的两级抽象。

在函数与过程调用级,人们只关心它能做什么,不必关心它如何做。只是到函数与过程的定义时,人们才给出如何做的细节。用过高级语言的读者都知道,一旦函数与过程的名称、参数和功能被规定清楚,那么,在程序中调用它们便与在程序的头部说明它们完全分开。你可以修改甚至更换函数体与过程体,而不影响它们的被调用。如果把函数与过程名看成是运算名,把参数看成是运算的对象或运算的结果,那么

,函数与过程的调用和初等运算的引用没有两样。利用函数和过程以及它们的复合或嵌套可以很自然地表达算法语言中任何复杂的运算。

在数据方面,高级语言如Pascal引人了数据类型的概念,即把所有的数据加以分类。每一个数据(包括表达式)或每一个数据变量都属于其中确定的一类。称这一类数据为一个数据类型。 因此,数据类型是数据或数据变量类属的说明,它指示该数据或数据变量可能取的值的全体。对于无结构的数据,高级语言如Pascal,除提供标准的基本数据类型--布尔型、字符型、整型和实型外,还提供用户可自定义的枚举类、子界类型和指针类型。这些类型(除指针外),其使用方式都顺应人们在算法语言中使用的习惯。对于有结构的数据,高级语言如Pascal,提供了数组、记录、有限制的集合和文件等四种标准的结构数据类型。其中,数组是科学计算中的向量、矩阵的抽象;记录是商业和管理中的记录的抽象;有限制的集合是数学中足够小的集合的势集的抽象;文件是诸如磁盘等外存储数据的抽象。

人们可以利用所提供的基本数据类型(包括标准的和自定义的),按数组、记录、有限制的集合和文件的构造规则构造有结构的数据。 此外,还允许用户利用标准的结构数据类型,通过复合或嵌套构造更复杂更高层的结构数据。这使得高级语言中的数据类型呈明显的分层。 高级语言中数据类型的分层是没有穷尽的,因而用它们可以表达算法语言中任何复杂层次的数据。 在控制方面,高级语言如Pascal,提供了表达算法控制转移的六种方式。

(1)缺省的顺序控制";"。

(2)条件(分支)控制:"if表达式(为真)then S1 else S2;" 。

(3)选择(情况)控制:

"Case 表达式 of

值1: S1

值2: S2

值n: Sn

end"

(4)循环控制:

"while 表达式(为真) do S;" 或

"repeat S until 表达式(为真);" 或

"for变量名:=初值 to/downto 终值do S;"

(5)函数和过程的调用,包括递归函数和递归过程的调用。

(6)无条件转移goto。

这六种表达方式不仅覆盖了算法语言中所有控制表达的要求,而且不再像机器语言或汇编语言那样原始、那样繁琐、那样隐晦,而是如上面所看到的,与自然语言的表达相差无几。 程序设计语言从机器语言到高级语言的抽象,带来的主要好处是: 高级语言接近算法语言,易学、易掌握,一般工程技术人员只要几周时间的培训就可以胜任程序员的工作;高级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可靠性高;高级语言远离机器语言,与具体的计算机硬件关系不大,因而所写出来的程序可移植性好,重用率高; 由于把繁杂琐碎的事务交给了编译程序去做,所以自动化程度高,开发周期短,且程、序员得到解脱,可以集中时间和精力去从事对于他们来说更为重要的创造性劳动,以提高、程序的质量。

数据结构、数据类型和抽象数据类型

数据结构、数据类型和抽象数据类型,这三个术语在字面上既不同又相近,反映出它们在含义上既有区别又有联系。

数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由哪些成分数据构成,以什么方式构成,呈什么结构。数据结构有逻辑上的数据结构和物理上的数据结构之分。逻辑上的数据结构反映成分数据之间的逻辑关系,物理上的数据结构反映成分数据在计算机内的存储安排。数据结构是数据存在的形式。

数据是按照数据结构分类的,具有相同数据结构的数据属同一类。同一类数据的全体称为一个数据类型。在程序设计高级语言中,数据类型用来说明一个数据在数据分类中的归属。它是数据的一种属性。这个属性限定了该数据的变化范围。为了解题的需要,根据数据结构的种类,高级语言定义了一系列的数据类型。不同的高级语言所定义的数据类型不尽相同。Pascal语言所定义的数据类型的种类。

其中,简单数据类型对应于简单的数据结构;构造数据类型对应于复杂的数据结构;在复杂的数据结构里,允许成分数据本身具有复杂的数据结构,因而,构造数据类型允许复合嵌套;指针类型对应于数据结构中成分数据之间的关系,表面上属简单数据类型,实际上都指向复杂的成分数据即构造数据类型中的数据,因此这里没有把它划入简单数据类型,也没有划入构造数据类型,而单独划出一类。

数据结构反映数据内部的构成方式,它常常用一个结构图来描述:数据中的每一项成分数据被看作一个结点,并用方框或圆圈表示,成分数据之间的关系用相应的结点之间带箭号的连线表示。如果成分数据本身又有它自身的结构,则结构出现嵌套。这里嵌套还允许是递归的嵌套。

由于指针数据的引入,使构造各种复杂的数据结构成为可能。按数据结构中的成分数据之间的关系,数据结构有线性与非线性之分。在非线性数据结构中又有层次与网状之分。 由于数据类型是按照数据结构划分的,因此,一类数据结构对应着一种数据类型。数据类型按照该类型中的数据所呈现的结构也有线性与非线性之分,层次与网状之分。一个数据变量,在高级语言中的类型说明必须是读变量所具有的数据结构所对应的数据类型。最常用的数据结构是数组结构和记录结构。数组结构的特点是:

成分数据的个数固定,它们之间的逻辑关系由成分数据的序号(或叫数组的下标)来体现。这些成分数据按照序号的先后顺序一个挨一个地排列起来。每一个成分数据具有相同的结构(可以是简单结构,也可以是复杂结构),因而属于同一个数据类型(相应地是简单数据类型或构造数据类型)。这种同一的数据类型称为基类型。所有的成分数据被依序安排在一片连续的存储单元中。 概括起来,数组结构是一个线性的、均匀的、其成分数据可随机访问的结构。

由于这、种结构有这些良好的特性,所以最常被人们所采用。在高级语言中,与数组结构相对应的、数据类型是数组类型,即数组结构的数据变量必须说明为array [i] of T0 ,其中i是数组、结构的下标类型,而T0是数组结构的基类型。 记录结构是另一种常用的数据结构。它的特点是:与数组结构一样,成分数据的个数固定。但成分数据之间没有自然序,它们处于平等地位。每一个成分数据被称为一个域并赋予域名。不同的域有不同的域名。不同的域允许有不同的结构,因而允许属于不同的数据类型。与数组结构一样,它们可以随机访问,但访问的途径靠的是域名。在高级语言中记录结构对应的数据类型是记录类型。记录结构的数据的变量必须说明为记录类型。

抽象数据类型的含义在上一段已作了专门叙述。它可理解为数据类型的进一步抽象。即把数据类型和数据类型上的运算捆在一起,进行封装。引入抽象数据类型的目的是把数据类型的表示和数据类型上运算的实现与这些数据类型和运算在程序中的引用隔开,使它们相互独立。对于抽象数据类型的描述,除了必须描述它的数据结构外,还必须描述定义在它上面的运算(过程或函数)。抽象数据类型上定义的过程和函

数以该抽象数据类型的数据所应具有的数据结构为基础。

泛型设计和数据结构与算法

下面我想再说说关于泛型程序设计模型对于数据结构和算法方面的最新推动,泛型思想已经把数据结

构和算法方面的基本思想抽象到了一个前所未有的高度,现在有多种程序设计语言支持泛型设计,比如

ADA,C++,而且据说在JAVA的下一版本和C#中也将对泛型设计进行全面的支持。

先说说泛型设计的基本思想:泛型编程(generic programming,以下直接以GP称呼)是一种全新的程序设计思想,和OO,OB,PO这些为人所熟知的程序设计想法不同的是GP抽象度更高,基于GP设计的组件之间偶合度底,没有继承关系,所以其组件间的互交性和扩展性都非常高。我们都知道,任何算法都是作用在一种特定的数据结构上的,最简单的例子就是快速排序算法最根本的实现条件就是所排序的对象是存

贮在数组里面,因为快速排序就是因为要用到数组的随机存储特性,即可以在单位时间内交换远距离的对象,而不只是相临的两个对象,而如果用联表去存储对象,由于在联表中取得对象的时间是线性的既O[n],这样将使快速排序失去其快速的特点。也就是说,我们在设计一种算法的时候,我们总是先要考虑其应用的数据结构,比如数组查找,联表查找,树查找,图查找其核心都是查找,但因为作用的数据结构不同

将有多种不同的表现形式。数据结构和算法之间这样密切的关系一直是我们以前的认识。泛型设计的根本思想就是想把算法和其作用的数据结构分离,也就是说,我们设计算法的时候并不去考虑我们设计的算法将作用于何种数据结构之上。泛型设计的理想状态是一个查找算法将可以作用于数组,联表,树,图等各种数据结构之上,变成一个通用的,泛型的算法。这样的理想是不是很诱惑人?

泛型编程带来的是前所未有的弹性以及不会损失效率的抽象性,GP和OO不同,它不要求你通过额外的间接层来调用函数:它让你撰写完全一般化并可重复使用的算法,其效率与针对特定数据结构而设计的算法旗鼓相当。我们大家都知道数据结构在C++中可以用用户定义类型来表示,而C++中的模板技术就是以类型作为参数,那么我可以想象利用模板技术可以实现我们开始的GP思想,即一个模板函数可以对于各种传递进来的类型起作用,而这些类型就可以是我们定义的各种数据结构。

泛型算法抽离于特定类型和特定数据结构之外,使得其适应与尽可能的一般化类型,算法本身只是为了实现算法其需要表达的逻辑本质而不去被为各种数据结构的实现细节所干扰。这意味着一个泛型算法实际具有两部分。1,用来描叙算法本质逻辑的实际指令;2,正确指定其参数类型必须满足的性质的一组需求条件。到此,相信有不少人已经开始糊涂了,呵呵,不要紧。毕竟GP是一种抽象度非常高的程序设计思想,里面的核心就是抽象条件成为成为程序设计过程中的核心,从而取代了类型这在OO里面的核心地位,正是因为类型不在是我们考虑的重点,类型成为了抽象条件的外衣,所以我们称这样的程序思想为泛型思想------把类型泛化。

土壤结构是土粒在胶结物的作用下形成结构体的不同排列组合方式。

块状结构:结构体在三轴上发育均衡,呈棱角状。多出现在中细质土的中下层。与土层的排水,植物根系的作用有关。

粒状结构:结构体呈近球形。多出现在土壤表层,是土壤富含有机质的特征。

片状结构:结构体横轴发育远大于纵轴,呈扁平状。多出现在冲击性母质层的底层或耕作土壤的犁底层,土粒排列密实,影响土壤排水和根系发育。

棱柱状结构:结构体垂向发育,棱角明显。出现在粘质土壤中层底层,为土壤干湿交替作用的产物,反映了土壤水分状况的变化。

柱状结构:碱性土壤和富含膨胀性粘土矿物的特征标志,干旱半干旱地带粉砂较多的底土出现。土壤质地:土壤质地是土壤物理性质之一。指土壤中不同大小直径的矿物颗粒的组合状况。土壤质地与土壤通气、保肥、保水状况及耕作的难易有密切关系;土壤质地状况是拟定土壤利用、管理和改良措施的重要依据。肥沃的土壤不仅要求耕层的质地良好,还要求有良好的质地剖面。虽然土壤质地主要决定于成土母质类型,有相对的稳定性,但耕作层的质地仍可通过耕作、施肥等活动进行调节。青藏高原的典型土壤是草甸土。

青藏高原土壤类型有:高山草甸土、亚高山草甸土、高山草原土、山地草甸土、亚高山草原土、草甸土。 草甸土主要分布在青藏高原东部和东南部,在阿尔泰山、准噶尔盆地以西山地和天山山脉。 气候温凉而较湿润,年平均气温在-2~1℃左右,年降水量400毫米左右。高山草甸植被。 剖面由草皮层、腐殖质层、过渡层和母质层组成。土层薄,土壤冻结期长,通气不良,土壤呈中性反应。

constructed

vt 构造,建造;创立,构筑;搭建(construct的过去分词)

短语:

constructed language 人工语言 ; 人造语言

constructed drawing 竣工图则 ; 竣工图 ; 完工图

socially constructed 社会建构 ; 社会上建构

Setting constructed 布景搭建

constructed width 构造的宽度 ; 修建宽 ; 建造宽度

Constructed Structure 建造完成的建筑

例句:

He eventually constructed a huge business empire

他最终构建了一个庞大的商业王国。

扩展资料:

construct

英 [kənˈstrʌkt]  美 [kənˈstrʌkt] 

v 建造,修建(某物,尤指建筑物,公路,机器);组成,创建;(按照数学规则)编制,绘制;形成(观念,理论)

n 构想,概念;编造,杜撰;(短语的)结构成分,结构体;建造物,构筑物

短语:

language construct 一种语言结构 ; 语言建构子

taring construct 去皿装置

loose construct 松散性结构

Construct Point 构造点

molar construct 整体构想

Risen Construct 复活的构造体

Construct Variables 结构变量

例句:

His company recently constructed an office building in downtown Denver

他的公司最近在丹佛市中心建造了一座办公楼。

变量

GLSL的变量命名方式与C语言类似。变量的名称可以使用字母,数字以及下划线,但变量名不能以数字开头,还有变量名不能以gl_作为前缀,这个是GLSL保留的前缀,用于GLSL的内部变量。当然还有一些GLSL保留的名称是不能够作为变量的名称的。

基本类型

除了布尔型,整型,浮点型基本类型外,GLSL还引入了一些在着色器中经常用到的类型作为基本类型。这些基本类型都可以作为结构体内部的类型。如下表:

类型 描述

void 跟C语言的void类似,表示空类型。作为函数的返回类型,表示这个函数不返回值。

bool 布尔类型,可以是true 和false,以及可以产生布尔型的表达式。

int 整型 代表至少包含16位的有符号的整数。可以是十进制的,十六进制的,八进制的。

float 浮点型

bvec2 包含2个布尔成分的向量

bvec3 包含3个布尔成分的向量

bvec4 包含4个布尔成分的向量

ivec2 包含2个整型成分的向量

ivec3 包含3个整型成分的向量

ivec4 包含4个整型成分的向量

mat2 或者 mat2x2 2×2的浮点数矩阵类型

mat3或者mat3x3 3×3的浮点数矩阵类型

mat4x4 4×4的浮点矩阵

mat2x3 2列3行的浮点矩阵(OpenGL的矩阵是列主顺序的)

mat2x4 2列4行的浮点矩阵

mat3x2 3列2行的浮点矩阵

mat3x4 3列4行的浮点矩阵

mat4x2 4列2行的浮点矩阵

mat4x3 4列3行的浮点矩阵

sampler1D 用于内建的纹理函数中引用指定的1D纹理的句柄。只可以作为一致变量或者函数参数使用

sampler2D 二维纹理句柄

sampler3D 三维纹理句柄

samplerCube cube map纹理句柄

sampler1DShadow 一维深度纹理句柄

sampler2DShadow 二维深度纹理句柄

结构体

结构体

结构体可以组合基本类型和数组来形成用户自定义的类型。在定义一个结构体的同时,你可以定义一个结构体实例。或者后面再定义。

struct surface {float indexOfRefraction;

vec3 color;float turbulence;

} mySurface;

surface secondeSurface;

你可以通过=为结构体赋值,或者使用 ==,!=来判断两个结构体是否相等。

mySurface = secondSurface;

mySurface == secondSurface;

只有结构体中的每个成分都相等,那么这两个结构体才是相等的。访问结构体的内部成员使用 来访问。

vec3 color = mySurfacecolor + secondSurfacecolor;

结构体至少包含一个成员。固定大小的数组也可以被包含在结构体中。GLSL的结构体不支持嵌套定义。只有预先声明的结构体可以嵌套其中。

struct myStruct {

vec3 points[3]; //固定大小的数组是合法的

surface surf; //可以,之前已经定义了

struct velocity { //不合法float speed;

vec3 direction;

} velo;

subSurface sub; //不合法,没有预先声明;};struct subSurface { int id;

};

数组

GLSL中只可以使用一维的数组。数组的类型可以是一切基本类型或者结构体。下面的几种数组声明是合法的:

surface mySurfaces[];

vec4 lightPositions[8];

vec4 lightPos[] = light wwwhnneducom Positions;const int numSurfaces = 5;

surface myFiveSurfaces[numSurfaces];float[5] values;

指定显示大小的数组可以作为函数的参数或者使返回值,也可以作为结构体的成员数组类型内建了一个length()函数,可以返回数组的长度。

lightPositionslength() //返回数组的大小 8

最后,你不能定义数组的数组。

修饰符

变量的声明可以使用如下的修饰符。

修饰符 描述

const 常量值必须在声明是初始化。它是只读的不可修改的。

attribute 表示只读的顶点数据,只用在顶点着色器中。数据来自当前的顶点状态或者顶点数组。它必须是全局范围声明的,不能再函数内部。一个attribute可以是浮点数类型的标量,向量,或者矩阵。不可以是数组或则结构体

uniform 一致变量。在着色器执行期间一致变量的值是不变的。与const常量不同的是,这个值在编译时期是未知的是由着色器外部初始化的。一致变量在顶点着色器和片段着色器之间是共享的。它也只能在全局范围进行声明。

varying 顶点着色器的输出。例如颜色或者纹理坐标,(插值后的数据)作为片段着色器的只读输入数据。必须是全局范围声明的全局变量。可以是浮点数类型的标量,向量,矩阵。不能是数组或者结构体。

centorid varying 在没有多重采样的情况下,与varying是一样的意思。在多重采样时,centorid varying在光栅化的图形内部进行求值而不是在片段中心的固定位置求值。

invariant (不变量)用于表示顶点着色器的输出和任何匹配片段着色器的输入,在不同的着色器中计算产生的值必须是一致的。所有的数据流和控制流,写入一个invariant变量的是一致的。编译器为了保证结果是完全一致的,需要放弃那些可能会导致不一致值的潜在的优化。除非必要,不要使用这个修饰符。在多通道渲染中避免z-fighting可能会使用到。

in 用在函数的参数中,表示这个参数是输入的,在函数中改变这个值,并不会影响对调用的函数产生副作用。(相当于C语言的传值),这个是函数参数默认的修饰符

out 用在函数的参数中,表示该参数是输出参数,值是会改变的。

inout 用在函数的参数,表示这个参数即是输入参数也是输出参数。

内置变量

内置变量可以与固定函数功能进行交互。在使用前不需要声明。顶点着色器可用的内置变量如下表:

名称 类型 描述

gl_Color vec4 输入属性-表示顶点的主颜色

gl_SecondaryColor vec4 输入属性-表示顶点的辅助颜色

gl_Normal vec3 输入属性-表示顶点的法线值

gl_Vertex vec4 输入属性-表示物体空间的顶点位置

gl_MultiTexCoordn vec4 输入属性-表示顶点的第n个纹理的坐标

gl_FogCoord float 输入属性-表示顶点的雾坐标

gl_Position vec4 输出属性-变换后的顶点的位置,用于后面的固定的裁剪等操作。所有的顶点着色器都必须写这个值。

gl_ClipVertex vec4 输出坐标,用于用户裁剪平面的裁剪

gl_PointSize float 点的大小

gl_FrontColor vec4 正面的主颜色的varying输出

gl_BackColor vec4 背面主颜色的varying输出

gl_FrontSecondaryColor vec4 正面的辅助颜色的varying输出

gl_BackSecondaryColor vec4 背面的辅助颜色的varying输出

gl_TexCoord[] vec4 纹理坐标的数组varying输出

gl_FogFragCoord float 雾坐标的varying输出

片段着色器的内置变量如下表:

名称 类型 描述

gl_Color vec4 包含主颜色的插值只读输入

gl_SecondaryColor vec4 包含辅助颜色的插值只读输入

gl_TexCoord[] vec4 包含纹理坐标数组的插值只读输入

gl_FogFragCoord float 包含雾坐标的插值只读输入

gl_FragCoord vec4 只读输入,窗口的x,y,z和1/w

gl_FrontFacing bool 只读输入,如果是窗口正面图元的一部分,则这个值为true

gl_PointCoord vec2 点精灵的二维空间坐标范围在(00, 00)到(10, 10)之间,仅用于点图元和点精灵开启的情况下。

gl_FragData[] vec4 使用glDrawBuffers输出的数据数组。不能与gl_FragColor结合使用。

gl_FragColor vec4 输出的颜色用于随后的像素操作

gl_FragDepth float 输出的深度用于随后的像素操作,如果这个值没有被写,则使用固定功能管线的深度值代替

表达式

操作符

GLSL语言的操作符与C语言相似。如下表(操作符的优先级从高到低排列)

操作符 描述

() 用于表达式组合,函数调用,构造

[] 数组下标,向量或矩阵的选择器

结构体和向量的成员选择

++ – 前缀或后缀的自增自减操作符

+ – ! 一元操作符,表示正 负 逻辑非

/ 乘 除操作符

+ - 二元操作符 表示加 减操作

<> <= >= == != 小于,大于,小于等于, 大于等于,等于,不等于 判断符

&& || ^^ 逻辑与 ,或, 异或

: 条件判断符

= += –= = /= 赋值操作符

, 表示序列

像 求地址的& 和 解引用的 操作符不再GLSL中出现,因为GLSL不能直接操作地址。类型转换操作也是不允许的。 位操作符(&,|,^,~, <<, >> ,&=, |=, ^=, <<=, >>=)是GLSL保留的操作符,将来可能会被使用。还有求模操作(%,%=)也是保留的。

数组访问

数组的下标从0开始。合理的范围是[0, size - 1]。跟C语言一样。如果数组访问越界了,那行为是未定义的。如果着色器的编译器在编译时知道数组访问越界了,就会提示编译失败。

vec4 myColor, ambient, diffuse[6], specular[6];

myColor = ambient + diffuse[4] + specular[4];

构造函数

构造函数可以用于初始化包含多个成员的变量,包括数组和结构体。构造函数也可以用在表达式中。调用方式如下:

vec3 myNormal = vec3(10, 10, 10);

greenTint = myColor + vec3(00, 10, 00);

ivec4 myColor = ivec4(255);

还可以使用混合标量和向量的方式来构造,只要你的元素足以填满该向量。

vec4 color = vec4(10, vec2(00, 10), 10);

vec3 v = vec3(10, 100, 10);

vec3 v1 = vec3(v);

1。错了,传统的主成分分析法是最缺乏层次。

2。右。叹词可以表示惊讶,赞美,抱怨,叹息,如感情,从呼叫的响应。这是非常独立的,不与其他词的组合,不要充当一个句子成分,单独的句子。

如前所述,岩体变形,受三个基本因素控制,即岩性、岩体结构和地应力状况。

目前,对岩体变形研究还是停留在岩石材料变形的特点上,只考虑材料变形的弹性变形和流动变形两种表现形式。实际上,岩体变形受岩体结构影响很大,岩体结构对岩体变形的影响表现在两个主要方面:①岩体结构基本单元对岩体变形的影响;②岩体结构特征对岩体变形的影响。前者属于材料变形范畴,后者属于结构变形范畴。目前,对前者做了一些研究,对后者研究得很不够。岩体结构基本单元对岩体变形贡献的基本规律如下。

(一)岩体结构单元材料变形

1结构体变形

弹性变形:其变形基本规律试验结果及作为一种结构力学元件的代表符号示于图3-4。虎克方程是它最合适的本构规律表征方程,即:

地质工程学原理

式中:ε为应变;σ为应力;Eb为结构体弹性模量。

黏性变形:其变形基本规律试验结果及作为一种结构力学元件的代表符号示于图3-4。修正的牛顿方程是这一规律的合适表征方程,即:

图3-4 结构体变形规律示意图

地质工程学原理

式中:为应变速率;σ为应力;σ0 为初始应力;η为黏滞系数;为角应变速率;为剪应力;为初始剪应力;η为黏滞系数;γ为角应变。

2结构面变形

闭合变形:其变形基本规律试验结果及作为一种结构力学元件的代表符号示于图3-5。其基本规律遵循衰减法则,即:

地质工程学原理

式中:dεj为偏剪应变;dσ为偏应力;E为弹性模量;εj0为初始结构面应变;εj为结构面应变。

错动变形:其变形基本规律试验结果如图3-5所示。

这一基本规律可简化用两段直线表征,即:

当σ≤σs0时;

地质工程学原理

图3-5 结构面变形规律示意图

式中:γj为结构面剪应变;σs为剪应力;Gsj为结构面剪切刚度;为结构面剪应变速率;σs为剪应力;σs0为初始剪应力;ηj为结构面黏滞系数。

根据上列基本规律,可以从理论上得到典型岩体材料变形本构规律,下面是几种典型岩体在单轴压力作用下,变形本构方程及其变形曲线特征。

(二)岩体材料变形规律

1完整结构岩体变形本构规律

均匀弹性介质岩体:图3-6a为其地质模型;图3-6b为其物理模型;图3-6c为其力学模型;图3-6d为其应力应变曲线结构。根据力学模型可以求得其一维变形本构方程为:

地质工程学原理

式中:ε为应变;σ为应力;E为弹性模量。

图3-6 均匀弹性完整结构岩体变形机制及变形特征

图3-7 水平层状黏弹性岩体变形机制及变形特征

水平层状黏弹性岩体:图3-7a为其地质模型;图3-7b为其物理模型;图3-7c为其力学模型;图中d为变形曲线示意图。据此,可求得其一维本构方程为:

地质工程学原理

这一本构方程表明,其应变结果与加载控制方式和速度密切有关。如:应力速率控制加载,取,求得:

地质工程学原理

应变速率控制加载,取,求得:

地质工程学原理

上列式中:为应变速率;为应力速率;Eb为结构体弹性模量;为应力速控制加载的应力速率;η为黏滞系数。

直立层状黏弹性岩体:图3 8a为其地质模型。视其岩性及其力学性质不同,可抽象为4种物理及力学模型,分别可得到4种变形本构方程,即:

地质工程学原理

实际上M1、M2、M3 只是M4 的特例。M4 在不同加载条件下的应力应变方程为:

应力速率控制下的本构方程:

地质工程学原理

应变速率控制下的本构方程:

图3 8 直立层状黏弹性岩体变形机制及变形特征

地质工程学原理

上列式中:ε为应变;为应变速率;为加载控制应变速率;σ为应力;为应力速率;为控制加载的应力速率;E1、E2 为黏性结构体、砂性结构体弹性模量;η1、η2 为黏性结构体、砂性结构体黏滞系数。

碎裂结构岩体分为均质弹性碎裂岩体、水平层状黏弹性碎裂岩体、直立层状黏弹性碎裂岩体。

(1)均质弹性碎裂岩体:图3-9a为其地质模型;图3-9b为其物理模型;图3-9c为其力学模型;图3-9d为其应力应变曲线特征,它是在岩体力学试验中极常见的一种变形曲线结构形式。

其变形本构方程为:

地质工程学原理

式中:ε为岩体应变;σ为岩体应力;Eb为材料弹性模量;Ej为结构体弹性模量。

(2)水平层状黏弹性碎裂岩体:图3-10a为其地质模型;图3-10b为其物理模型;图3-10c为其力学模型;图3-10d为其变形曲线特征。

图3-9 均质弹性碎裂岩体变形机制及变形曲线特征

图3-10 水平层状黏弹性碎裂岩体变形机制及其变形曲线特征

根据力学模型,求得其本构方程为:

地质工程学原理

在常应力速率控制下的变形本构方程为:

地质工程学原理

在常应变速率控制下的变形本构方程为:

地质工程学原理

上列式中:·ε为应变速率;ε为应变;为应力速率;σ为应力;εj为结构面应变;εj0为结构面初始应变;Eb为结构体弹性模量;εj为结构面应变模量;η为黏滞系数;dσ为偏应力。

(3)直立层状黏弹性碎裂岩体:这种岩体的力学模型比较复杂,它与粘土岩内裂隙对变形的贡献密切有关。主要有4种情况:①粘土质岩石内裂隙对变形的贡献与砂质岩石内的裂隙一样;②粘土质岩石内无裂隙影响;③粘土质岩石内裂隙的影响小于砂质岩石内裂隙的影响;④粘土质岩石内裂隙影响大于砂质岩石内裂隙的影响。如此,根据图3-11,可组合成16种力学模型。作为代表性的只有4种(图3-11)。实际工作中究竟取哪种力学模型,应视地质模型中岩石的力学特性而定。

图3-11 直立黏弹性碎裂岩体的力学模型

上面讨论的几种典型岩体材料变形本构规律,只是岩体结构基本单元对岩体材料变形控制作用的几个例示,是岩体结构对岩体变形贡献的一个方面。

(三)岩体结构变形

岩体结构变形对岩体变形的作用往往比岩体材料变形的贡献大得多,这是不可忽视的岩体变形成分。岩体结构变形主要有4种成分:①沿软弱结构面滑移变形;②软弱夹层挤出变形;③块状结构体转动变形;④板状结构体弯曲变形。

现将结构变形本构规律简述如下。

(1)沿软弱结构面滑移变形本构方程:常速流动变形阶段变形本构方程为

地质工程学原理

式中:us为剪位移;为位移速率;σs为剪应力;σsi为初始剪应力;t为剪动时间;ηk为黏滞刚度系数。

(2)软弱夹层压缩挤出变形本构方程:其力学模型如图3-12所示。其本构方程为

地质工程学原理

式中:∂σx/∂x为水平应力梯度;f为摩擦系数;σx为水平应力;C为内聚力;h为夹层厚度。

(3)块状结构体滚动变形方程:其力学模型如图3-12所示。其变形方程为

地质工程学原理

式中:εy为垂直应变;εx为水平应变;v为垂直变形;ut为水平变形;a为结构体宽度;b为结构体高度,其他符号见图。

(4)板状结构体弯曲变形:这是一种比较重要的变形,即由组合板状结构体及软弱结构面形成的板裂结构岩体,在与组合板柱平行的垂直的力作用下,可以产生弯曲变形。这种结构变形常表现为大变形,甚至使岩体内出现开裂(图3-12),致使岩体变形观测结果与按材料变形理论分析结果相差很远。这种结构变形,可用结构力学理论近似地进行估算。图3-12是这种变形的变形机制。这一力学模型表征了板裂结构岸体中地下洞室边墙、岩质边坡及地基变形及破坏机制。

图3-12 岩体结构变形示意图

根据图3-12模型,可以得到板裂结构岩体板柱弯曲变形基本方程为

地质工程学原理

作为一种比较常见的条件,即固定端条件,设:

地质工程学原理

则得到其弯曲变形y:

地质工程学原理

其最大或极限变形为:

地质工程学原理

上列公式中:y为弯曲变形;l为板裂体长度;g为单宽板裂体重度;E为弹性模量;I为单宽板裂体惯性矩;EI为单宽板柱体刚度;P为轴向载荷,α为板裂体倾角。

欢迎分享,转载请注明来源:品搜搜测评网

原文地址:https://pinsoso.cn/meirong/2056703.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-11-06
下一篇2023-11-06

随机推荐

  • 从香港买回来的妮维雅怎么看生产日期呢?

    妮维雅是国外的产品,要是你朋友是在香港SASA、卓悦、龙城一些上市商场买的绝大多数是正品水货。因为香港是免税的,有很多产品是没有经过海关出售的,所以没有中文说明,不过有很多商品是快过期甚至是已经过期的。最好找一个懂得看批号的人看清了再使用。

    2024-04-15
    13000
  • 深圳著名服装品牌有哪些?

    深圳巴洛克服饰设计有限公司(深圳市新兴南方皮革制品有限公司)http:wwwszbrccom英特爱尔服饰(深圳)有限公司http:wwwszentairecom深圳市汇天服饰有限公司http:wwwukoohkcom深圳市康贝尔

    2024-04-15
    13700
  • 宫梵希身体套盒正规吗

    正规。纪梵希是一家法国的时装品牌。该公司成立于1952年,是一家受官网认证法律保护的正规品牌,是经过国家工信部备案许可、认证合法的,持有正规合法经营文件,属于合法企业,其经营范围也在法律许可范围之内,非常正规,该品牌最初以香水为其主要产品,

    2024-04-15
    14700
  • 去黑头哪个牌子好

    去黑头品牌消费指南黑头通常出现在颜面的额头、鼻子等部位,鼻头又是鼻子的重中之重,是人目光的落脚点之一,所以去黑头成为了很多美女们的烦恼,但是市面上这么多产品,那么,去黑头哪个牌子好?去黑头产品什么牌子好?去黑头品牌哪些地区分布的最多?哪里产

    2024-04-15
    9600
  • 妮维雅男士润肤霜过期了能用吗

    妮维雅男士润肤霜过期了不能用过期的东西就最好不要用了,而且这种润肤霜虽然说你用的话一次两次没有什么问题,但是如果你这样,而且也不能保证它过期了会产生什么过期的物质,可能会影响你的皮肤,所以脸部最好是不要涂的身体的其他部位虽然说影响不大,但是

    2024-04-15
    18100
  • TOM FORD汤姆福特眼镜盒的真假对比辨别方法是什么?

    之前以为只有TOM FORD眼镜有假货,后来才知道人家连镜盒都伪造出来了!下面专门整理一篇针对汤姆福特眼镜盒的真假对比辨别方法,即可以用于单独买眼镜盒的时候来参考,也可以用来连同萌猪之前整理分享过的眼镜的对比来一起综合判断TOM FORD眼

    2024-04-15
    9500
  • 白松露多少钱一斤 白松露的功效和做法

    一、白松露不论是价格还是地位都是松露界的一哥,凌驾于所有的松露之上,根据2019年年初价格汇总,价格是每千克2000美元,不过白松露的价格反差大的让人惊奇,它的价格和体积重量成正比,比如鸽子蛋一样大小的白松露在意大利的价格大概是35欧克,

    2024-04-15
    19800

发表评论

登录后才能评论
保存