12月15日是什么星座| 产后检查挂什么科| 外感是什么意思| chick是什么意思| 皇太后是皇上的什么人| 什么山不能爬脑筋急转弯| 孤寡是什么意思| 抗核抗体弱阳性说明什么| 门槛石有什么讲究| 现在吃什么水果| 心肝火旺吃什么中成药| 什么是性瘾| 姓薄的读音是什么| 干涉是什么意思| 什么是骨质增生| 4月6号什么星座| 老年人吃什么好| 白芷有什么作用与功效| 牛肉不能和什么水果一起吃| 打疫苗前后要注意什么| 金字旁加全字念什么| 男人胸前有痣代表什么意思| 一颗颗什么| lgg是什么意思| 左手臂麻木是什么征兆| 怀孕吃什么宝宝皮肤白| 龚自珍是什么朝代的| 什么的竹叶| 近视是什么| 什么是性病| 引狼入室是什么意思| 蛋白粉有什么用| 印堂发亮预兆着什么| 脚侧面骨头突出叫什么| 忘不了鱼在中国叫什么| 醉酒当歌什么意思| 预后是什么意思| 房颤吃什么药最好| 政府是干什么的| 颈椎病挂什么科| 什么动作可以提高性功能| 含五行属什么| 一什么鱼| 木行念什么| 开心果树长什么样| 阴阳屏是什么意思| 梦见杀人了是什么意思| 两个人可以玩什么游戏| 每天坚持做俯卧撑有什么好处| hold住是什么意思| 甲木代表什么| 晚上9点多是什么时辰| 1940年出生属什么生肖| 维生素b3又叫什么| 屈膝是什么意思| 为什么会有灰指甲| 1932年属什么生肖| 牛反刍是什么意思| 吃什么水果补气血| 孩子手抖是什么原因| 婚煞是什么意思| 红薯用什么繁殖| 痛风忌吃什么| 脚气用什么药膏| 2月1号什么星座| 橡皮泥可以做什么| 血常规什么颜色的管子| 头顶秃了一小块是什么原因怎么办| 脚背上长痣代表什么| fev1是什么意思| 灵隐寺求什么最灵| 摘环后需要注意什么| 澳门是什么花| 吃什么药去体内湿气| 12.21是什么星座| 血瘀吃什么药| 黑龙江有什么特产| 43岁属什么生肖| 颈动脉彩超挂什么科| 小孩睡觉出很多汗是什么原因| 今年三十属什么| 兔子不吃窝边草是什么意思| 痛包是什么| 端午是什么时候| 物是人非是什么意思| 青龙男是什么意思| 啤酒鸭可以放什么配菜| 云想衣裳花想容是什么意思| 古人的婚礼在什么时候举行| 什么茶叶降血压最好| 星座是什么意思| 黄疸高对婴儿有什么影响| 胸膜炎挂什么科| 黎明是什么时候| 宝宝满周岁送什么礼物| 血红蛋白浓度偏低是什么原因| 蛇与什么属相相克相冲| 吃得什么填词语| 月经什么时候来| 月经期间头疼是什么原因| 手腕发麻是什么原因| 拔完牙不能吃什么| 什么是996| 为什么抽烟会上瘾| 打喷嚏很臭是什么原因| 乙肝对身体有什么影响| 梦见刷牙是什么预兆| 胎儿靠什么吸收营养| 桑榆未晚是什么意思| 亲吻是什么感觉| 鸭肫是什么部位| 什么东西能吃不能碰| 清朝皇帝姓什么| 白细胞低要吃什么| 马蜂蛰了用什么药| 属鸡适合佩戴什么饰品| 头部容易出汗是什么原因| 1998年出生属什么生肖| 镇静是什么意思| 反乌托邦什么意思| 孕妇肾积水是什么原因引起的| 心路历程是什么意思| 心疼是什么意思| 肠癌吃什么好| 失眠吃什么药| 羽丝绒是什么材料| 现在当兵需要什么条件| 接触性皮炎用什么药| 气管憩室是什么意思| 1975年五行属什么| h的大写字母是什么| 健脾益气是什么意思| 左旋肉碱是什么东西| 静谧时光什么意思| 南宁有什么特产| 内眼角越揉越痒用什么眼药水| 社会公德的主要内容是什么| 什么是绿茶女| syphilis是什么意思| 用神是什么意思| 嗨体是什么| 血红蛋白浓度偏高是什么原因| 拉不出屎吃什么药| 白带多是什么原因| 总是睡不着觉是什么原因| 仕女图是什么意思| 羊与什么相冲| 血氧仪是干什么用的| 血压低压低是什么原因| 梦见抓螃蟹是什么征兆| 粗人是什么意思| 58岁属什么生肖| 子宫切除后对身体有什么影响| 嘴苦是什么病的征兆| 吴用属什么生肖| 亚麻跌是什么意思| 玫瑰红是什么颜色| 大学生入伍有什么好处| 尿胆原阳性是什么意思| 止汗药什么最好| 今天冬至吃什么| 什么是心率| 茴三硫片主治什么| 胃蛋白酶原1偏低是什么意思| 1208是什么星座| 什么蛇没有毒| 世界上最深的湖泊是什么| 党参长什么样图片| 靶向药有什么副作用| 眼睛浮肿是什么原因| 1970年属狗的是什么命| 蛇形分班是什么意思| 为什么黄瓜是绿色的却叫黄瓜| bv是什么品牌| 白带黄什么原因| π是什么意思| 怀孕初期头晕是什么原因| 雀的偏旁是什么| 甲状腺结节对身体有什么影响| 唯有读书高的前一句是什么| 一动就大汗淋漓是什么原因| 舌苔发黄是什么病| 直肠ca代表什么病| 尿隐血1十是什么| 什么的教室填空| 香蕉有什么作用与功效| 嗜酸性肉芽肿是什么病| s和m什么意思| 甲状腺在什么位置| 九月初三是什么星座| 火六局是什么意思| 月经推迟吃什么药| dbm是什么单位| 红茶有什么功效| 孜孜不倦什么意思| 10000是什么电话| 血小板分布宽度低是什么原因| 月亮的肚子指的是什么| 什么叫中成药| 朝九晚五是什么意思| 欲言又止什么意思| 头疼应该挂什么科| 来月经前有褐色分泌物是什么原因| 饱经风霜是什么生肖| 做梦梦见老公出轨是什么意思| 豆腐鱼是什么鱼| 留级是什么意思| 火车不能带什么| 头三个月保胎喝什么汤| 忆苦思甜下一句是什么| 一什么十什么的成语| 骑马野战指什么生肖| 十二生肖本领强是什么生肖| 衤字旁的字与什么有关| 吃什么可以增加抵抗力和免疫力| 梦见买面条有什么预兆| 鹅蛋吃了有什么好处| 才能是什么意思| 漱口杯什么材质好| 狐惑病是什么病| experiment是什么意思| 一百万存款算什么水平| 为什么手上会长小水泡| 河豚是什么意思| more是什么意思| ahc是韩国什么档次| 辗转反侧什么意思| 导管子是什么意思| 外阴痒用什么洗| 7月10号是什么星座| 创始人是什么意思| 结膜水肿用什么眼药水| nerf是什么意思| 眼睛肿是什么原因| 等着我为什么停播了| 脸浮肿是什么原因引起的| 长疮是什么原因| 恕是什么意思| 睡不着觉是什么原因| 蜈蚣属于什么类动物| ad是什么缩写| 现在可以种什么农作物| 薄熙来犯了什么罪| 脚趾麻木是什么病先兆| 小孩咳嗽是什么原因引起的| 纵欲什么意思| 代偿是什么意思| 我国的国花是什么花| 肝早期硬化身体有什么症状| 肚子上面是什么部位| 胃疼和肚子疼有什么区别| 空气刘海适合什么脸型| 开理疗店需要什么证件| 旧人是什么意思| 姓陈取什么名字好听| 不置可否是什么意思| 睡眠不足会引起什么症状| 粉皮是什么做的| 胸部ct能检查出什么| 宫腔积液排出什么颜色| 青色是什么色| maje是什么牌子| 民不聊生是什么意思| 黄帝叫什么| 百度
百度 拒不整改的,责令退出出租汽车市场”。

In computer science, binary space partitioning (BSP) is a method for space partitioning which recursively subdivides a Euclidean space into two convex sets by using hyperplanes as partitions. This process of subdividing gives rise to a representation of objects within the space in the form of a tree data structure known as a BSP tree.

The process of making a BSP tree

Binary space partitioning was developed in the context of 3D computer graphics in 1969.[1][2] The structure of a BSP tree is useful in rendering because it can efficiently give spatial information about the objects in a scene, such as objects being ordered from front-to-back with respect to a viewer at a given location. Other applications of BSP include: performing geometrical operations with shapes (constructive solid geometry) in CAD,[3] collision detection in robotics and 3D video games, ray tracing, virtual landscape simulation,[4] and other applications that involve the handling of complex spatial scenes.

History

edit
  • 1969 Schumacker et al.[1] published a report that described how carefully positioned planes in a virtual environment could be used to accelerate polygon ordering. The technique made use of depth coherence, which states that a polygon on the far side of the plane cannot, in any way, obstruct a closer polygon. This was used in flight simulators made by GE as well as Evans and Sutherland. However, the creation of the polygonal data organization was performed manually by the scene designer.
  • 1980 Fuchs et al.[2] extended Schumacker's idea to the representation of 3D objects in a virtual environment by using planes that lie coincident with polygons to recursively partition the 3D space. This provided a fully automated and algorithmic generation of a hierarchical polygonal data structure known as a Binary Space Partitioning Tree (BSP Tree). The process took place as an off-line preprocessing step that was performed once per environment/object. At run-time, the view-dependent visibility ordering was generated by traversing the tree.
  • 1981 Naylor's Ph.D. thesis[5] provided a full development of both BSP trees and a graph-theoretic approach using strongly connected components for pre-computing visibility, as well as the connection between the two methods. BSP trees as a dimension-independent spatial search structure were emphasized, with applications to visible surface determination. The thesis also included the first empirical data demonstrating that the size of the tree and the number of new polygons were reasonable (using a model of the Space Shuttle).
  • 1983 Fuchs et al.[6] described a micro-code implementation of the BSP tree algorithm on an Ikonas frame buffer system. This was the first demonstration of real-time visible surface determination using BSP trees.
  • 1987 Thibault and Naylor[3] described how arbitrary polyhedra may be represented using a BSP tree as opposed to the traditional b-rep (boundary representation). This provided a solid representation vs. a surface based-representation. Set operations on polyhedra were described using a tool, enabling constructive solid geometry (CSG) in real-time. This was the forerunner of BSP level design using "brushes", introduced in the Quake editor and picked up in the Unreal Editor.
  • 1990 Naylor, Amanatides, and Thibault[7] provided an algorithm for merging two BSP trees to form a new BSP tree from the two original trees. This provides many benefits including combining moving objects represented by BSP trees with a static environment (also represented by a BSP tree), very efficient CSG operations on polyhedra, exact collisions detection in O(log n * log n), and proper ordering of transparent surfaces contained in two interpenetrating objects (has been used for an x-ray vision effect).
  • 1991 Teller and Séquin[8] proposed the offline generation of potentially visible sets to accelerate visible surface determination in orthogonal 2D environments.
  • 1991 Gordon and Chen[9] described an efficient method of performing front-to-back rendering from a BSP tree, rather than the traditional back-to-front approach. They utilized a special data structure to record, efficiently, parts of the screen that have been drawn, and those yet to be rendered. This algorithm, together with the description of BSP Trees in the standard computer graphics textbook of the day (Computer Graphics: Principles and Practice) was used by John Carmack in the making of Doom (video game).
  • 1992 Teller's Ph.D. thesis[10] described the efficient generation of potentially visible sets as a pre-processing step to accelerate real-time visible surface determination in arbitrary 3D polygonal environments. This was used in Quake and contributed significantly to that game's performance.
  • 1993 Naylor[11] answered the question of what characterizes a good BSP tree. He used expected case models (rather than worst-case analysis) to mathematically measure the expected cost of searching a tree and used this measure to build good BSP trees. Intuitively, the tree represents an object in a multi-resolution fashion (more exactly, as a tree of approximations). Parallels with Huffman codes and probabilistic binary search trees are drawn.
  • 1993 Hayder Radha's Ph.D. thesis[12] described (natural) image representation methods using BSP trees. This includes the development of an optimal BSP-tree construction framework for any arbitrary input image. This framework is based on a new image transform, known as the Least-Square-Error (LSE) Partitioning Line (LPE) transform. H. Radha's thesis also developed an optimal rate-distortion (RD) image compression framework and image manipulation approaches using BSP trees.

Overview

edit
 
An example of a recursive binary space partitioning quadtree for a 2D index

Binary space partitioning is a generic process of recursively dividing a scene into two using hyperplanes[13] until the partitioning satisfies one or more requirements. It can be seen as a generalization of other spatial tree structures such as k-d trees and quadtrees, one where hyperplanes that partition the space may have any orientation, rather than being aligned with the coordinate axes as they are in k-d trees or quadtrees. When used in computer graphics to render scenes composed of planar polygons, the partitioning planes are frequently chosen to coincide with the planes defined by polygons in the scene.

The specific choice of partitioning plane and criterion for terminating the partitioning process varies depending on the purpose of the BSP tree. For example, in computer graphics rendering, the scene is divided until each node of the BSP tree contains only polygons that can be rendered in arbitrary order. When back-face culling is used, each node, therefore, contains a convex set of polygons, whereas when rendering double-sided polygons, each node of the BSP tree contains only polygons in a single plane. In collision detection or ray tracing, a scene may be divided up into primitives on which collision or ray intersection tests are straightforward.

Binary space partitioning arose from computer graphics needing to rapidly draw three-dimensional scenes composed of polygons. A simple way to draw such scenes is the painter's algorithm, which produces polygons in order of distance from the viewer, back to front, painting over the background and previous polygons with each closer object. This approach has two disadvantages: the time required to sort polygons in back-to-front order, and the possibility of errors in overlapping polygons. Fuchs and co-authors[2] showed that constructing a BSP tree solved both of these problems by providing a rapid method of sorting polygons with respect to a given viewpoint (linear in the number of polygons in the scene) and by subdividing overlapping polygons to avoid errors that can occur with the painter's algorithm. A disadvantage of binary space partitioning is that generating a BSP tree can be time-consuming. Typically, it is therefore performed once on static geometry, as a pre-calculation step, prior to rendering or other real-time operations on a scene. The expense of constructing a BSP tree makes it difficult and inefficient to directly implement moving objects into a tree.

Generation

edit

The canonical use of a BSP tree is for rendering polygons (that are double-sided, that is, without back-face culling) with the painter's algorithm. Each polygon is designated with a front side and a backside which could be chosen arbitrarily and only affects the structure of the tree but not the required result.[2] Such a tree is constructed from an unsorted list of all the polygons in a scene. The recursive algorithm for construction of a BSP tree from that list of polygons is:[2]

  1. Choose a polygon P from the list.
  2. Make a node N in the BSP tree, and add P to the list of polygons at that node.
  3. For each other polygon in the list:
    1. If that polygon is wholly in front of the plane containing P, move that polygon to the list of nodes in front of P.
    2. If that polygon is wholly behind the plane containing P, move that polygon to the list of nodes behind P.
    3. If that polygon is intersected by the plane containing P, split it into two polygons and move them to the respective lists of polygons behind and in front of P.
    4. If that polygon lies in the plane containing P, add it to the list of polygons at node N.
  4. Apply this algorithm to the list of polygons in front of P.
  5. Apply this algorithm to the list of polygons behind P.

The following diagram illustrates the use of this algorithm in converting a list of lines or polygons into a BSP tree. At each of the eight steps (i.-viii.), the algorithm above is applied to a list of lines, and one new node is added to the tree.

Start with a list of lines, (or in 3D, polygons) making up the scene. In the tree diagrams, lists are denoted by rounded rectangles and nodes in the BSP tree by circles. In the spatial diagram of the lines, the direction chosen to be the 'front' of a line is denoted by an arrow.  
i. Following the steps of the algorithm above,
  1. We choose a line, A, from the list and,...
  2. ...add it to a node.
  3. We split the remaining lines in the list into those in front of A (i.e. B2, C2, D2), and those behind (B1, C1, D1).
  4. We first process the lines in front of A (in steps ii–v),...
  5. ...followed by those behind (in steps vi–vii).
 
ii. We now apply the algorithm to the list of lines in front of A (containing B2, C2, D2). We choose a line, B2, add it to a node and split the rest of the list into those lines that are in front of B2 (D2), and those that are behind it (C2, D3).  
iii. Choose a line, D2, from the list of lines in front of B2 and A. It is the only line in the list, so after adding it to a node, nothing further needs to be done.  
iv. We are done with the lines in front of B2, so consider the lines behind B2 (C2 and D3). Choose one of these (C2), add it to a node, and put the other line in the list (D3) into the list of lines in front of C2.  
v. Now look at the list of lines in front of C2. There is only one line (D3), so add this to a node and continue.  
vi. We have now added all of the lines in front of A to the BSP tree, so we now start on the list of lines behind A. Choosing a line (B1) from this list, we add B1 to a node and split the remainder of the list into lines in front of B1 (i.e. D1), and lines behind B1 (i.e. C1).  
vii. Processing first the list of lines in front of B1, D1 is the only line in this list, so add this to a node and continue.  
viii. Looking next at the list of lines behind B1, the only line in this list is C1, so add this to a node, and the BSP tree is complete.  

The final number of polygons or lines in a tree is often larger (sometimes much larger[2]) than the original list, since lines or polygons that cross the partitioning plane must be split into two. It is desirable to minimize this increase, but also to maintain reasonable balance in the final tree. The choice of which polygon or line is used as a partitioning plane (in step 1 of the algorithm) is therefore important in creating an efficient BSP tree.

Traversal

edit

A BSP tree is traversed in a linear time, in an order determined by the particular function of the tree. Again using the example of rendering double-sided polygons using the painter's algorithm, to draw a polygon P correctly requires that all polygons behind the plane P lies in must be drawn first, then polygon P, then finally the polygons in front of P. If this drawing order is satisfied for all polygons in a scene, then the entire scene renders in the correct order. This procedure can be implemented by recursively traversing a BSP tree using the following algorithm.[2] From a given viewing location V, to render a BSP tree,

  1. If the current node is a leaf node, render the polygons at the current node.
  2. Otherwise, if the viewing location V is in front of the current node:
    1. Render the child BSP tree containing polygons behind the current node
    2. Render the polygons at the current node
    3. Render the child BSP tree containing polygons in front of the current node
  3. Otherwise, if the viewing location V is behind the current node:
    1. Render the child BSP tree containing polygons in front of the current node
    2. Render the polygons at the current node
    3. Render the child BSP tree containing polygons behind the current node
  4. Otherwise, the viewing location V must be exactly on the plane associated with the current node. Then:
    1. Render the child BSP tree containing polygons in front of the current node
    2. Render the child BSP tree containing polygons behind the current node
 

Applying this algorithm recursively to the BSP tree generated above results in the following steps:

  • The algorithm is first applied to the root node of the tree, node A. V is in front of node A, so we apply the algorithm first to the child BSP tree containing polygons behind A
    • This tree has root node B1. V is behind B1 so first, we apply the algorithm to the child BSP tree containing polygons in front of B1:
      • This tree is just the leaf node D1, so the polygon D1 is rendered.
    • We then render the polygon B1.
    • We then apply the algorithm to the child BSP tree containing polygons behind B1:
      • This tree is just the leaf node C1, so the polygon C1 is rendered.
  • We then draw the polygons of A
  • We then apply the algorithm to the child BSP tree containing polygons in front of A
    • This tree has root node B2. V is behind B2 so first, we apply the algorithm to the child BSP tree containing polygons in front of B2:
      • This tree is just the leaf node D2, so the polygon D2 is rendered.
    • We then render the polygon B2.
    • We then apply the algorithm to the child BSP tree containing polygons behind B2:
      • This tree has root node C2. V is in front of C2 so first, we would apply the algorithm to the child BSP tree containing polygons behind C2. There is no such tree, however, so we continue.
      • We render the polygon C2.
      • We apply the algorithm to the child BSP tree containing polygons in front of C2
        • This tree is just the leaf node D3, so the polygon D3 is rendered.

The tree is traversed in linear time and renders the polygons in a far-to-near ordering (D1, B1, C1, A, D2, B2, C2, D3) suitable for the painter's algorithm.

Application

edit

BSP trees are often used by 3D video games, particularly first-person shooters and those with indoor environments. Game engines using BSP trees include the Doom (id Tech 1), Quake (id Tech 2 variant), GoldSrc and Source engines. In them, BSP trees containing the static geometry of a scene are often used together with a Z-buffer, to correctly merge movable objects such as doors and characters onto the background scene. While binary space partitioning provides a convenient way to store and retrieve spatial information about polygons in a scene, it does not solve the problem of visible surface determination. BSP trees have also been applied to image compression.[14]

See also

edit

References

edit
  1. ^ a b Schumacker, R.A.; Brand, B.; Gilliland, M.G.; Sharp, W.H. (1969). Study for Applying Computer-Generated Images to Visual Simulation (Report). U.S. Air Force Human Resources Laboratory. AFHRL-TR-69-14.
  2. ^ a b c d e f g Fuchs, Henry; Kedem, Zvi. M; Naylor, Bruce F. (1980). "On Visible Surface Generation by A Priori Tree Structures" (PDF). SIGGRAPH '80 Proceedings of the 7th annual conference on Computer graphics and interactive techniques. ACM. pp. 124–133. doi:10.1145/965105.807481.
  3. ^ a b Thibault, William C.; Naylor, Bruce F. (1987). "Set operations on polyhedra using binary space partitioning trees". SIGGRAPH '87 Proceedings of the 14th annual conference on Computer graphics and interactive techniques. ACM. pp. 153–162. doi:10.1145/37402.37421.
  4. ^ Etherington, Thomas R.; Morgan, Fraser J.; O’Sullivan, David (2022). "Binary space partitioning generates hierarchical and rectilinear neutral landscape models suitable for human-dominated landscapes". Landscape Ecology. 37 (7): 1761–1769. Bibcode:2022LaEco..37.1761E. doi:10.1007/s10980-022-01452-6.
  5. ^ Naylor, Bruce (May 1981). A Priori Based Techniques for Determining Visibility Priority for 3-D Scenes (Ph.D. thesis). University of Texas at Dallas. Retrieved June 5, 2025.
  6. ^ Fuchs, Henry; Abram, Gregory D.; Grant, Eric D. (1983). "Near real-time shaded display of rigid objects". Proceedings of the 10th annual conference on Computer graphics and interactive techniques. ACM. pp. 65–72. doi:10.1145/800059.801134. ISBN 978-0-89791-109-2.
  7. ^ Naylor, Bruce; Amanatides, John; Thibault, William (August 1990). "Merging BSP Trees Yields Polyhedral Set Operations". ACM SIGGRAPH Computer Graphics. 24 (4). Association of Computing Machinery: 115–124. CiteSeerX 10.1.1.69.292. doi:10.1145/97880.97892. Retrieved June 5, 2025.
  8. ^ Teller, Seth J.; Séquin, Carlo H. (July 1, 1991). "Visibility preprocessing for interactive walkthroughs". ACM SIGGRAPH Computer Graphics. 25 (4). Association of Computing Machinery: 61–70. Retrieved June 5, 2025.
  9. ^ Chen, S.; Gordon, D. (October 1991). "Front-to-Back Display of BSP Trees". IEEE Computer Graphics and Applications. 11 (5): 79–85. doi:10.1109/38.90569. S2CID 19056967.
  10. ^ Teller, Seth (1992). Visibility computations in densely occluded polyhedral environments (Ph.D. thesis). University of California at Berkeley. Retrieved June 5, 2025.
  11. ^ Naylor, Bruce (1993). "Constructing good partitioning trees" (PDF). Graphics Interface. Canadian Information Processing Society: 181–191. Retrieved June 5, 2025.
  12. ^ Radha, Hayder (1993). Efficient image representation using binary space partitioning trees (Ph.D. thesis). Columbia University. Retrieved June 5, 2025.
  13. ^ Naylor, Bruce (January 2005). "A Tutorial on Binary Space Partitioning Trees". ResearchGate. Retrieved July 1, 2025.
  14. ^ Radha, H.; Vetterli, M.; Leonardi, R. (1996). "Image compression using binary space partitioning trees" (PDF). IEEE Transactions on Image Processing. 5 (12): 1610–1624. Bibcode:1996ITIP....5.1610R. doi:10.1109/83.544569. PMID 18290079.

Additional references

edit
edit
下巴长硬包是什么原因 高血脂吃什么药效果好 东风破是什么意思 手指伸不直是什么原因 独生子女证有什么用
五心烦热失眠手脚心发热吃什么药 女生适合喝什么茶 卯宴席是什么意思 eft是什么意思 精子发黄是什么原因
胃不舒服吃什么药好 小孩嘴唇发白是什么原因 月子里可以吃什么水果 十月二十五是什么星座 蝙蝠属于什么动物
郭德纲什么学历 脸上长小疙瘩是什么原因 术后恢复吃什么好 风热感冒吃什么水果 id是什么意思的缩写
湖北有什么好玩的zhongyiyatai.com 什么样的春天hcv9jop8ns2r.cn 甲肝是什么病hcv7jop7ns4r.cn 两腿抽筋是什么原因hcv7jop4ns5r.cn 老感冒是什么原因gysmod.com
什么药可以降肌酐hcv8jop1ns7r.cn 子宫形态不规则是什么意思hcv7jop6ns9r.cn 失能是什么意思hcv8jop5ns8r.cn 什么是膜性肾病hcv9jop3ns0r.cn nb什么意思shenchushe.com
四维是检查什么xianpinbao.com degaia是什么牌子hcv9jop1ns6r.cn 头发不长是什么原因96micro.com 溜号是什么意思hcv7jop5ns4r.cn 什么什么如什么hcv7jop9ns4r.cn
盐酸安罗替尼胶囊主要治疗什么hcv8jop6ns9r.cn 为什么气血不足wmyky.com 人造奶油是什么做的hcv9jop4ns6r.cn 帕金森病是什么原因引起的hcv9jop8ns0r.cn 肾上腺彩超是检查什么bfb118.com
百度