版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、TrackBall模式Trackball模式是跟蹤球模式,具體來說,就是物體的中心位置不變,而改變視點(diǎn)的位置,從而使模型隨著鼠標(biāo)的移動(dòng)繞著中心位置旋轉(zhuǎn)。對于鼠標(biāo)移動(dòng)需要計(jì)算相應(yīng)的視點(diǎn)(照相機(jī))的運(yùn)動(dòng)情況,在osg中,通過TrackballManipulator:calcMovement()來實(shí)現(xiàn),并且對于不同的鼠標(biāo)事件,分別進(jìn)行如下的操作:1 按下鼠標(biāo)的左鍵,則旋轉(zhuǎn)照相機(jī)。2 按下鼠標(biāo)中間鍵或者同時(shí)按下鼠標(biāo)的左鍵和與右鍵,則改變物體的中心位置,也即對物體進(jìn)行平移操作。3 按下鼠標(biāo)的右鍵,則對模型進(jìn)行縮放。在按下鼠標(biāo)的左鍵從而旋轉(zhuǎn)照相機(jī)時(shí),這里主要模擬了一個(gè)跟蹤球技術(shù),球的半徑理想情況下應(yīng)該基于
2、旋轉(zhuǎn)中心到鼠標(biāo)所指的物體上某點(diǎn)的距離,但是為了簡化處理,一般情況下,球的半徑TRACKBALLSIZE可以預(yù)先給定,也能達(dá)到比較好的模擬效果。具體實(shí)現(xiàn)過程如下:首先分別記錄兩次鼠標(biāo)事件的坐標(biāo)的(x1,y1)和(x2,y2),根據(jù)x坐標(biāo)的最小值Xmin和最大值Xmax,以及y坐標(biāo)的最小值Ymin和最大值Ymax,對(x1,y1)和(x2,y2)坐標(biāo)進(jìn)行規(guī)范化,轉(zhuǎn)化到(-1,1)之間,不妨假設(shè)新的坐標(biāo)點(diǎn)為p1和p2,然后通過將p1和p2投影到跟蹤球上,從而獲取相應(yīng)的z坐標(biāo)。這樣,以球的中心為起始點(diǎn),計(jì)算出的球上的兩個(gè)點(diǎn)為終點(diǎn),可以確定兩個(gè)向量,不妨記作P1和P2,那么旋轉(zhuǎn)軸axis = P2 P1
3、,旋轉(zhuǎn)的弧度為:t = |(P2- P1)| / (2.0*TRACKBALLSIZE),為了避免產(chǎn)生某些不可操縱的結(jié)果,必須先將t規(guī)范到(-1,1)之間,再將其轉(zhuǎn)化為角度angles,然后將照相機(jī)繞著axis旋轉(zhuǎn)angles的角度,從而實(shí)現(xiàn)了對照相機(jī)的旋轉(zhuǎn)操作。在osg的實(shí)現(xiàn)中,該跟蹤球并不是一個(gè)正規(guī)的球體,而是進(jìn)行了一定的變形,在中心附近是一個(gè)半徑為TRACKBALLSIZE的球體,而在離中心達(dá)到一定距離時(shí)(小于球的半徑TRACKBALLSIZE),該球體被扭曲成了四個(gè)雙曲面。在Trackball模式的具體實(shí)現(xiàn)時(shí),有許多細(xì)節(jié)問題,如1首先需要將世界坐標(biāo)系轉(zhuǎn)化到視點(diǎn)坐標(biāo)系,這可以通過先將中心
4、平移到視點(diǎn)后根據(jù)照相機(jī)的up、物體的中心以及視點(diǎn)重新確立坐標(biāo)系。在osg中,由void TrackballManipulator:computePosition(const osg:Vec3& eye,const osg:Vec3& center,const osg:Vec3& up)實(shí)現(xiàn)。2模型的旋轉(zhuǎn)通過鼠標(biāo)控制,因此需要判斷鼠標(biāo)是否移動(dòng),具體實(shí)現(xiàn)時(shí),可以預(yù)先自定義一個(gè)速率v,分別記錄下連續(xù)兩次鼠標(biāo)事件的時(shí)間和位置,計(jì)算出間隔的時(shí)間t和移動(dòng)的距離s,如果s > v * t,就可以認(rèn)為鼠標(biāo)移動(dòng),并根據(jù)鼠標(biāo)的具體事件(如按下的是左鍵、右鍵等)進(jìn)行相應(yīng)的操作。在osg
5、中,由bool TrackballManipulator:isMouseMoving()實(shí)現(xiàn)。3需要有一個(gè)函數(shù)接收不同的鼠標(biāo)和鍵盤事件,從而做出相應(yīng)的處理。在osg中,由bool TrackballManipulator:handle(const GUIEventAdapter& ea,GUIActionAdapter& us) 實(shí)現(xiàn),如果事件被正確處理,返回true,否則返回false。其中GUIEventAdapter接受來自GUI的更新事件,GUIActionAdapter則是對這些GUI事件的回應(yīng)。QuaternionThe quaternions are member
6、s of a noncommutative division algebra first invented by William Rowan Hamilton. The idea for quaternions occurred to him while he was walking along the Royal Canal on his way to a meeting of the Irish Academy, and Hamilton was so pleased with his discovery that he scratched the fundamental formula
7、of quaternion algebra, (1)into the stone of the Brougham bridge (Mishchenko and Solovyov 2000). The set of quaternions is denoted , H, or , and the quaternions are a single example of a more general class of hypercomplex numbers discovered by Hamilton. While the quaternions are not commutative, they
8、 are associative, and they form a group known as the quaternion group. By analogy with the complex numbers being representable as a sum of real and imaginary parts, , a quaternion can also be written as a linear combination (2)The quaternion is implemented as Quaterniona, b, c, d in the Mathematica
9、add-on package AlgebraQuaternions (which can be loaded with the command <<Algebra). Note, however, that NonCommutativeMultiply (i.e., *) must be used for multiplication of these objects rather than usual multiplication (i.e., *). The quaternions can be represented using complex matrices (3)whe
10、re z and w are complex numbers, a, b, c, and d are real, and is the complex conjugate of z. A quaternion can be represented using Quaterniona, b, c, d in the Mathematica add-on package AlgebraQuaternions (which can be loaded with the command <<Algebra), where a, b, c, and d are explicit real n
11、umbers. Quaternions can also be represented using the complex matrices (4) (5) (6) (7)(Arfken 1985, p. 185). Note that here is used to denote the identity matrix, not . The matrices are closely related to the Pauli spin matrices , , , combined with the identity matrix. From
12、 the above definitions, it follows that (8)(9)(10)Therefore , , and are three essentially different solutions of the matrix equation (11)which could be considered the square roots of the negative identity matrix. A linear combination of basis quaternions with integer coefficients is sometimes called
13、 a Hamiltonian integer. In , the basis of the quaternions can be given by (12) (13) (14) (15)The quaternions satisfy the following identities, sometimes known as Hamilton's rules, (16)(17)(18)(19)They have the following multiplication table. 1ijk11ijkii-1kjj-1ikkj-1The
14、 quaternions ± 1, , , and form a non-Abelian group of order eight (with multiplication as the group operation). The quaternions can be written in the form (20)The quaternion conjugate is given by (21)The sum of two quaternions is then (22)and the product of two quaternions is
15、 (23)The quaternion norm is therefore defined by (24)In this notation, the quaternions are closely related to four-vectors. Quaternions can be interpreted as a scalar plus a vector by writing (25)where . In this notation, quaternion multiplication has the particularly simple form (2
16、6)Division is uniquely defined (except by zero), so quaternions form a division algebra. The inverse of a quaternion is given by (27)and the norm is multiplicative (28)In fact, the product of two quaternion norms immediately gives the Euler four-square identity. A rotation about the unit vector by a
17、n angle can be computed using the quaternion (29)(Arvo 1994, Hearn and Baker 1996). The components of this quaternion are called Euler parameters. After rotation, a point is then given by (30)since . A concatenation of two rotations, first and then , can be computed using the identity 給定一個(gè)單位四元數(shù),它對應(yīng)一
18、個(gè)旋轉(zhuǎn),該旋轉(zhuǎn)角度,旋轉(zhuǎn)軸為即由對應(yīng)的單位向量。給定義一個(gè)旋轉(zhuǎn)角度,單位旋轉(zhuǎn)軸,其對應(yīng)一個(gè)四元數(shù)為。給出單位四元數(shù)和旋轉(zhuǎn)的一一對應(yīng),下面將說明旋轉(zhuǎn)的合成和旋轉(zhuǎn)的結(jié)果都可以由四元數(shù)的運(yùn)算來得到。1 旋轉(zhuǎn)結(jié)果由四元數(shù)來計(jì)算任給一個(gè)向量,其繞單位軸旋轉(zhuǎn)后的結(jié)果向量是什么呢?設(shè)對應(yīng)一個(gè)四元數(shù)為,對應(yīng)的四元數(shù)為,而旋轉(zhuǎn)對應(yīng)的四元數(shù)為,則,其中為的共軛。2 旋轉(zhuǎn)的合成由四元數(shù)來計(jì)算給一個(gè)向量,它先繞單位軸旋轉(zhuǎn)角度,再繞單位軸旋轉(zhuǎn)角度,則兩次旋轉(zhuǎn)可以由兩個(gè)四元數(shù)的乘積來得到。繞任意一個(gè)軸旋轉(zhuǎn),對應(yīng)的矩陣如下:rotation matrix becomes (12)where the elements of
19、the matrix are (13)Here, Einstein summation has been used, is the Kronecker delta, and is the permutation symbol. Written out explicitly, the matrix elements are (14)(15)(16)(17)(18)(19)(20)(21)其中就是旋轉(zhuǎn)對應(yīng)的四元數(shù)。用矢量形式來表示旋轉(zhuǎn):Rotation FormulaA formula which transforms a given coordinate system by rotating i
20、t through a counterclockwise angle about an axis . This formula is used implicitly to transform objects in VRML (virtual reality markup language) using the command Rotation angle nx ny nz Phi. Referring to the above figure (Goldstein 1980), the equation for the "fixed" vector in the transf
21、ormed coordinate system (i.e., the above figure corresponds to an alias transformation), is (1) (2) (3)(Goldstein 1980; Varshalovich et al. 1988, p. 24). The angle and unit normal may also be expressed as Euler angles. In terms of the Euler parameters, DriveManipulator結(jié)構(gòu)原理及功能說明當(dāng)打開場景,按
22、鍵盤“3”鍵是,場景處于DriveManipulator漫游模式狀態(tài),形象的理解:處于DriveManipulator漫游模式下,就好象一個(gè)虛擬人在場景里面行走一樣。一類結(jié)構(gòu)SpeedControlMode: enum SpeedControlMode USE_MOUSE_Y_FOR_SPEED, USE_MOUSE_BUTTONS_FOR_SPEED ;用戶按鍵盤“A”鍵時(shí),使用USE_MOUSE_BUTTONS_FOR_SPEED模式,在該模式漫游時(shí),鼠標(biāo)左鍵為加速鍵;中鍵按下為停止漫游,或者左右鍵同時(shí)按下;鼠標(biāo)右鍵為減速。用戶如果按鍵盤“Q”鍵時(shí),使用USE_MOUSE_Y_FOR_SP
23、EED模式,在這種模式下漫游,鼠標(biāo)左、中、右鍵功能相同,向前為加速、向后為減速。void addMouseEvent(const GUIEventAdapter& ea) osg:ref_ptr<const GUIEventAdapter> _ga_t1; osg:ref_ptr<const GUIEventAdapter> _ga_t0;系統(tǒng)定義兩個(gè)GUIEventAdapter對象,相當(dāng)于雙緩沖功能DriveManipulator:calcMovement()1 判斷有沒有鼠標(biāo)事件2 判斷速度控制模式,默認(rèn)為USE_MOUSE_BUTTONS_FOR_SPE
24、ED模式3 確定照相機(jī)的方向4 完成碰撞檢測virtual const char* className() const return "Drive" 繼承基類方法,得到類的名稱DriveManipulator:computePosition(const osg:Vec3d& eye,const osg:Vec3d& center,const osg:Vec3d& up) 視圖變換,確定照相機(jī)的位置和方向DriveManipulator:DriveManipulator()構(gòu)造函數(shù),主要初始化漫游初始速度、漫游結(jié)點(diǎn)的高度、相機(jī)結(jié)點(diǎn)的包圍盒以及漫游速度控
25、制模式DriveManipulator:flushMouseEventStack() 清空鼠標(biāo)事件堆棧、也即使osg:ref_ptr<const GUIEventAdapter> _ga_t1;osg:ref_ptr<const GUIEventAdapter> _ga_t0;指向空指針(_ga_t1 = NULL; _ga_t0 = NULL;)osg:Matrixd DriveManipulator:getInverseMatrix() const 獲得反轉(zhuǎn)矩陣,主要完成OSG和openGL之間的坐標(biāo)轉(zhuǎn)換osg:Matrixd DriveManipulator:ge
26、tMatrix() const 獲取視點(diǎn)矩陣const osg:Node* DriveManipulator:getNode() const 獲取照相機(jī)的結(jié)點(diǎn)void DriveManipulator:getUsage(osg:ApplicationUsage& usage) const 獲取鼠標(biāo)和鍵盤的操控使用說明bool DriveManipulator:handle(const GUIEventAdapter& ea,GUIActionAdapter& us)handle方法主要獲取外來事件響應(yīng)相應(yīng)的操作,在OSG里主要有以下處理事件:PUSH:當(dāng)鼠標(biāo)鍵推動(dòng)時(shí),實(shí)
27、現(xiàn)場景的漫游RELEASE:繼續(xù)PUSH后的操作,實(shí)現(xiàn)場景漫游DRAG:功能和PUSH 一樣MOVE:功能和PUSH 一樣KEYDOWN:主要獲取空格、A、Q鍵,空格鍵按下、調(diào)用home()方法、回到場景的初始狀態(tài)、清空事件堆棧,禁止連續(xù)更新場景;A鍵按下,使用USE_MOUSE_BUTTONS_FOR_SPEED模式;Q鍵按下,使用USE_MOUSE_Y_FOR_SPEED模式。FRAME:主要更新場景RESIZE:當(dāng)窗口大小變化時(shí)的響應(yīng)狀態(tài),起功能和home()相似,唯一不同,相機(jī)結(jié)點(diǎn)不要重新獲取 void DriveManipulator:home(const GUIEventAdapt
28、er& ea,GUIActionAdapter& us) DriveManipulator:computeHomePosition()當(dāng)用戶按空格鍵時(shí),回到漫游的初時(shí)狀態(tài),主要完成下面事情:1 獲取結(jié)點(diǎn),通過IntersecVisitor確定漫游結(jié)點(diǎn)在場景中的初始位置2 請求繪制場景3 重新獲取鼠標(biāo)位置4 清空事件堆棧void DriveManipulator:init(const GUIEventAdapter& ea,GUIActionAdapter& us)當(dāng)窗口大小變化時(shí)響應(yīng),主要完成下面事情:1 清空事件堆棧2 禁止場景連續(xù)更新3 通過Intersec
29、Visitor初始化漫游結(jié)點(diǎn)在場景中的位置virtual void setByInverseMatrix(const osg:Matrixd& matrix) setByMatrix(osg:Matrixd:inverse(matrix); 設(shè)置反轉(zhuǎn)矩陣void DriveManipulator:setByMatrix(const osg:Matrixd& matrix) 設(shè)置矩陣void DriveManipulator:setNode(osg:Node* node) 獲取結(jié)點(diǎn)的包圍盒,提供給碰撞檢測屏幕的中心(0,0)點(diǎn)在中間。屏幕左下角最小,右上角最大。照相機(jī)新的的朝向,
30、主要根據(jù)鼠標(biāo)位置及照相機(jī)原有的朝向來變化。pitch,roll,yaw均是作用于改變_ratation的值,即改變照相機(jī)的朝向,而物體的移動(dòng)方向是照相機(jī)移動(dòng)方向的反方向。其中sv,lv,up即對于照相機(jī)的局部坐標(biāo)系。Pitch:可以形象的認(rèn)為是抬頭和低頭,根據(jù)鼠標(biāo)的Y值大小,決定pitch正負(fù)。 double pitch = -inDegrees(dy*75.0f*dt); pitch_rotate.makeRotate(pitch,sv.x(),sv.y(),sv.z();/ 繞sv旋轉(zhuǎn)一個(gè)角度鼠標(biāo)在中心上方,Y值為正,pitch為負(fù),照相機(jī)鏡頭向下轉(zhuǎn)(逆向),表現(xiàn)為物體向上轉(zhuǎn)(正向)。鼠標(biāo)
31、在中心下方,Y值為負(fù),pitch為正,照相機(jī)鏡頭向上轉(zhuǎn)(正向),表現(xiàn)為物體向下(逆向)。Roll:照相機(jī)的側(cè)身。根據(jù)鼠標(biāo)的X值大小,決定roll正負(fù)。 double roll = inDegrees(dx*50.0f*dt);roll_rotate.makeRotate(roll,lv.x(),lv.y(),lv.z();/繞lv旋轉(zhuǎn)一個(gè)角度鼠標(biāo)在中心右方,X值為正,roll為正,照相機(jī)鏡頭向右轉(zhuǎn),表現(xiàn)為物體向左轉(zhuǎn)。鼠標(biāo)在中心左方,X值為負(fù),roll為負(fù),照相機(jī)鏡頭向左轉(zhuǎn),表現(xiàn)為物體向右轉(zhuǎn)。Yaw: 照相機(jī)的轉(zhuǎn)角。根據(jù)照相機(jī)原有的自身坐標(biāo)系sv,lv,up,決定yaw的正負(fù),繞著Z軸轉(zhuǎn)。 do
32、uble bank = asinf(sv *getUpVector(cf); double yaw = inRadians(bank)*dt; osg:Quat yaw_rotate; yaw_rotate.makeRotate(yaw,getUpVector(cf);/注意:這里是繞著osg的z軸轉(zhuǎn)當(dāng)照相機(jī)的自身坐標(biāo)系sv(x)方向與osg的z軸夾角為銳角,bank值為正,照相機(jī)繞Z軸正向轉(zhuǎn),表現(xiàn)為物體從右面(逆向)繞到照相機(jī)后面去。 若為鈍角,則相反。Yaw的改變是由sv的改變而引起的,sv方向的改變是由于roll的變化引起的,pitch的改變不影響yaw的變化。所以表現(xiàn)為:若yaw有效,
33、當(dāng)照相機(jī)側(cè)身時(shí),會同時(shí)轉(zhuǎn)身。 lv *= (_velocity*dt);_velocity是在lv方向上的,即照相機(jī)(視點(diǎn)位置)移動(dòng)在lv方向上。_rotation變化,首先pitch,再roll,最后yaw,即照相機(jī)局部坐標(biāo)系(sv,lv,up)在改變。另外,即使鼠標(biāo)不動(dòng),dt也是有值的,即兩幀之間的刷新時(shí)間,所以只要鼠標(biāo)不在(0,)點(diǎn),就算鼠標(biāo)不動(dòng),物體也會移動(dòng)。問題:為什么在判斷鼠標(biāo)事件的時(shí)候用的是ga_t1? unsigned int buttonMask = _ga_t1->getButtonMask();Flight模式當(dāng)打開場景,按鍵盤“2”鍵切換到Flight漫游模式狀態(tài)
34、,采用Flight模式就像駕駛飛機(jī)觀察場景,默認(rèn)情況下:1 按下鼠標(biāo)左鍵,相機(jī)加速向前移動(dòng)2 按下鼠標(biāo)右鍵,相機(jī)減速,當(dāng)速度等于0時(shí)相機(jī)開始向后倒退3 按下鼠標(biāo)中間鍵 或者鼠標(biāo)左右鍵同時(shí)按下為停止。工作流程:一、運(yùn)行程序時(shí)首先調(diào)用各個(gè)漫游模式的構(gòu)造函數(shù)和setNode()函數(shù),進(jìn)行初始化,獲取結(jié)點(diǎn)的包圍盒,二、當(dāng)切換到Flight模式時(shí):首先,調(diào)用setByMatrix()通過該函數(shù)的參數(shù)設(shè)置視點(diǎn)位置,確定相機(jī)的視圖矩陣(主要體現(xiàn)在旋轉(zhuǎn)角度上)。接著,調(diào)用init()進(jìn)行初始化,設(shè)置漫游初始速度,清空事件堆棧,設(shè)置鼠標(biāo)初始位置等,通過handle()方法捕獲鼠標(biāo)和鍵盤事件、根據(jù)相應(yīng)的事件來確定
35、相機(jī)的移動(dòng)方式,主要工作的流程:1 確定照相機(jī)的初始位置和方向,初始狀態(tài)下相機(jī)位于原點(diǎn),相機(jī)朝向?yàn)閆的負(fù)方向,相機(jī)向上的方向?yàn)閅的方向。2 漫游速度控制:通過對_velocity參數(shù)的控制實(shí)現(xiàn)對漫游速度和漫游方向的改變,利用_velocity += dt*(_acceleration+_velocity)控制漫游加速,dt為鼠標(biāo)按下的持續(xù)時(shí)間,持續(xù)時(shí)間越長漫游速度越快;減速操作也是類似。由此可知,當(dāng)_velocity>0時(shí),向著視線的方向行進(jìn);當(dāng)_velocity<0時(shí),向視線相反的方向倒退;而其為0時(shí),則相機(jī)靜止在場景中。 3 照相機(jī)旋轉(zhuǎn)角度控制:使用NO_AUTOMATIC_Y
36、AW模式,只計(jì)算相機(jī)的旋轉(zhuǎn)角度,不考慮飛行時(shí)的傾斜角度,使用YAW_AUTOMATICALLY_WHEN_BANKED模式,不僅需要計(jì)算相機(jī)的旋轉(zhuǎn)角度,還要考慮飛行時(shí)的傾斜角度。4 相機(jī)移動(dòng)檢測:通過判斷鼠標(biāo)是否移動(dòng)來決定相機(jī)是否移動(dòng),若進(jìn)行了操作,如推,拉,更改窗口大小等操作后,由calcMovement()計(jì)算得相機(jī)已經(jīng)移動(dòng)了,則照相機(jī)看到的為新的場景;5 隨時(shí)間不斷的改變視線(lv*=(_velocity*dt) 和視點(diǎn)_eye+=lv的位置,更新相機(jī)的旋轉(zhuǎn)角度。當(dāng)按空格鍵時(shí),調(diào)用home(),整個(gè)場景回到初始位置。一類結(jié)構(gòu)YawControlMode: enum YawControlM
37、ode YAW_AUTOMATICALLY_WHEN_BANKED, NO_AUTOMATIC_YAW ;用戶按鍵盤“A”鍵時(shí),使用NO_AUTOMATIC_YAW模式,只計(jì)算相機(jī)的旋轉(zhuǎn)角度,不考慮飛行時(shí)的傾斜角度。用戶如果按鍵盤“Q”鍵時(shí),使用YAW_AUTOMATICALLY_WHEN_BANKED模式,不僅需要計(jì)算相機(jī)的旋轉(zhuǎn)角度,還要考慮飛行時(shí)的傾斜角度,該模式是默認(rèn)的飛行漫游模式。void addMouseEvent(const GUIEventAdapter& ea) osg:ref_ptr<const GUIEventAdapter> _ga_t1; osg:r
38、ef_ptr<const GUIEventAdapter> _ga_t0;系統(tǒng)定義兩個(gè)GUIEventAdapter對象,相當(dāng)于雙緩沖功能FlightManipulator:calcMovement()5 計(jì)算飛行時(shí)的漫游速度6 計(jì)算相機(jī)的旋轉(zhuǎn)角度,默認(rèn)為YAW_AUTOMATICALLY_WHEN_BANKED模式7 確定照相機(jī)的方向FlightManipulator:computePosition(const osg:Vec3d& eye,const osg:Vec3d& center,const osg:Vec3d& up) 視圖變換,確定照相機(jī)的位置和方向FlightManipulator:FlightManipulator()構(gòu)造函數(shù),主要初始化漫游初始速度、相機(jī)結(jié)點(diǎn)的包圍盒以及相機(jī)視角模式FlightManipulator:flushMouseEventStack() 清空鼠標(biāo)事件堆棧、也即使osg:ref_ptr<const GUIEventAdapter> _
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店財(cái)務(wù)管理工作總結(jié)
- 美容行業(yè)安全美容手術(shù)
- 幼兒園小班教案《媽媽抱抱我》及教學(xué)反思幼兒園教案《媽媽抱抱我》及教學(xué)反思
- 會長年度述職報(bào)告(9篇)
- 能源科技工作招聘信息
- 年工作總結(jié)財(cái)務(wù)部積極適應(yīng)市場變化
- 醫(yī)療保健行業(yè)中醫(yī)療設(shè)備顧問的工作要求
- 2024年度職工食堂員工健康體檢與疾病預(yù)防合同3篇
- 瑜伽地面舞王式課程設(shè)計(jì)
- 女方婚宴致辭
- 2024年河南省中職對口升學(xué)高考語文試題真題(解析版)
- 《食品行業(yè)ERP應(yīng)用》課件
- 41-降低懸挑式卸料平臺安全隱患發(fā)生率 棗莊華廈(4:3定稿)
- 2024年北京市學(xué)業(yè)水平合格性地理試卷(第一次)
- 黑龍江哈爾濱六中2025屆高三第六次模擬考試數(shù)學(xué)試卷含解析
- 2023年不動(dòng)產(chǎn)登記代理人《不動(dòng)產(chǎn)登記法律制度政策》考前通關(guān)必練題庫(含答案)
- GB/T 36547-2024電化學(xué)儲能電站接入電網(wǎng)技術(shù)規(guī)定
- 期末測試卷(一)2024-2025學(xué)年 人教版PEP英語五年級上冊(含答案含聽力原文無聽力音頻)
- 漢服娃衣創(chuàng)意設(shè)計(jì)與制作智慧樹知到期末考試答案章節(jié)答案2024年四川文化產(chǎn)業(yè)職業(yè)學(xué)院
- 《大數(shù)據(jù)技術(shù)原理與應(yīng)用(第3版)》期末復(fù)習(xí)題庫(含答案)
- 8款-組織架構(gòu)圖(可編輯)
評論
0/150
提交評論