OBD:PLEA: Difference between revisions

700 bytes removed ,  13 February 2008
Cleanup
m (what the?)
(Cleanup)
Line 12: Line 12:
{{OBDtr| 0x1C | int32    |00FFFF| 03 00 00 00 | 13554 | array size }}
{{OBDtr| 0x1C | int32    |00FFFF| 03 00 00 00 | 13554 | array size }}
{{OBDtrBK}}
{{OBDtrBK}}
{{OBDtr| 0x00 | float    |FFC8C8| 00 00 00 00 | 0.000000 | 1st coefficient of the plane equation (x-part of normal vector) }}
{{OBDtr| 0x00 | float    |FFC8C8| 00 00 00 00 | 0.000000 | 'a' coefficient of the plane equation (x component of plane's normal) }}
{{OBDtr| 0x04 | float    |FFFFC8| 00 00 00 00 | 0.000000 | 2nd coefficient of the plane equation (y-part of normal vector) }}
{{OBDtr| 0x04 | float    |FFFFC8| 00 00 00 00 | 0.000000 | 'b' coefficient of the plane equation (y component of plane's normal) }}
{{OBDtr| 0x08 | float    |C8FFC8| 00 00 80 3F | 1.000000 | 3rd coefficient of the plane equation (z-part of normal vector) }}
{{OBDtr| 0x08 | float    |C8FFC8| 00 00 80 3F | 1.000000 | 'c' coefficient of the plane equation (z component of plane's normal) }}
{{OBDtr| 0x0C | float    |C8FFFF| 00 00 19 44 |612.000000| 4th coefficient of the plane equation }}
{{OBDtr| 0x0C | float    |C8FFFF| 00 00 19 44 |612.000000| 'd' coefficient of the plane equation }}
|}
|}


Line 23: Line 23:
::a * x + b * y + c * z + d = 0
::a * x + b * y + c * z + d = 0
:where (a, b, c, d) are 4 real numbers. The plane is the set of points (x, y, z) verifying that equation.
:where (a, b, c, d) are 4 real numbers. The plane is the set of points (x, y, z) verifying that equation.
:It is likely that the four floats in one of a PLEA's packages are exactly the (a, b, c, d) of the above definition.
:The four floats in one of a PLEA's packages are exactly the (a, b, c, d) of the above definition.
::In that case, the first package of the above example defines the plane (0 * x + 0 * y + 1 * z + 612 = 0), i.e., the vertical plane z = -612.
::In that case, the first package of the above example defines the plane (0 * x + 0 * y + 1 * z + 612 = 0), i.e., the vertical plane z = -612.
:It is possible, however, that the definition used is different, e.g. : a * x + b * y + c * z = d .
Planes are used for environment culling and collision detection.
::In that case, the first package of the above example defines the plane (0 * x + 0 * y + 1 * z = 612), i.e., the vertical plane z = 612.
;Front/back
:The 4 numbers (a, b, c, d) can also serve to define whether a 3D point (x, y, z) is on the "front" side of the plane or in the "back".
::"points are in front of the plane if a * x + b * y + c * z >= d" (from commented Myth source)
:That would mean the plane equation is a * x + b * y + c * z = d , ''not'' a * x + b * y + c * z + d = 0 .
::It's rather easy to check (just flip the "normal" of the plane equation for a known axis-aligned quad).
:The oriented "plane inequation" can be used for: culling; collision.
{{OBD_File_Footer | type=PLEA | prev=OTLF | next=PNTA | name=Plane Equation Array | family=Level}}
{{OBD_File_Footer | type=PLEA | prev=OTLF | next=PNTA | name=Plane Equation Array | family=Level}}
708

edits