OBD:PLEA: Difference between revisions

From OniGalore
Jump to navigation Jump to search
m (inequation)
m (design)
Line 1: Line 1:
{{OBD_File_Header|align=center|type=PLEA|prev=OTLF|next=PNTA|name=Plane Equation Array|family=Level|onistuff=plea}}
{{OBD_File_Header | type=PLEA | prev=OTLF | next=PNTA | name=Plane Equation Array | family=Level | align=center}}
----
 
 
[[image:plea_a.gif]]


http://www6.fh-eberswalde.de/user/dkriesch/onistuff/images/plea_a.gif


{|{{OBDtable}}
{{Table}}
|align=center|
{{OBDth}}
{|{{OBDtable}}
{{OBDtr| 0x00 | res_id  |FF0000| 01 41 02 00 | 577   | 00577-.PLEA }}
|-BGCOLOR="#FFDDBB"
{{OBDtr| 0x04 | lev_id  |FFFF00| 01 00 00 06 | 3     | level 3 }}
! WIDTH=15% | <B>Hex</B>
{{OBDtr| 0x08 | char[20] |00FF00| AD DE       | dead | unused }}
! WIDTH=15% | <B>Translation</B>
{{OBDtr| 0x1C | int32    |00FFFF| 03 00 00 00 | 13554 | array size }}
! WIDTH=70% | <B>Meaning</B>
{{OBDtrBK}}
|-
{{OBDtr| 0x00 | float    |FFC8C8| 00 00 00 00 | 0.000000 | 1st coefficient of the plane equation (x-part of normal vector) }}
| BGCOLOR="#FF0000" | 01 41 02 00
{{OBDtr| 0x04 | float    |FFFFC8| 00 00 00 00 | 0.000000 | 2nd coefficient of the plane equation (y-part of normal vector) }}
| 577
{{OBDtr| 0x08 | float    |C8FFC8| 00 00 80 3F | 1.000000 | 3rd coefficient of the plane equation (z-part of normal vector) }}
| ALIGN=LEFT | 00577-.PLEA
{{OBDtr| 0x0C | float    |C8FFFF| 00 00 19 44 |612.000000| 4th coefficient of the plane equation }}
|-
| BGCOLOR="#FFFF00" | 01 00 00 06
| 3
| ALIGN=LEFT | level 3
|-
| BGCOLOR="#00FF00" | AD DE
| dead
| ALIGN=LEFT | not used
|-
| BGCOLOR="#00FFFF" | F2 34 00 00
| 13554
| ALIGN=LEFT | 13554 packages follow (first package outlined in black)
|-
| BGCOLOR="#000000" COLSPAN=3 | <FONT COLOR="#FFFFFF">First package (i.e., plane equation) follows</FONT>
|-
| BGCOLOR="#FFC8C8" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | first coefficient of the plane equation
|-
| BGCOLOR="#FFFFC8" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | second coefficient of the plane equation
|-
| BGCOLOR="#C8FFC8" | 00 00 80 3F
| 1.000000
| ALIGN=LEFT | third coefficient of the plane equation
|-
| BGCOLOR="#C8FFFF" | 00 00 19 44
| 612.000000
| ALIGN=LEFT | fourth coefficient of the plane equation
|}
|}
|}
;Plane equation
;Plane equation
:The canonical equation for a [http://mathworld.wolfram.com/Plane.html plane] in 3D is :
:The canonical equation for a [http://mathworld.wolfram.com/Plane.html plane] in 3D is :
Line 61: Line 33:
::It's rather easy to check (just flip the "normal" of the plane equation for a known axis-aligned quad).
::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.
: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_Header|align=center|type=PLEA|prev=OTLF|next=PNTA|name=Plane Equation Array|family=Level|onistuff=plea}}
{{OBD_File_Footer|align=center|type=PLEA|prev=OTLF|next=PNTA|name=Plane Equation Array|family=Level|onistuff=plea}}

Revision as of 09:30, 12 September 2007

ONI BINARY DATA
OTLF << Other file types >> PNTA
PLEA : Plane Equation Array
switch to XML:PLEA page
Overview @ Oni Stuff
OBD.png


Plea a.gif


Offset Type Raw Hex Value Description
0x00 res_id 01 41 02 00 577 00577-.PLEA
0x04 lev_id 01 00 00 06 3 level 3
0x08 char[20] AD DE dead unused
0x1C int32 03 00 00 00 13554 array size
First element (black outline)
0x00 float 00 00 00 00 0.000000 1st coefficient of the plane equation (x-part of normal vector)
0x04 float 00 00 00 00 0.000000 2nd coefficient of the plane equation (y-part of normal vector)
0x08 float 00 00 80 3F 1.000000 3rd coefficient of the plane equation (z-part of normal vector)
0x0C float 00 00 19 44 612.000000 4th coefficient of the plane equation


Plane equation
The canonical equation for a plane in 3D is :
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.
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.
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 .
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.
ONI BINARY DATA
OTLF << Other file types >> PNTA
PLEA : Plane Equation Array
Level file


ONI BINARY DATA
OTLF << Other file types >> PNTA
PLEA : Plane Equation Array
switch to XML:PLEA page
Overview @ Oni Stuff
OBD.png