Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
HTML
<style type="text/css">
/*
   This file was automatically generated using Doc-O-Matic.
*/

pre {
    margin-top : 0px;
    margin-bottom : 0px;
}

.TableDiv {
    width: 100%;
}

table.Table0 {
    width: 100%;
    font-size: 8pt;
}

table.Table1 {
    width: 100%;
    font-size: 8pt;
}

.Element901 {
    color: #000000;
    margin-left : 0px;
    margin-right : 0px;
    margin-top : 0px;
    margin-bottom : 0px;
    border-left-style : none;
    border-top-style : none;
    padding-right : 0px;
    border-right-width : 1px;
    border-right-color : #AAAEBD;
    border-right-style : solid;
    border-bottom-style : none;
    text-align : left;
    overflow: hidden;
}

.Element900 {
    color: #000000;
    margin-left : 0px;
    margin-right : 0px;
    margin-top : 0px;
    margin-bottom : 0px;
    border-left-style : none;
    border-top-style : none;
    padding-right : 0px;
    border-right-width : 1px;
    border-right-color : #AAAEBD;
    border-right-style : solid;
    border-bottom-style : none;
    text-align : left;
}

a.Element875, a:visited.Element875, a:hover.Element875 {
    color: #000000;
    background-color: #EEEEEE;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    padding-left : 2px;
    border-left-width : 1px;
    border-left-color : #999999;
    border-left-style : solid;
    padding-top : 0px;
    border-top-width : 1px;
    border-top-color : #999999;
    border-top-style : solid;
    padding-right : 2px;
    border-right-width : 1px;
    border-right-color : #999999;
    border-right-style : solid;
    padding-bottom : 0px;
    border-bottom-width : 1px;
    border-bottom-color : #999999;
    border-bottom-style : solid;
    text-align : left;
}

a.Element874, a:visited.Element874, a:hover.Element874 {
    color: #000000;
    background-color: #EEEEEE;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    padding-left : 2px;
    border-left-width : 1px;
    border-left-color : #999999;
    border-left-style : solid;
    padding-top : 1px;
    border-top-width : 1px;
    border-top-color : #999999;
    border-top-style : solid;
    padding-right : 2px;
    border-right-width : 1px;
    border-right-color : #999999;
    border-right-style : solid;
    padding-bottom : 1px;
    border-bottom-width : 1px;
    border-bottom-color : #999999;
    border-bottom-style : solid;
    text-align : left;
}

a:hover.Element862 {
    color: #000000;
    background-color: #EEEEEE;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    padding-left : 2px;
    border-left-width : 1px;
    border-left-color : #999999;
    border-left-style : solid;
    padding-top : 0px;
    border-top-width : 1px;
    border-top-color : #999999;
    border-top-style : solid;
    padding-right : 2px;
    border-right-width : 1px;
    border-right-color : #999999;
    border-right-style : solid;
    padding-bottom : 0px;
    border-bottom-width : 1px;
    border-bottom-color : #999999;
    border-bottom-style : solid;
    text-align : left;
}

a:hover.Element861 {
    color: #000000;
    background-color: #EEEEEE;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: italic;
    text-decoration: none;
    padding-left : 2px;
    border-left-width : 1px;
    border-left-color : #999999;
    border-left-style : solid;
    padding-top : 1px;
    border-top-width : 1px;
    border-top-color : #999999;
    border-top-style : solid;
    padding-right : 2px;
    border-right-width : 1px;
    border-right-color : #999999;
    border-right-style : solid;
    padding-bottom : 1px;
    border-bottom-width : 1px;
    border-bottom-color : #999999;
    border-bottom-style : solid;
    text-align : left;
}

a:hover.Element860 {
    color: #000000;
    background-color: #EEEEEE;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    padding-left : 2px;
    border-left-width : 1px;
    border-left-color : #999999;
    border-left-style : solid;
    padding-top : 1px;
    border-top-width : 1px;
    border-top-color : #999999;
    border-top-style : solid;
    padding-right : 2px;
    border-right-width : 1px;
    border-right-color : #999999;
    border-right-style : solid;
    padding-bottom : 1px;
    border-bottom-width : 1px;
    border-bottom-color : #999999;
    border-bottom-style : solid;
    text-align : left;
}

a:visited.Element862 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

a:visited.Element861 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: italic;
    text-decoration: none;
    text-align : left;
}

a:visited.Element860 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

a.Element862 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

a.Element861 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: italic;
    text-decoration: none;
    text-align : left;
}

a.Element860 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element862 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    margin-right : 0px;
    margin-top : 1px;
    margin-bottom : 1px;
    padding-left : 2px;
    border-left-width : 1px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 0px;
    border-top-width : 1px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 2px;
    border-right-width : 1px;
    border-right-color : #FFFFFF;
    border-right-style : solid;
    padding-bottom : 0px;
    border-bottom-width : 1px;
    border-bottom-color : #FFFFFF;
    border-bottom-style : solid;
    text-indent : 0px;
    text-align : left;
}

.Element861 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: italic;
    text-decoration: none;
    margin-left : 0px;
    margin-right : 0px;
    margin-top : 1px;
    margin-bottom : 1px;
    padding-left : 2px;
    border-left-width : 1px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 1px;
    border-top-width : 1px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 2px;
    border-right-width : 1px;
    border-right-color : #FFFFFF;
    border-right-style : solid;
    padding-bottom : 1px;
    border-bottom-width : 1px;
    border-bottom-color : #FFFFFF;
    border-bottom-style : solid;
    text-indent : 0px;
    text-align : left;
}

.Element860 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    margin-right : 0px;
    margin-top : 1px;
    margin-bottom : 1px;
    padding-left : 2px;
    border-left-width : 1px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 1px;
    border-top-width : 1px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 2px;
    border-right-width : 1px;
    border-right-color : #FFFFFF;
    border-right-style : solid;
    padding-bottom : 1px;
    border-bottom-width : 1px;
    border-bottom-color : #FFFFFF;
    border-bottom-style : solid;
    text-indent : 0px;
    text-align : left;
}

.Element851 {
    color: #000000;
    margin-left : 15px;
    margin-top : 0px;
    margin-bottom : 0px;
    text-align : left;
    white-space: nowrap;
}

.Element850 {
    color: #000000;
    margin-left : 7px;
    margin-top : 10px;
    text-align : left;
}

.Element810 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-top : 3px;
    text-align : left;
}

.Element801 {
    color: #000000;
    background-color: #EBF0FF;
    padding-left : 5px;
    border-left-width : 1px;
    border-left-color : #C8CDDE;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 1px;
    border-top-color : #C8CDDE;
    border-top-style : solid;
    padding-right : 5px;
    border-right-width : 1px;
    border-right-color : #C8CDDE;
    border-right-style : solid;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
    position: absolute;
    z-index: 10;
    visibility: hidden;
}

.Element800 {
    color: #000000;
    background-color: #EBF0FF;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element740 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-top : 3px;
    margin-bottom : 3px;
    text-align : left;
}

.Element731 {
    color: #000000;
    margin-left : 0px;
    margin-right : 0px;
    margin-top : 2px;
    margin-bottom : 3px;
    text-align : left;
}

.Element730 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    margin-right : 0px;
    margin-top : 0px;
    margin-bottom : 3px;
    padding-left : 15px;
    border-left-style : none;
    padding-top : 3px;
    border-top-width : 1px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 15px;
    border-right-style : none;
    border-bottom-style : none;
    text-align : left;
}

.Element721 {
    color: #000000;
    text-align : left;
}

.Element720 {
    color: #000000;
    text-align : left;
}

.Element710 {
    color: #000000;
    text-align : left;
    overflow: hidden;
}

.Element700 {
    color: #000000;
    margin-left : 0px;
    margin-right : 0px;
    margin-top : 0px;
    margin-bottom : 0px;
    text-align : left;
    overflow: hidden;
}

.Element639 {
    color: #000000;
    margin-top : 0px;
    margin-bottom : 0px;
    text-align : left;
}

.Element638 {
    color: #000000;
    margin-top : 0px;
    margin-bottom : 0px;
    text-align : left;
}

.Element637 {
    color: #000000;
    margin-top : 0px;
    margin-bottom : 0px;
    text-align : left;
}

.Element636 {
    color: #000000;
    margin-top : 0px;
    margin-bottom : 0px;
    text-align : left;
}

.Element635 {
    color: #000000;
    margin-top : 0px;
    margin-bottom : 0px;
    text-align : left;
}

.Element634 {
    color: #000000;
    margin-top : 0px;
    margin-bottom : 0px;
    text-align : left;
}

.Element633 {
    color: #000000;
    margin-top : 0px;
    margin-bottom : 0px;
    text-align : left;
}

.Element632 {
    color: #000000;
    margin-top : 0px;
    margin-bottom : 0px;
    text-align : left;
}

.Element631 {
    color: #000000;
    margin-top : 0px;
    margin-bottom : 0px;
    text-align : left;
}

.Element630 {
    color: #000000;
    margin-top : 10px;
    margin-bottom : 10px;
    text-align : left;
}

.Element609 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element608 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element607 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element606 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element605 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element604 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element603 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element602 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element601 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element600 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element315 {
    color: #000000;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : -7px;
    margin-top : 10px;
    margin-bottom : 5px;
    text-align : left;
}

.Element312 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    margin-top : 10px;
    margin-bottom : 10px;
    text-align : left;
}

.Element311 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element310 {
    color: #000000;
    margin-left : 15px;
    margin-top : 0px;
    text-align : left;
}

.Element309 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element308 {
    color: #000000;
    margin-top : 3px;
    text-align : left;
}

.Element307 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    margin-top : 3px;
    margin-bottom : 3px;
    text-align : left;
}

.Element306 {
    color: #000000;
    background-color: #F7F7FF;
    margin-top : 0px;
    margin-bottom : 0px;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element305 {
    color: #000066;
    background-color: #EFEFF7;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    text-align : left;
}

.Element304 {
    color: #000000;
    background-color: #EFEFF7;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element303 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    margin-top : 3px;
    margin-bottom : 3px;
    text-align : left;
}

.Element302 {
    color: #000000;
    background-color: #F7F7FF;
    margin-top : 0px;
    margin-bottom : 0px;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element301 {
    color: #000066;
    background-color: #EFEFF7;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    text-align : left;
}

.Element300 {
    color: #000000;
    background-color: #EFEFF7;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element295 {
    color: #000000;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : -7px;
    margin-top : 10px;
    margin-bottom : 5px;
    text-align : left;
}

.Element292 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    margin-top : 10px;
    margin-bottom : 10px;
    text-align : left;
}

.Element291 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element290 {
    color: #000000;
    margin-left : 15px;
    margin-top : 0px;
    text-align : left;
}

.Element289 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element288 {
    color: #000000;
    margin-top : 3px;
    text-align : left;
}

.Element287 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    margin-top : 3px;
    margin-bottom : 3px;
    text-align : left;
}

.Element286 {
    color: #000000;
    background-color: #F7F7FF;
    margin-top : 0px;
    margin-bottom : 0px;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element285 {
    color: #000066;
    background-color: #EFEFF7;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    text-align : left;
}

.Element284 {
    color: #000000;
    background-color: #EFEFF7;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element283 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    margin-top : 3px;
    margin-bottom : 3px;
    text-align : left;
}

.Element282 {
    color: #000000;
    background-color: #F7F7FF;
    margin-top : 0px;
    margin-bottom : 0px;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element281 {
    color: #000066;
    background-color: #EFEFF7;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    text-align : left;
}

.Element280 {
    color: #000000;
    background-color: #EFEFF7;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element275 {
    color: #000000;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : -7px;
    margin-top : 10px;
    margin-bottom : 5px;
    text-align : left;
}

.Element272 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    margin-top : 10px;
    margin-bottom : 10px;
    text-align : left;
}

.Element271 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element270 {
    color: #000000;
    margin-left : 15px;
    margin-top : 0px;
    text-align : left;
}

.Element269 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element268 {
    color: #000000;
    margin-top : 3px;
    text-align : left;
}

.Element267 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    margin-top : 3px;
    margin-bottom : 3px;
    text-align : left;
}

.Element266 {
    color: #000000;
    background-color: #F7F7FF;
    margin-top : 0px;
    margin-bottom : 0px;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element265 {
    color: #000066;
    background-color: #EFEFF7;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    text-align : left;
}

.Element264 {
    color: #000000;
    background-color: #EFEFF7;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element263 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    margin-top : 3px;
    margin-bottom : 3px;
    text-align : left;
}

.Element262 {
    color: #000000;
    background-color: #F7F7FF;
    margin-top : 0px;
    margin-bottom : 0px;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element261 {
    color: #000066;
    background-color: #EFEFF7;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    text-align : left;
}

.Element260 {
    color: #000000;
    background-color: #EFEFF7;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element255 {
    color: #000000;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : -7px;
    margin-top : 10px;
    margin-bottom : 5px;
    text-align : left;
}

.Element252 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    margin-top : 10px;
    margin-bottom : 10px;
    text-align : left;
}

.Element251 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element250 {
    color: #000000;
    margin-left : 15px;
    margin-top : 0px;
    text-align : left;
}

.Element249 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element248 {
    color: #000000;
    margin-top : 3px;
    text-align : left;
}

.Element247 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    margin-top : 3px;
    margin-bottom : 3px;
    text-align : left;
}

.Element246 {
    color: #000000;
    background-color: #F7F7FF;
    margin-top : 0px;
    margin-bottom : 0px;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element245 {
    color: #000066;
    background-color: #EFEFF7;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    text-align : left;
}

.Element244 {
    color: #000000;
    background-color: #EFEFF7;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element243 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    margin-top : 3px;
    margin-bottom : 3px;
    text-align : left;
}

.Element242 {
    color: #000000;
    background-color: #F7F7FF;
    margin-top : 0px;
    margin-bottom : 0px;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element241 {
    color: #000066;
    background-color: #EFEFF7;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    text-align : left;
}

.Element240 {
    color: #000000;
    background-color: #EFEFF7;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element235 {
    color: #000000;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : -7px;
    margin-top : 10px;
    margin-bottom : 5px;
    text-align : left;
}

.Element232 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    margin-top : 10px;
    margin-bottom : 10px;
    text-align : left;
}

.Element231 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element230 {
    color: #000000;
    margin-left : 15px;
    margin-top : 0px;
    text-align : left;
}

.Element229 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element228 {
    color: #000000;
    margin-top : 3px;
    text-align : left;
}

.Element227 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    margin-top : 3px;
    margin-bottom : 3px;
    text-align : left;
}

.Element226 {
    color: #000000;
    background-color: #F7F7FF;
    margin-top : 0px;
    margin-bottom : 0px;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element225 {
    color: #000066;
    background-color: #EFEFF7;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    text-align : left;
}

.Element224 {
    color: #000000;
    background-color: #EFEFF7;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element223 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    margin-top : 3px;
    margin-bottom : 3px;
    text-align : left;
}

.Element222 {
    color: #000000;
    background-color: #F7F7FF;
    margin-top : 0px;
    margin-bottom : 0px;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element221 {
    color: #000066;
    background-color: #EFEFF7;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    text-align : left;
}

.Element220 {
    color: #000000;
    background-color: #EFEFF7;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element215 {
    color: #000000;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : -7px;
    margin-top : 10px;
    margin-bottom : 5px;
    text-align : left;
}

.Element212 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    margin-top : 10px;
    margin-bottom : 10px;
    text-align : left;
}

.Element211 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element210 {
    color: #000000;
    margin-left : 15px;
    margin-top : 0px;
    text-align : left;
}

.Element209 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element208 {
    color: #000000;
    margin-top : 3px;
    text-align : left;
}

.Element207 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    margin-top : 3px;
    margin-bottom : 3px;
    text-align : left;
}

.Element206 {
    color: #000000;
    background-color: #F7F7FF;
    margin-top : 0px;
    margin-bottom : 0px;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element205 {
    color: #000066;
    background-color: #EFEFF7;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    text-align : left;
}

.Element204 {
    color: #000000;
    background-color: #EFEFF7;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element203 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    margin-top : 3px;
    margin-bottom : 3px;
    text-align : left;
}

.Element202 {
    color: #000000;
    background-color: #F7F7FF;
    margin-top : 0px;
    margin-bottom : 0px;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element201 {
    color: #000066;
    background-color: #EFEFF7;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    text-align : left;
}

.Element200 {
    color: #000000;
    background-color: #EFEFF7;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element190 {
    color: #000000;
    font-family: Arial,Helvetica,sans-serif;
    font-size: 14pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : 0px;
    margin-bottom : 9px;
    text-align : left;
}

.Element183 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 9pt;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-top : 10px;
    margin-bottom : 10px;
    border-left-style : none;
    border-top-style : none;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #D4DFFF;
    border-bottom-style : solid;
    text-align : left;
}

.Element182 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    margin-top : 10px;
    margin-bottom : 10px;
    text-align : center;
}

.Element181 {
    color: #000000;
    text-align : left;
}

.Element180 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : 0px;
    margin-bottom : 10px;
    text-align : left;
}

.Element170 {
    color: #000066;
    background-color: #EFEFF7;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-top : 3px;
    margin-bottom : 0px;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 2px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 2px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : right;
}

.Element161 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : -7px;
    margin-bottom : 12px;
    text-align : left;
}

.Element160 {
    color: #000000;
    font-family: Arial,Helvetica,sans-serif;
    font-size: 14pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : 0px;
    margin-bottom : 9px;
    text-align : left;
}

.Element153 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : -7px;
    margin-bottom : 12px;
    text-align : left;
}

.Element152 {
    color: #000000;
    font-family: Arial,Helvetica,sans-serif;
    font-size: 14pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : 0px;
    margin-bottom : 9px;
    text-align : left;
}

.Element151 {
    color: #000000;
    margin-left : 15px;
    margin-top : 3px;
    text-align : left;
    white-space: pre;
}

.Element150 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-top : 0px;
    text-align : left;
    white-space: pre;
}

.Element146 {
    font-family: Courier New,Courier,monospace;
    font-size: 8pt;
}

.Element145 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
}

a:visited {
    color: #0000FF;
    font-style: normal;
    text-decoration: underline;
}

a:hover {
    color: #3366FF;
    font-style: normal;
    text-decoration: underline;
}

a {
    color: #0000FF;
    font-style: normal;
    text-decoration: underline;
}

.Element103 {
    color: #000000;
    margin-left : 15px;
    margin-top : 3px;
    margin-bottom : 3px;
    text-align : left;
    white-space: pre;
}

.Element102 {
    color: #000000;
    background-color: #DDDDDD;
    font-style: normal;
    text-decoration: none;
    text-align : left;
    white-space: pre;
}

.Element101 {
    color: #000000;
    background-color: #F7F7FF;
    margin-left : 15px;
    margin-top : 0px;
    margin-bottom : 10px;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
    white-space: pre;
}

.Element100 {
    color: #000000;
    font-family: Courier New,Courier,monospace;
    font-size: 9pt;
    font-style: normal;
    text-decoration: none;
    text-align : left;
    white-space: pre;
}

.Element99 {
    color: #000066;
    background-color: #EFEFF7;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-top : 10px;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 0px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 0px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.a_Element99 {
    color: #000066;
    background-color: #EFEFF7;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
}

.Element97 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 7pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : 5px;
    margin-bottom : 0px;
    text-align : left;
}

.Element96 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 3px;
    margin-right : 15px;
    margin-top : 2px;
    margin-bottom : 2px;
    text-align : right;
}

.Element95 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : 10px;
    margin-bottom : 10px;
    border-left-style : none;
    padding-top : 5px;
    border-top-width : 1px;
    border-top-color : #C8CDDE;
    border-top-style : solid;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element94 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    margin-right : 0px;
    margin-top : 0px;
    margin-bottom : 0px;
    padding-left : 15px;
    border-left-style : none;
    padding-top : 5px;
    border-top-style : none;
    padding-right : 15px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element93 {
    color: #000000;
    margin-left : 0px;
    margin-right : 15px;
    margin-top : 20px;
    margin-bottom : 0px;
    border-left-style : none;
    padding-top : 10px;
    border-top-width : 1px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    border-right-style : none;
    border-bottom-style : none;
    text-align : left;
    background-image: url("footer-bkg-whitegradient.gif");
    background-repeat: repeat-x;
    background-position: top left;
}

.Element92 {
    color: #000000;
    background-color: #FFFFFF;
    border-left-style : none;
    border-top-style : none;
    border-right-style : none;
    padding-bottom : 0px;
    border-bottom-width : 1px;
    border-bottom-color : #FFFFFF;
    border-bottom-style : solid;
    text-align : left;
    background-image: url("header-bkg-whitegradient.gif");
    background-repeat: repeat-x;
    background-position: bottom left;
}

.Element91 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 7pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : 5px;
    margin-bottom : 0px;
    text-align : left;
}

.Element90 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 3px;
    margin-right : 15px;
    margin-top : 2px;
    margin-bottom : 2px;
    text-align : right;
    white-space: nowrap;
}

.Element86 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : justify;
}

.Element85 {
    color: #000000;
    background-color: #F7F7FF;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : justify;
}

.Element84 {
    color: #000066;
    background-color: #EFEFF7;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    text-align : justify;
}

.Element83 {
    color: #000000;
    background-color: #EFEFF7;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : justify;
}

.Element82 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : right;
}

.Element81 {
    color: #000000;
    background-color: #F7F7FF;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : right;
}

.Element80 {
    color: #000066;
    background-color: #EFEFF7;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    text-align : right;
}

.Element79 {
    color: #000000;
    background-color: #EFEFF7;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : right;
}

.Element78 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : center;
}

.Element77 {
    color: #000000;
    background-color: #F7F7FF;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : center;
}

.Element76 {
    color: #000066;
    background-color: #EFEFF7;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    text-align : center;
}

.Element75 {
    color: #000000;
    background-color: #EFEFF7;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : center;
}

.Element68 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    text-align : left;
}

.Element67 {
    color: #000000;
    background-color: #F7F7FF;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element66 {
    color: #000066;
    background-color: #EFEFF7;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    text-align : left;
}

.Element65 {
    color: #000000;
    background-color: #EFEFF7;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element63 {
    color: #000000;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-top : 10px;
    margin-bottom : 10px;
    text-align : left;
}

.Element62 {
    color: #000066;
    background-color: #EFEFF7;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 0px;
    margin-right : 0px;
    margin-top : 10px;
    margin-bottom : 10px;
    padding-left : 15px;
    border-left-width : 1px;
    border-left-color : #C8CDDE;
    border-left-style : solid;
    padding-top : 15px;
    border-top-width : 1px;
    border-top-color : #C8CDDE;
    border-top-style : solid;
    padding-right : 15px;
    border-right-width : 1px;
    border-right-color : #C8CDDE;
    border-right-style : solid;
    padding-bottom : 15px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element61 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
}

.Element58 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : 3px;
    margin-bottom : 3px;
    text-align : left;
}

.Element57 {
    color: #000000;
    margin-left : 0px;
    margin-right : 0px;
    margin-top : 0px;
    margin-bottom : 0px;
    text-align : left;
}

.Element56 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-weight: normal;
    font-style: normal;
    text-decoration: none;
    text-align : center;
}

.Element55 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 20pt;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-top : 100px;
    margin-bottom : 100px;
    text-align : center;
}

.Element54 {
    color: #000000;
    background-color: #FFFFFF;
    margin-top : 50px;
    text-align : left;
    background-image: url("CRYENGINE3_bg.jpg");
    background-position: top left;
    background-repeat: no-repeat;
}

.Element50 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 30px;
    margin-top : 3px;
    text-align : left;
}

.Element49 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-top : 3px;
    text-align : left;
}

.Element48 {
    color: #000066;
    background-color: #EFEFF7;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 11pt;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : 7px;
    margin-top : 10px;
    margin-bottom : 3px;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
}

.Element40 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : -7px;
    margin-bottom : 12px;
    text-align : left;
}

.Element39 {
    color: #000000;
    font-family: Arial,Helvetica,sans-serif;
    font-size: 14pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : 0px;
    margin-bottom : 9px;
    text-align : left;
}

.Element37 {
    color: #000000;
    font-family: Arial,Helvetica,sans-serif;
    font-size: 14pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : 0px;
    margin-bottom : 9px;
    text-align : left;
}

.Element35 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : -7px;
    margin-bottom : 12px;
    text-align : left;
}

.Element34 {
    color: #000000;
    font-family: Arial,Helvetica,sans-serif;
    font-size: 14pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : 0px;
    margin-bottom : 9px;
    text-align : left;
}

.Element28 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : -7px;
    margin-bottom : 12px;
    text-align : left;
}

.Element27 {
    color: #000000;
    font-family: Arial,Helvetica,sans-serif;
    font-size: 14pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : 0px;
    margin-bottom : 9px;
    text-align : left;
}

.Element25 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-top : 3px;
    margin-bottom : 10px;
    text-align : left;
}

.Element15 {
    color: #000000;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-left : -15px;
    margin-top : 10px;
    margin-bottom : 5px;
    text-align : left;
}

.Element14 {
    color: #4E69AB;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 11pt;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
    margin-top : 20px;
    margin-bottom : 20px;
    text-align : left;
}

.a_Element14 {
    color: #4E69AB;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 11pt;
    font-weight: bold;
    font-style: normal;
    text-decoration: none;
}

.Element13 {
    color: #000000;
    background-color: #F7F7FF;
    margin-left : 15px;
    margin-top : 0px;
    margin-bottom : 3px;
    padding-left : 6px;
    border-left-width : 2px;
    border-left-color : #FFFFFF;
    border-left-style : solid;
    padding-top : 5px;
    border-top-width : 2px;
    border-top-color : #FFFFFF;
    border-top-style : solid;
    padding-right : 6px;
    border-right-style : none;
    padding-bottom : 5px;
    border-bottom-width : 1px;
    border-bottom-color : #C8CDDE;
    border-bottom-style : solid;
    text-align : left;
    white-space: pre;
}

.Element12 {
    color: #000000;
    font-family: Courier New,Courier,monospace;
    font-style: normal;
    text-decoration: none;
    text-align : left;
    white-space: pre;
}

.Element11 {
    color: #000000;
    margin-left : 15px;
    margin-top : 10px;
    text-align : left;
}

.Element10 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-top : 10px;
    margin-bottom : 10px;
    text-align : left;
}

.Element9 {
    color: #000000;
    margin-left : 15px;
    margin-top : 10px;
    text-align : left;
}

.Element8 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-top : 10px;
    text-align : left;
}

.Element7 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : -7px;
    margin-bottom : 12px;
    text-align : left;
}

.Element6 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 14pt;
    font-style: normal;
    text-decoration: none;
    margin-top : 10px;
    border-left-style : none;
    padding-top : 3px;
    border-top-width : 2px;
    border-top-color : #949494;
    border-top-style : solid;
    border-right-style : none;
    border-bottom-style : none;
    text-align : left;
}

.Element5 {
    color: #000000;
    font-family: Arial,Helvetica,sans-serif;
    font-size: 15pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : 0px;
    margin-bottom : 9px;
    text-align : left;
}

.Element4 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 7pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : 5px;
    margin-bottom : 0px;
    text-align : left;
}

.Element3 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 7pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 15px;
    margin-top : 5px;
    margin-bottom : 0px;
    text-align : left;
}

.Element2 {
    color: #000000;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 8pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 3px;
    margin-right : 3px;
    margin-top : 2px;
    margin-bottom : 2px;
    text-align : center;
    white-space: nowrap;
}

.Element1 {
    color: #8C8C8C;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size: 7pt;
    font-style: normal;
    text-decoration: none;
    margin-left : 15px;
    margin-right : 3px;
    margin-top : 3px;
    margin-bottom : 0px;
    text-align : left;
}

</style>




<!-- Begin Popups -->

<!-- End Popups -->

<!-- Begin Page Header -->
<div class="Element710" id="areafixed">
<div class="Element94">
<em>You are here:</em> <a href="Common_Ref">Common</a> &gt; <a href="Math_Ref">Math</a> &gt; <a href="Vec3_tpl">Vec3_tpl Structure</a></div>
<div class="Element5">
Vec3_tpl Structure</div>
</div>

<!-- End Page Header -->

<!-- Begin Client Area -->
<div class="Element720" id="areascroll">
<div class="Element721">

<!-- Begin Page Content -->
<div class="Element58">
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">typename</span></strong> F&gt;
<strong><span style="color: #871F78">struct</span></strong> <strong><span style="color: #660000">Vec3_tpl</span></strong> {
  F <strong><span style="color: #660000"><a href="Vec3_tpl#006F">x</a></span></strong>, <a href="Vec3_tpl#0070">y</a>, <a href="Vec3_tpl#0071">z</a>;
  <strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">typename</span></strong> F&gt;
<strong><span style="color: #871F78">struct</span></strong> <strong><span style="color: #660000"><a href="Vec3_tpl#0011">Ang3_tpl</a></span></strong> {
    F <strong><span style="color: #660000"><a href="Vec3_tpl#006F">x</a></span></strong>, <a href="Vec3_tpl#0070">y</a>, <a href="Vec3_tpl#0071">z</a>;
    <strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">typename</span></strong> F&gt;
<strong><span style="color: #871F78">struct</span></strong> <strong><span style="color: #660000">AngleAxis_tpl</span></strong> {
      F <strong><span style="color: #660000">angle</span></strong>;
      Vec3_tpl&lt;F&gt; <strong><span style="color: #660000">axis</span></strong>;
    };
    <strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">typename</span></strong> F&gt;
<strong><span style="color: #871F78">struct</span></strong> <strong><span style="color: #660000">Plane_tpl</span></strong> {
      Vec3_tpl&lt;F&gt; <strong><span style="color: #660000">n</span></strong>;
      F <strong><span style="color: #660000">d</span></strong>;
    };
  };
};</pre></div></div>
<a name="46696C65"></a><div class="Element14">
File</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
Cry_Vector3.h</p></div>
</div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
class Vec3_tpl</p></div>
</div>
<div class="Element6">
<a name="0011"></a>Vec3_tpl::Ang3_tpl Structure</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">typename</span></strong> F&gt;
<strong><span style="color: #871F78">struct</span></strong> <strong><span style="color: #660000">Ang3_tpl</span></strong> {
  F <strong><span style="color: #660000"><a href="Vec3_tpl#004E">x</a></span></strong>, <a href="Vec3_tpl#004F">y</a>, <a href="Vec3_tpl#0050">z</a>;
  <strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">typename</span></strong> F&gt;
<strong><span style="color: #871F78">struct</span></strong> <strong><span style="color: #660000"><a href="Vec3_tpl#0026">AngleAxis_tpl</a></span></strong> {
    F <strong><span style="color: #660000">angle</span></strong>;
    <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; <strong><span style="color: #660000">axis</span></strong>;
  };
  <strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">typename</span></strong> F&gt;
<strong><span style="color: #871F78">struct</span></strong> <strong><span style="color: #660000"><a href="Vec3_tpl#0032">Plane_tpl</a></span></strong> {
    <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; <strong><span style="color: #660000">n</span></strong>;
    F <strong><span style="color: #660000">d</span></strong>;
  };
};</pre></div></div>
<a name="46696C65"></a><div class="Element14">
File</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
Cry_Vector3.h</p></div>
</div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
struct Ang3_tpl</p></div>
</div>
<div class="Element6">
<a name="0026"></a>Vec3_tpl::Ang3_tpl::AngleAxis_tpl Structure</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">typename</span></strong> F&gt;
<strong><span style="color: #871F78">struct</span></strong> <strong><span style="color: #660000">AngleAxis_tpl</span></strong> {
  F <strong><span style="color: #660000"><a href="Vec3_tpl#0029">angle</a></span></strong>;
  <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; <strong><span style="color: #660000"><a href="Vec3_tpl#002F">axis</a></span></strong>;
};</pre></div></div>
<a name="46696C65"></a><div class="Element14">
File</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
Cry_Vector3.h</p></div>
</div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
struct CAngleAxis</p></div>
</div>
<div class="Element6">
<a name="0029"></a>Vec3_tpl::Ang3_tpl::AngleAxis_tpl::angle Data Member</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100">F <strong><span style="color: #660000">angle</span></strong>;</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
! storage for the Angle&amp;Axis coordinates.</p></div>
</div>
<div class="Element6">
<a name="002F"></a>Vec3_tpl::Ang3_tpl::AngleAxis_tpl::axis Data Member</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; <strong><span style="color: #660000">axis</span></strong>;</pre></div></div>
<div class="Element6">
<a name="0027"></a>Vec3_tpl::Ang3_tpl::AngleAxis_tpl::() Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">void</span></strong> <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">()</span></strong>(F <strong><span style="color: #660000">a</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">n</span></strong>);</pre></div></div>
<div class="Element6">
<a name="0028"></a>Vec3_tpl::Ang3_tpl::AngleAxis_tpl::* Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">*</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; <strong><span style="color: #660000">v</span></strong>) <strong><span style="color: #871F78">const</span></strong>;</pre></div></div>
<div class="Element6">
<a name="002A"></a>Vec3_tpl::Ang3_tpl::AngleAxis_tpl::AngleAxis_tpl Constructor ()</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #660000">AngleAxis_tpl</span></strong>();
<strong><span style="color: #660000">AngleAxis_tpl</span></strong>(F <strong><span style="color: #660000">a</span></strong>, F <strong><span style="color: #660000">ax</span></strong>, F <strong><span style="color: #660000">ay</span></strong>, F <strong><span style="color: #660000">az</span></strong>);
<strong><span style="color: #660000">AngleAxis_tpl</span></strong>(F <strong><span style="color: #660000">a</span></strong>, <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">n</span></strong>);
<strong><span style="color: #660000">AngleAxis_tpl</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Quat_tpl">Quat_tpl</a>&lt;F&gt;&amp; <strong><span style="color: #660000">q</span></strong>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
default quaternion constructor</p></div>
</div>
<div class="Element6">
<a name="002B"></a>Vec3_tpl::Ang3_tpl::AngleAxis_tpl::AngleAxis_tpl Constructor (AngleAxis_tpl&lt;F&gt;&amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #660000">AngleAxis_tpl</span></strong>(<strong><span style="color: #871F78">const</span></strong> AngleAxis_tpl&lt;F&gt;&amp; <strong><span style="color: #660000">aa</span></strong>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
CAngleAxis aa=angleaxis</p></div>
</div>
<div class="Element6">
<a name="0032"></a>Vec3_tpl::Ang3_tpl::Plane_tpl Structure</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">typename</span></strong> F&gt;
<strong><span style="color: #871F78">struct</span></strong> <strong><span style="color: #660000">Plane_tpl</span></strong> {
  <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; <strong><span style="color: #660000"><a href="Vec3_tpl#003F">n</a></span></strong>;
  F <strong><span style="color: #660000"><a href="Vec3_tpl#003C">d</a></span></strong>;
};</pre></div></div>
<a name="46696C65"></a><div class="Element14">
File</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
Cry_Vector3.h</p></div>
</div>
<div class="Element6">
<a name="003C"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::d Data Member</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100">F <strong><span style="color: #660000">d</span></strong>;</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
!&lt; distance</p></div>
</div>
<div class="Element6">
<a name="003F"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::n Data Member</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; <strong><span style="color: #660000">n</span></strong>;</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
!&lt; normal</p></div>
</div>
<div class="Element6">
<a name="0035"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::- Operator ()</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><a href="Vec3_tpl#0032">Plane_tpl</a>&lt;F&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">-</span></strong>() <strong><span style="color: #871F78">const</span></strong>;</pre></div></div>
<div class="Element6">
<a name="0036"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::- Operator (Plane_tpl&lt;F&gt; &amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><a href="Vec3_tpl#0032">Plane_tpl</a>&lt;F&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">-</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0032">Plane_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">p</span></strong>) <strong><span style="color: #871F78">const</span></strong>;</pre></div></div>
<div class="Element6">
<a name="0033"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::* Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><a href="Vec3_tpl#0032">Plane_tpl</a>&lt;F&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">*</span></strong>(F <strong><span style="color: #660000">s</span></strong>) <strong><span style="color: #871F78">const</span></strong>;</pre></div></div>
<div class="Element6">
<a name="0034"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::/ Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><a href="Vec3_tpl#0032">Plane_tpl</a>&lt;F&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">/</span></strong>(F <strong><span style="color: #660000">s</span></strong>) <strong><span style="color: #871F78">const</span></strong>;</pre></div></div>
<div class="Element6">
<a name="0037"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::| Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100">F <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">|</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">point</span></strong>) <strong><span style="color: #871F78">const</span></strong>;</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
!</p>
<ul class="Element630">
<li class="Element600">Computes signed distance from point to plane.</li>
<li class="Element600">This is the standard plane-equation: <a href="Vec3_tpl#003C">d</a>=Ax*By*Cz+D.</li>
<li class="Element600">The normal-<a href="vector">vector</a> is assumed to be normalized.</li>
</ul><p class="Element10">
*</p>
<ul class="Element630">
<li class="Element600">Example:</li>
<li class="Element600"><a href="Vec3_tpl#0059">Vec3</a> v(1,2,3);</li>
<li class="Element600"><a href="Vec3_tpl#0032">Plane_tpl</a>plane=CalculatePlane(v0,v1,v2);</li>
<li class="Element600">f32 distance = plane|v;</li>
</ul></div>
</div>
<div class="Element6">
<a name="0038"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::+ Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><a href="Vec3_tpl#0032">Plane_tpl</a>&lt;F&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">+</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0032">Plane_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">p</span></strong>) <strong><span style="color: #871F78">const</span></strong>;</pre></div></div>
<div class="Element6">
<a name="0039"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::-= Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">void</span></strong> <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">-=</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0032">Plane_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">p</span></strong>);</pre></div></div>
<div class="Element6">
<a name="003A"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::CreatePlane Method (Vec3_tpl&lt;F&gt; &amp;, Vec3_tpl&lt;F&gt; &amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">static</span></strong> <a href="Vec3_tpl#0032">Plane_tpl</a>&lt;F&gt; <strong><span style="color: #660000">CreatePlane</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">normal</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">point</span></strong>);</pre></div></div>
<div class="Element6">
<a name="003B"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::CreatePlane Method (Vec3_tpl&lt;F&gt; &amp;, Vec3_tpl&lt;F&gt; &amp;, Vec3_tpl&lt;F&gt; &amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">static</span></strong> <a href="Vec3_tpl#0032">Plane_tpl</a>&lt;F&gt; <strong><span style="color: #660000">CreatePlane</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">v0</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">v1</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">v2</span></strong>);</pre></div></div>
<div class="Element6">
<a name="003D"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::DistFromPlane Method</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100">F <strong><span style="color: #660000">DistFromPlane</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">vPoint</span></strong>) <strong><span style="color: #871F78">const</span></strong>;</pre></div></div>
<div class="Element6">
<a name="0041"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::Plane_tpl Constructor ()</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #660000">Plane_tpl</span></strong>();</pre></div></div>
<div class="Element6">
<a name="0042"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::Plane_tpl Constructor (Plane_tpl&lt;F&gt; &amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #660000">Plane_tpl</span></strong>(<strong><span style="color: #871F78">const</span></strong> Plane_tpl&lt;F&gt; &amp; <strong><span style="color: #660000">p</span></strong>);</pre></div></div>
<div class="Element6">
<a name="0043"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::Plane_tpl Constructor (Vec3_tpl&lt;F&gt; &amp;, F &amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #660000">Plane_tpl</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">normal</span></strong>, <strong><span style="color: #871F78">const</span></strong> F &amp; <strong><span style="color: #660000">distance</span></strong>);</pre></div></div>
<div class="Element6">
<a name="0046"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::Set Method</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">void</span></strong> <strong><span style="color: #660000">Set</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">vNormal</span></strong>, <strong><span style="color: #871F78">const</span></strong> F <strong><span style="color: #660000">fDist</span></strong>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
! <a href="set">set</a> normal and dist for this plane and then calculate plane type</p></div>
</div>
<div class="Element6">
<a name="0047"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::SetPlane Method (Vec3_tpl&lt;F&gt; &amp;, Vec3_tpl&lt;F&gt; &amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">void</span></strong> <strong><span style="color: #660000">SetPlane</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">normal</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">point</span></strong>);</pre></div></div>
<div class="Element6">
<a name="0048"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::SetPlane Method (Vec3_tpl&lt;F&gt; &amp;, Vec3_tpl&lt;F&gt; &amp;, Vec3_tpl&lt;F&gt; &amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">void</span></strong> <strong><span style="color: #660000">SetPlane</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">v0</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">v1</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">v2</span></strong>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
!</p>
<ul class="Element630">
<li class="Element600">Constructs the plane by tree given Vec3s (=triangle) with a right-hand (anti-clockwise) winding</li>
</ul><p class="Element10">
*</p>
<ul class="Element630">
<li class="Element600">Example 1:</li>
<li class="Element600"><a href="Vec3_tpl#0059">Vec3</a> v0(1,2,3),v1(4,5,6),v2(6,5,6);</li>
<li class="Element600"><a href="Vec3_tpl#0032">Plane_tpl</a>plane;</li>
<li class="Element600">plane.SetPlane(v0,v1,v2);</li>
</ul><p class="Element10">
*</p>
<ul class="Element630">
<li class="Element600">Example 2:</li>
<li class="Element600"><a href="Vec3_tpl#0059">Vec3</a> v0(1,2,3),v1(4,5,6),v2(6,5,6);</li>
<li class="Element600"><a href="Vec3_tpl#0032">Plane_tpl</a>plane=<a href="Vec3_tpl#0032">Plane_tpl</a>::<a href="Vec3_tpl#003A">CreatePlane</a>(v0,v1,v2);</li>
</ul></div>
</div>
<div class="Element6">
<a name="0049"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::Vec3Constants&lt;T&gt;::fVec3_One Method</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">typename</span></strong> T&gt; <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;T&gt; <strong><span style="color: #660000"><a href="Vec3Constants">Vec3Constants</a>&lt;T&gt;::fVec3_One</span></strong>(1, 1, 1);</pre></div></div>
<div class="Element6">
<a name="004A"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::Vec3Constants&lt;T&gt;::fVec3_OneX Method</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">typename</span></strong> T&gt; <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;T&gt; <strong><span style="color: #660000"><a href="Vec3Constants">Vec3Constants</a>&lt;T&gt;::fVec3_OneX</span></strong>(1, 0, 0);</pre></div></div>
<div class="Element6">
<a name="004B"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::Vec3Constants&lt;T&gt;::fVec3_OneY Method</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">typename</span></strong> T&gt; <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;T&gt; <strong><span style="color: #660000"><a href="Vec3Constants">Vec3Constants</a>&lt;T&gt;::fVec3_OneY</span></strong>(0, 1, 0);</pre></div></div>
<div class="Element6">
<a name="004C"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::Vec3Constants&lt;T&gt;::fVec3_OneZ Method</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">typename</span></strong> T&gt; <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;T&gt; <strong><span style="color: #660000"><a href="Vec3Constants">Vec3Constants</a>&lt;T&gt;::fVec3_OneZ</span></strong>(0, 0, 1);</pre></div></div>
<div class="Element6">
<a name="004D"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::Vec3Constants&lt;T&gt;::fVec3_Zero Method</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">typename</span></strong> T&gt; <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;T&gt; <strong><span style="color: #660000"><a href="Vec3Constants">Vec3Constants</a>&lt;T&gt;::fVec3_Zero</span></strong>(0, 0, 0);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
define the constants</p></div>
</div>
<div class="Element6">
<a name="003E"></a>friend bool operator ==(const Plane_tpl&lt;F&gt; &amp;p1, const Plane_tpl&lt;F&gt; &amp;p2) { if (fabsf(p1.n.x-p2.n.x)&gt;0.0001f) return (false); if (fabsf(p1.n.y-p2.n.y)&gt;0.0001f) return (false); if (fabsf(p1.n.z-p2.n.z)&gt;0.0001f) return (false); if (fabsf(p1.d-p2.d)&lt;0.01f) return(true); return (false); } Vec3_tpl&lt;F&gt; MirrorVector(const Vec3_tpl&lt;F&gt;&amp; i) { return n*(2* (n|i))-i; } Vec3_tpl&lt;F&gt; MirrorPosition(const Vec3_tpl&lt;F&gt;&amp; i) { return i - n*(2* ((n|i)+d)); } AUTO_STRUCT_INFO } Friend</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">friend</span></strong> <strong><span style="color: #871F78">bool</span></strong> <strong><span style="color: #871F78">operator</span></strong> ==(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0032">Plane_tpl</a>&lt;F&gt; &amp;p1, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0032">Plane_tpl</a>&lt;F&gt; &amp;p2) { <strong><span style="color: #871F78">if</span></strong> (fabsf(p1.<a href="Vec3_tpl#003F">n</a>.<a href="Vec3_tpl#004E">x</a>-p2.<a href="Vec3_tpl#003F">n</a>.<a href="Vec3_tpl#004E">x</a>)&gt;0.0001f) <strong><span style="color: #871F78">return</span></strong> (<strong><span style="color: #871F78">false</span></strong>); <strong><span style="color: #871F78">if</span></strong> (fabsf(p1.<a href="Vec3_tpl#003F">n</a>.<a href="Vec3_tpl#004F">y</a>-p2.<a href="Vec3_tpl#003F">n</a>.<a href="Vec3_tpl#004F">y</a>)&gt;0.0001f) <strong><span style="color: #871F78">return</span></strong> (<strong><span style="color: #871F78">false</span></strong>); <strong><span style="color: #871F78">if</span></strong> (fabsf(p1.<a href="Vec3_tpl#003F">n</a>.<a href="Vec3_tpl#0050">z</a>-p2.<a href="Vec3_tpl#003F">n</a>.<a href="Vec3_tpl#0050">z</a>)&gt;0.0001f) <strong><span style="color: #871F78">return</span></strong> (<strong><span style="color: #871F78">false</span></strong>); <strong><span style="color: #871F78">if</span></strong> (fabsf(p1.<a href="Vec3_tpl#003C">d</a>-p2.<a href="Vec3_tpl#003C">d</a>)&lt;0.01f) <strong><span style="color: #871F78">return</span></strong>(<strong><span style="color: #871F78">true</span></strong>); <strong><span style="color: #871F78">return</span></strong> (<strong><span style="color: #871F78">false</span></strong>); } <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; MirrorVector(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; i) { <strong><span style="color: #871F78">return</span></strong> <a href="Vec3_tpl#003F">n</a>*(2* (<a href="Vec3_tpl#003F">n</a>|i))-i; } <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; MirrorPosition(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; i) { <strong><span style="color: #871F78">return</span></strong> i - <a href="Vec3_tpl#003F">n</a>*(2* ((<a href="Vec3_tpl#003F">n</a>|i)+<a href="Vec3_tpl#003C">d</a>)); } AUTO_STRUCT_INFO };</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
! check for equality between two planes</p></div>
</div>
<div class="Element6">
<a name="0040"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::Plane Nested Type</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">typedef</span></strong> <a href="Vec3_tpl#0032">Plane_tpl</a>&lt;f32&gt; <strong><span style="color: #660000">Plane</span></strong>;</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
always 32 bit</p></div>
</div>
<div class="Element6">
<a name="0044"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::Planed Nested Type</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">typedef</span></strong> <a href="Vec3_tpl#0032">Plane_tpl</a>&lt;f64&gt; <strong><span style="color: #660000">Planed</span></strong>;</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
always 64 bit</p></div>
</div>
<div class="Element6">
<a name="0045"></a>Vec3_tpl::Ang3_tpl::Plane_tpl::Planer Nested Type</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">typedef</span></strong> <a href="Vec3_tpl#0032">Plane_tpl</a>&lt;real&gt; <strong><span style="color: #660000">Planer</span></strong>;</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
variable float precision. depending on the target system it can be between 32, 64 or 80 bit</p></div>
</div>
<div class="Element6">
<a name="004E"></a>Vec3_tpl::Ang3_tpl::x Data Member</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100">F <strong><span style="color: #660000">x</span></strong>;</pre></div></div>
<div class="Element6">
<a name="004F"></a>Vec3_tpl::Ang3_tpl::y Data Member</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100">F <strong><span style="color: #660000">y</span></strong>;</pre></div></div>
<div class="Element6">
<a name="0050"></a>Vec3_tpl::Ang3_tpl::z Data Member</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100">F <strong><span style="color: #660000">z</span></strong>;</pre></div></div>
<div class="Element6">
<a name="0018"></a>Vec3_tpl::Ang3_tpl::- Operator ()</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">-</span></strong>() <strong><span style="color: #871F78">const</span></strong>;</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
explicit ILINE <a href="Vec3_tpl#0011">Ang3_tpl</a>&amp; operator = (const <a href="Vec3_tpl">Vec3_tpl</a>&amp; v) { <a href="Vec3_tpl#004E">x</a>=v.<a href="Vec3_tpl#004E">x</a>; <a href="Vec3_tpl#004F">y</a>=v.<a href="Vec3_tpl#004F">y</a>; <a href="Vec3_tpl#0050">z</a>=v.<a href="Vec3_tpl#0050">z</a>; return *this;</p></div>
</div>
<div class="Element6">
<a name="0017"></a>Vec3_tpl::Ang3_tpl::- Operator (Ang3_tpl&lt;F1&gt; &amp;, Ang3_tpl&lt;F2&gt; &amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> F1,<strong><span style="color: #871F78">class</span></strong> F2&gt; <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F1&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">-</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F1&gt; &amp; <strong><span style="color: #660000">v0</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F2&gt; &amp; <strong><span style="color: #660000">v1</span></strong>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
<a href="vector">vector</a> subtraction</p></div>
</div>
<div class="Element6">
<a name="0012"></a>Vec3_tpl::Ang3_tpl::!= Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">bool</span></strong> <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">!=</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">vec</span></strong>);</pre></div></div>
<div class="Element6">
<a name="0013"></a>Vec3_tpl::Ang3_tpl::() Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">void</span></strong> <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">()</span></strong>(F <strong><span style="color: #660000">vx</span></strong>, F <strong><span style="color: #660000">vy</span></strong>, F <strong><span style="color: #660000">vz</span></strong>);</pre></div></div>
<div class="Element6">
<a name="0014"></a>Vec3_tpl::Ang3_tpl::* Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">*</span></strong>(F <strong><span style="color: #660000">k</span></strong>) <strong><span style="color: #871F78">const</span></strong>;</pre></div></div>
<div class="Element6">
<a name="0015"></a>Vec3_tpl::Ang3_tpl::*= Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F&gt;&amp; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">*=</span></strong>(F <strong><span style="color: #660000">k</span></strong>);</pre></div></div>
<div class="Element6">
<a name="0016"></a>Vec3_tpl::Ang3_tpl::/ Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">/</span></strong>(F <strong><span style="color: #660000">k</span></strong>) <strong><span style="color: #871F78">const</span></strong>;</pre></div></div>
<div class="Element6">
<a name="0019"></a>Vec3_tpl::Ang3_tpl::+ Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> F1,<strong><span style="color: #871F78">class</span></strong> F2&gt; <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F1&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">+</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F1&gt; &amp; <strong><span style="color: #660000">v0</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F2&gt; &amp; <strong><span style="color: #660000">v1</span></strong>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
<a href="vector">vector</a> addition</p></div>
</div>
<div class="Element6">
<a name="001A"></a>Vec3_tpl::Ang3_tpl::+= Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> F1,<strong><span style="color: #871F78">class</span></strong> F2&gt; <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F1&gt;&amp; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">+=</span></strong>(<a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F1&gt; &amp; <strong><span style="color: #660000">v0</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F2&gt; &amp; <strong><span style="color: #660000">v1</span></strong>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
<a href="vector">vector</a> self-addition</p></div>
</div>
<div class="Element6">
<a name="001B"></a>Vec3_tpl::Ang3_tpl::-= Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> F1,<strong><span style="color: #871F78">class</span></strong> F2&gt; <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F1&gt;&amp; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">-=</span></strong>(<a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F1&gt; &amp; <strong><span style="color: #660000">v0</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F2&gt; &amp; <strong><span style="color: #660000">v1</span></strong>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
<a href="vector">vector</a> self-subtraction</p></div>
</div>
<div class="Element6">
<a name="001C"></a>Vec3_tpl::Ang3_tpl::== Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">bool</span></strong> <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">==</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">vec</span></strong>);</pre></div></div>
<div class="Element6">
<a name="001F"></a>Vec3_tpl::Ang3_tpl::Ang3_tpl Constructor ()</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #660000">Ang3_tpl</span></strong>();</pre></div></div>
<div class="Element6">
<a name="0020"></a>Vec3_tpl::Ang3_tpl::Ang3_tpl Constructor (F, F, F)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #660000">Ang3_tpl</span></strong>&lt;F&gt;(F <strong><span style="color: #660000">vx</span></strong>, F <strong><span style="color: #660000">vy</span></strong>, F <strong><span style="color: #660000">vz</span></strong>);</pre></div></div>
<div class="Element6">
<a name="0022"></a>Vec3_tpl::Ang3_tpl::Ang3_tpl Constructor (Vec3_tpl&lt;F&gt;&amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">explicit</span></strong> <strong><span style="color: #660000">Ang3_tpl</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; <strong><span style="color: #660000">v</span></strong>);</pre></div></div>
<div class="Element6">
<a name="0021"></a>Vec3_tpl::Ang3_tpl::Ang3_tpl Constructor (type_zero)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #660000">Ang3_tpl</span></strong>(<a href="Math_Enums#0015">type_zero</a>);</pre></div></div>
<div class="Element6">
<a name="0030"></a>Vec3_tpl::Ang3_tpl::AngleAxis_tpl&lt;F&gt;::* Method</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">typename</span></strong> F&gt; <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; <strong><span style="color: #660000"><a href="Vec3_tpl#0026">AngleAxis_tpl</a>&lt;F&gt;::*</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">v</span></strong>) <strong><span style="color: #871F78">const</span></strong>;</pre></div></div>
<div class="Element6">
<a name="0031"></a>friend bool operator ==(const Ang3_tpl&lt;F&gt; &amp;v0, const Ang3_tpl&lt;F&gt; &amp;v1) { return ((v0.x==v1.x) &amp;&amp; (v0.y==v1.y) &amp;&amp; (v0.z==v1.z)); } void Set(F xval,F yval,F zval) { x=xval; y=yval; z=zval; } bool IsEquivalent( const Ang3_tpl&lt;F&gt;&amp; v1, F epsilon=VEC_EPSILON) const { return ((fabs_tpl(x-v1.x) &lt;= epsilon) &amp;&amp; (fabs_tpl(y-v1.y) &lt;= epsilon)&amp;&amp; (fabs_tpl(z-v1.z) &lt;= epsilon)); } bool IsInRangePI() const { F pi=(F)(gf_PI+0.001); return ( (x&gt;-pi)&amp;&amp;(x&lt;pi) &amp;&amp; (y&gt;-pi)&amp;&amp;(y&lt;pi) &amp;&amp; (z&gt;-pi)&amp;&amp;(z&lt;pi) ); } void RangePI() { const F modX = fmod(x+gf_PI, gf_PI2); x = if_neg_else(modX, modX+gf_PI, modX - gf_PI); const F modY = fmod(y+gf_PI, gf_PI2); y = if_neg_else(modY, modY+gf_PI, modY - gf_PI); const F modZ = fmod(z+gf_PI, gf_PI2); z = if_neg_else(modZ, modZ+gf_PI, modZ - gf_PI); } template&lt;class F1&gt; explicit Ang3_tpl( const Quat_tpl&lt;F1&gt;&amp; q ) { assert(q.IsValid()); y = F( asin_tpl(max((F)-1.0,min((F)1.0,-(q.v.x*q.v.z-q.w*q.v.y)*2))) ); if (fabs_tpl(fabs_tpl(y)-(F)((F)g_PI*(F)0.5))&lt;(F)0.01) { x = F(0); z = F(atan2_tpl(-2*(q.v.x*q.v.y-q.w*q.v.z),1-(q.v.x*q.v.x+q.v.z*q.v.z)*2)); } else { x = F(atan2_tpl((q.v.y*q.v.z+q.w*q.v.x)*2, 1-(q.v.x*q.v.x+q.v.y*q.v.y)*2)); z = F(atan2_tpl((q.v.x*q.v.y+q.w*q.v.z)*2, 1-(q.v.z*q.v.z+q.v.y*q.v.y)*2)); } } template&lt;class F1&gt; explicit Ang3_tpl( const Matrix33_tpl&lt;F1&gt;&amp; m ) { assert( m.IsOrthonormalRH(0.001f) ); y = (F)asin_tpl(max((F)-1.0,min((F)1.0,-m.m20))); if (fabs_tpl(fabs_tpl(y)-(F)((F)g_PI*(F)0.5))&lt;(F)0.01) { x = F(0); z = F(atan2_tpl(-m.m01,m.m11)); } else { x = F(atan2_tpl(m.m21, m.m22)); z = F(atan2_tpl(m.m10, m.m00)); } } template&lt;class F1&gt; explicit Ang3_tpl( const Matrix34_tpl&lt;F1&gt;&amp; m ) { assert( m.IsOrthonormalRH(0.001f) ); y = F( asin_tpl(max((F)-1.0,min((F)1.0,-m.m20))) ); if (fabs_tpl(fabs_tpl(y)-(F)((F)g_PI*(F)0.5))&lt;(F)0.01) { x = F(0); z = F(atan2_tpl(-m.m01,m.m11)); } else { x = F(atan2_tpl(m.m21, m.m22)); z = F(atan2_tpl(m.m10, m.m00)); } } template&lt;class F1&gt; explicit Ang3_tpl( const Matrix44_tpl&lt;F1&gt;&amp; m ) { assert( Matrix33(m).IsOrthonormalRH(0.001f) ); y = F( asin_tpl(max((F)-1.0,min((F)1.0,-m.m20))) ); if (fabs_tpl(fabs_tpl(y)-(F)((F)g_PI*(F)0.5))&lt;(F)0.01) { x = F(0); z = F(atan2_tpl(-m.m01,m.m11)); } else { x = F(atan2_tpl(m.m21, m.m22)); z = F(atan2_tpl(m.m10, m.m00)); } } template&lt;typename F1&gt; static F CreateRadZ( const Vec2_tpl&lt;F1&gt;&amp; v0, const Vec2_tpl&lt;F1&gt;&amp; v1 ) { F cz = v0.x*v1.y-v0.y*v1.x; F c = v0.x*v1.x+v0.y*v1.y; return F( atan2_tpl(cz,c) ); } template&lt;typename F1&gt; static F CreateRadZ( const Vec3_tpl&lt;F1&gt;&amp; v0, const Vec3_tpl&lt;F1&gt;&amp; v1 ) { F cz = v0.x*v1.y-v0.y*v1.x; F c = v0.x*v1.x+v0.y*v1.y; return F( atan2_tpl(cz,c) ); } template&lt;typename F1&gt; static Ang3_tpl&lt;F&gt; GetAnglesXYZ( const Quat_tpl&lt;F1&gt;&amp; q ) { return Ang3_tpl&lt;F&gt;(q); } template&lt;typename F1&gt; void SetAnglesXYZ( const Quat_tpl&lt;F1&gt;&amp; q ) { *this=Ang3_tpl&lt;F&gt;(q); } template&lt;typename F1&gt; static Ang3_tpl&lt;F&gt; GetAnglesXYZ( const Matrix33_tpl&lt;F1&gt;&amp; m ) { return Ang3_tpl&lt;F&gt;(m); } template&lt;typename F1&gt; void SetAnglesXYZ( const Matrix33_tpl&lt;F1&gt;&amp; m ) { *this=Ang3_tpl&lt;F&gt;(m); } template&lt;typename F1&gt; static Ang3_tpl&lt;F&gt; GetAnglesXYZ( const Matrix34_tpl&lt;F1&gt;&amp; m ) { return Ang3_tpl&lt;F&gt;(m); } template&lt;typename F1&gt; void SetAnglesXYZ( const Matrix34_tpl&lt;F1&gt;&amp; m ) { *this=Ang3_tpl&lt;F&gt;(m); } F &amp;operator [] (int index) { assert(index&gt;=0 &amp;&amp; index&lt;=2); return ((F*)this)[index]; } F operator [] (int index) const { assert(index&gt;=0 &amp;&amp; index&lt;=2); return ((F*)this)[index]; } bool IsValid() const { if (!NumberValid(x)) return false; if (!NumberValid(y)) return false; if (!NumberValid(z)) return false; return true; } AUTO_STRUCT_INFO } Friend</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">friend</span></strong> <strong><span style="color: #871F78">bool</span></strong> <strong><span style="color: #871F78">operator</span></strong> ==(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F&gt; &amp;v0, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F&gt; &amp;v1) { <strong><span style="color: #871F78">return</span></strong> ((v0.<a href="Vec3_tpl#004E">x</a>==v1.<a href="Vec3_tpl#004E">x</a>) &amp;&amp; (v0.<a href="Vec3_tpl#004F">y</a>==v1.<a href="Vec3_tpl#004F">y</a>) &amp;&amp; (v0.<a href="Vec3_tpl#0050">z</a>==v1.<a href="Vec3_tpl#0050">z</a>)); } <strong><span style="color: #871F78">void</span></strong> <a href="Vec3_tpl#0056">Set</a>(F xval,F yval,F zval) { <a href="Vec3_tpl#004E">x</a>=xval; <a href="Vec3_tpl#004F">y</a>=yval; <a href="Vec3_tpl#0050">z</a>=zval; } <strong><span style="color: #871F78">bool</span></strong> <a href="Vec3_tpl#0053">IsEquivalent</a>( <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F&gt;&amp; v1, F epsilon=<a href="Math_Macros#002C">VEC_EPSILON</a>) <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> ((fabs_tpl(<a href="Vec3_tpl#004E">x</a>-v1.<a href="Vec3_tpl#004E">x</a>) &lt;= epsilon) &amp;&amp; (fabs_tpl(<a href="Vec3_tpl#004F">y</a>-v1.<a href="Vec3_tpl#004F">y</a>) &lt;= epsilon)&amp;&amp; (fabs_tpl(<a href="Vec3_tpl#0050">z</a>-v1.<a href="Vec3_tpl#0050">z</a>) &lt;= epsilon)); } <strong><span style="color: #871F78">bool</span></strong> IsInRangePI() <strong><span style="color: #871F78">const</span></strong> { F pi=(F)(<a href="Math_Definitions#000A">gf_PI</a>+0.001); <strong><span style="color: #871F78">return</span></strong> ( (<a href="Vec3_tpl#004E">x</a>&gt;-pi)&amp;&amp;(<a href="Vec3_tpl#004E">x</a>&lt;pi) &amp;&amp; (<a href="Vec3_tpl#004F">y</a>&gt;-pi)&amp;&amp;(<a href="Vec3_tpl#004F">y</a>&lt;pi) &amp;&amp; (<a href="Vec3_tpl#0050">z</a>&gt;-pi)&amp;&amp;(<a href="Vec3_tpl#0050">z</a>&lt;pi) ); } <strong><span style="color: #871F78">void</span></strong> RangePI() { <strong><span style="color: #871F78">const</span></strong> F modX = fmod(<a href="Vec3_tpl#004E">x</a>+<a href="Math_Definitions#000A">gf_PI</a>, <a href="Math_Definitions#000B">gf_PI2</a>); <a href="Vec3_tpl#004E">x</a> = if_neg_else(modX, modX+<a href="Math_Definitions#000A">gf_PI</a>, modX - <a href="Math_Definitions#000A">gf_PI</a>); <strong><span style="color: #871F78">const</span></strong> F modY = fmod(<a href="Vec3_tpl#004F">y</a>+<a href="Math_Definitions#000A">gf_PI</a>, <a href="Math_Definitions#000B">gf_PI2</a>); <a href="Vec3_tpl#004F">y</a> = if_neg_else(modY, modY+<a href="Math_Definitions#000A">gf_PI</a>, modY - <a href="Math_Definitions#000A">gf_PI</a>); <strong><span style="color: #871F78">const</span></strong> F modZ = fmod(<a href="Vec3_tpl#0050">z</a>+<a href="Math_Definitions#000A">gf_PI</a>, <a href="Math_Definitions#000B">gf_PI2</a>); <a href="Vec3_tpl#0050">z</a> = if_neg_else(modZ, modZ+<a href="Math_Definitions#000A">gf_PI</a>, modZ - <a href="Math_Definitions#000A">gf_PI</a>); } <strong><span style="color: #871F78">template</span></strong>&lt;<strong><span style="color: #871F78">class</span></strong> F1&gt; <strong><span style="color: #871F78">explicit</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>( <strong><span style="color: #871F78">const</span></strong> <a href="Quat_tpl">Quat_tpl</a>&lt;F1&gt;&amp; q ) { assert(q.IsValid()); <a href="Vec3_tpl#004F">y</a> = F( asin_tpl(max((F)-1.0,min((F)1.0,-(q.v.<a href="Vec3_tpl#004E">x</a>*q.v.<a href="Vec3_tpl#0050">z</a>-q.w*q.v.<a href="Vec3_tpl#004F">y</a>)*2))) ); <strong><span style="color: #871F78">if</span></strong> (fabs_tpl(fabs_tpl(<a href="Vec3_tpl#004F">y</a>)-(F)((F)<a href="Math_Definitions#0008">g_PI</a>*(F)0.5))&lt;(F)0.01) { <a href="Vec3_tpl#004E">x</a> = F(0); <a href="Vec3_tpl#0050">z</a> = F(atan2_tpl(-2*(q.v.<a href="Vec3_tpl#004E">x</a>*q.v.<a href="Vec3_tpl#004F">y</a>-q.w*q.v.<a href="Vec3_tpl#0050">z</a>),1-(q.v.<a href="Vec3_tpl#004E">x</a>*q.v.<a href="Vec3_tpl#004E">x</a>+q.v.<a href="Vec3_tpl#0050">z</a>*q.v.<a href="Vec3_tpl#0050">z</a>)*2)); } <strong><span style="color: #871F78">else</span></strong> { <a href="Vec3_tpl#004E">x</a> = F(atan2_tpl((q.v.<a href="Vec3_tpl#004F">y</a>*q.v.<a href="Vec3_tpl#0050">z</a>+q.w*q.v.<a href="Vec3_tpl#004E">x</a>)*2, 1-(q.v.<a href="Vec3_tpl#004E">x</a>*q.v.<a href="Vec3_tpl#004E">x</a>+q.v.<a href="Vec3_tpl#004F">y</a>*q.v.<a href="Vec3_tpl#004F">y</a>)*2)); <a href="Vec3_tpl#0050">z</a> = F(atan2_tpl((q.v.<a href="Vec3_tpl#004E">x</a>*q.v.<a href="Vec3_tpl#004F">y</a>+q.w*q.v.<a href="Vec3_tpl#0050">z</a>)*2, 1-(q.v.<a href="Vec3_tpl#0050">z</a>*q.v.<a href="Vec3_tpl#0050">z</a>+q.v.<a href="Vec3_tpl#004F">y</a>*q.v.<a href="Vec3_tpl#004F">y</a>)*2)); } } <strong><span style="color: #871F78">template</span></strong>&lt;<strong><span style="color: #871F78">class</span></strong> F1&gt; <strong><span style="color: #871F78">explicit</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>( <strong><span style="color: #871F78">const</span></strong> Matrix33_tpl&lt;F1&gt;&amp; m ) { assert( m.IsOrthonormalRH(0.001f) ); <a href="Vec3_tpl#004F">y</a> = (F)asin_tpl(max((F)-1.0,min((F)1.0,-m.m20))); <strong><span style="color: #871F78">if</span></strong> (fabs_tpl(fabs_tpl(<a href="Vec3_tpl#004F">y</a>)-(F)((F)<a href="Math_Definitions#0008">g_PI</a>*(F)0.5))&lt;(F)0.01) { <a href="Vec3_tpl#004E">x</a> = F(0); <a href="Vec3_tpl#0050">z</a> = F(atan2_tpl(-m.m01,m.m11)); } <strong><span style="color: #871F78">else</span></strong> { <a href="Vec3_tpl#004E">x</a> = F(atan2_tpl(m.m21, m.m22)); <a href="Vec3_tpl#0050">z</a> = F(atan2_tpl(m.m10, m.m00)); } } <strong><span style="color: #871F78">template</span></strong>&lt;<strong><span style="color: #871F78">class</span></strong> F1&gt; <strong><span style="color: #871F78">explicit</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>( <strong><span style="color: #871F78">const</span></strong> Matrix34_tpl&lt;F1&gt;&amp; m ) { assert( m.IsOrthonormalRH(0.001f) ); <a href="Vec3_tpl#004F">y</a> = F( asin_tpl(max((F)-1.0,min((F)1.0,-m.m20))) ); <strong><span style="color: #871F78">if</span></strong> (fabs_tpl(fabs_tpl(<a href="Vec3_tpl#004F">y</a>)-(F)((F)<a href="Math_Definitions#0008">g_PI</a>*(F)0.5))&lt;(F)0.01) { <a href="Vec3_tpl#004E">x</a> = F(0); <a href="Vec3_tpl#0050">z</a> = F(atan2_tpl(-m.m01,m.m11)); } <strong><span style="color: #871F78">else</span></strong> { <a href="Vec3_tpl#004E">x</a> = F(atan2_tpl(m.m21, m.m22)); <a href="Vec3_tpl#0050">z</a> = F(atan2_tpl(m.m10, m.m00)); } } <strong><span style="color: #871F78">template</span></strong>&lt;<strong><span style="color: #871F78">class</span></strong> F1&gt; <strong><span style="color: #871F78">explicit</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>( <strong><span style="color: #871F78">const</span></strong> Matrix44_tpl&lt;F1&gt;&amp; m ) { assert( Matrix33(m).IsOrthonormalRH(0.001f) ); <a href="Vec3_tpl#004F">y</a> = F( asin_tpl(max((F)-1.0,min((F)1.0,-m.m20))) ); <strong><span style="color: #871F78">if</span></strong> (fabs_tpl(fabs_tpl(<a href="Vec3_tpl#004F">y</a>)-(F)((F)<a href="Math_Definitions#0008">g_PI</a>*(F)0.5))&lt;(F)0.01) { <a href="Vec3_tpl#004E">x</a> = F(0); <a href="Vec3_tpl#0050">z</a> = F(atan2_tpl(-m.m01,m.m11)); } <strong><span style="color: #871F78">else</span></strong> { <a href="Vec3_tpl#004E">x</a> = F(atan2_tpl(m.m21, m.m22)); <a href="Vec3_tpl#0050">z</a> = F(atan2_tpl(m.m10, m.m00)); } } <strong><span style="color: #871F78">template</span></strong>&lt;<strong><span style="color: #871F78">typename</span></strong> F1&gt; <strong><span style="color: #871F78">static</span></strong> F CreateRadZ( <strong><span style="color: #871F78">const</span></strong> <a href="Vec2_tpl">Vec2_tpl</a>&lt;F1&gt;&amp; v0, <strong><span style="color: #871F78">const</span></strong> <a href="Vec2_tpl">Vec2_tpl</a>&lt;F1&gt;&amp; v1 ) { F cz = v0.<a href="Vec3_tpl#004E">x</a>*v1.<a href="Vec3_tpl#004F">y</a>-v0.<a href="Vec3_tpl#004F">y</a>*v1.<a href="Vec3_tpl#004E">x</a>; F c = v0.<a href="Vec3_tpl#004E">x</a>*v1.<a href="Vec3_tpl#004E">x</a>+v0.<a href="Vec3_tpl#004F">y</a>*v1.<a href="Vec3_tpl#004F">y</a>; <strong><span style="color: #871F78">return</span></strong> F( atan2_tpl(cz,c) ); } <strong><span style="color: #871F78">template</span></strong>&lt;<strong><span style="color: #871F78">typename</span></strong> F1&gt; <strong><span style="color: #871F78">static</span></strong> F CreateRadZ( <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt;&amp; v0, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt;&amp; v1 ) { F cz = v0.<a href="Vec3_tpl#004E">x</a>*v1.<a href="Vec3_tpl#004F">y</a>-v0.<a href="Vec3_tpl#004F">y</a>*v1.<a href="Vec3_tpl#004E">x</a>; F c = v0.<a href="Vec3_tpl#004E">x</a>*v1.<a href="Vec3_tpl#004E">x</a>+v0.<a href="Vec3_tpl#004F">y</a>*v1.<a href="Vec3_tpl#004F">y</a>; <strong><span style="color: #871F78">return</span></strong> F( atan2_tpl(cz,c) ); } <strong><span style="color: #871F78">template</span></strong>&lt;<strong><span style="color: #871F78">typename</span></strong> F1&gt; <strong><span style="color: #871F78">static</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F&gt; GetAnglesXYZ( <strong><span style="color: #871F78">const</span></strong> <a href="Quat_tpl">Quat_tpl</a>&lt;F1&gt;&amp; q ) { <strong><span style="color: #871F78">return</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F&gt;(q); } <strong><span style="color: #871F78">template</span></strong>&lt;<strong><span style="color: #871F78">typename</span></strong> F1&gt; <strong><span style="color: #871F78">void</span></strong> SetAnglesXYZ( <strong><span style="color: #871F78">const</span></strong> <a href="Quat_tpl">Quat_tpl</a>&lt;F1&gt;&amp; q ) { *<strong><span style="color: #871F78">this</span></strong>=<a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F&gt;(q); } <strong><span style="color: #871F78">template</span></strong>&lt;<strong><span style="color: #871F78">typename</span></strong> F1&gt; <strong><span style="color: #871F78">static</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F&gt; GetAnglesXYZ( <strong><span style="color: #871F78">const</span></strong> Matrix33_tpl&lt;F1&gt;&amp; m ) { <strong><span style="color: #871F78">return</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F&gt;(m); } <strong><span style="color: #871F78">template</span></strong>&lt;<strong><span style="color: #871F78">typename</span></strong> F1&gt; <strong><span style="color: #871F78">void</span></strong> SetAnglesXYZ( <strong><span style="color: #871F78">const</span></strong> Matrix33_tpl&lt;F1&gt;&amp; m ) { *<strong><span style="color: #871F78">this</span></strong>=<a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F&gt;(m); } <strong><span style="color: #871F78">template</span></strong>&lt;<strong><span style="color: #871F78">typename</span></strong> F1&gt; <strong><span style="color: #871F78">static</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F&gt; GetAnglesXYZ( <strong><span style="color: #871F78">const</span></strong> Matrix34_tpl&lt;F1&gt;&amp; m ) { <strong><span style="color: #871F78">return</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F&gt;(m); } <strong><span style="color: #871F78">template</span></strong>&lt;<strong><span style="color: #871F78">typename</span></strong> F1&gt; <strong><span style="color: #871F78">void</span></strong> SetAnglesXYZ( <strong><span style="color: #871F78">const</span></strong> Matrix34_tpl&lt;F1&gt;&amp; m ) { *<strong><span style="color: #871F78">this</span></strong>=<a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F&gt;(m); } F &amp;<strong><span style="color: #871F78">operator</span></strong> [] (<strong><span style="color: #871F78">int</span></strong> index) { assert(index&gt;=0 &amp;&amp; index&lt;=2); <strong><span style="color: #871F78">return</span></strong> ((F*)<strong><span style="color: #871F78">this</span></strong>)[index]; } F <strong><span style="color: #871F78">operator</span></strong> [] (<strong><span style="color: #871F78">int</span></strong> index) <strong><span style="color: #871F78">const</span></strong> { assert(index&gt;=0 &amp;&amp; index&lt;=2); <strong><span style="color: #871F78">return</span></strong> ((F*)<strong><span style="color: #871F78">this</span></strong>)[index]; } <strong><span style="color: #871F78">bool</span></strong> IsValid() <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">if</span></strong> (!NumberValid(<a href="Vec3_tpl#004E">x</a>)) <strong><span style="color: #871F78">return</span></strong> <strong><span style="color: #871F78">false</span></strong>; <strong><span style="color: #871F78">if</span></strong> (!NumberValid(<a href="Vec3_tpl#004F">y</a>)) <strong><span style="color: #871F78">return</span></strong> <strong><span style="color: #871F78">false</span></strong>; <strong><span style="color: #871F78">if</span></strong> (!NumberValid(<a href="Vec3_tpl#0050">z</a>)) <strong><span style="color: #871F78">return</span></strong> <strong><span style="color: #871F78">false</span></strong>; <strong><span style="color: #871F78">return</span></strong> <strong><span style="color: #871F78">true</span></strong>; } AUTO_STRUCT_INFO };</pre></div></div>
<div class="Element6">
<a name="001D"></a>Vec3_tpl::Ang3_tpl::Ang3 Nested Type</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">typedef</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;f32&gt; <strong><span style="color: #660000">Ang3</span></strong>;</pre></div></div>
<div class="Element6">
<a name="001E"></a>Vec3_tpl::Ang3_tpl::Ang3_f64 Nested Type</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">typedef</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;f64&gt; <strong><span style="color: #660000">Ang3_f64</span></strong>;</pre></div></div>
<div class="Element6">
<a name="0023"></a>Vec3_tpl::Ang3_tpl::Ang3r Nested Type</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">typedef</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;real&gt; <strong><span style="color: #660000">Ang3r</span></strong>;</pre></div></div>
<div class="Element6">
<a name="0024"></a>Vec3_tpl::Ang3_tpl::AngleAxis Nested Type</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">typedef</span></strong> <a href="Vec3_tpl#0026">AngleAxis_tpl</a>&lt;f32&gt; <strong><span style="color: #660000">AngleAxis</span></strong>;</pre></div></div>
<div class="Element6">
<a name="0025"></a>Vec3_tpl::Ang3_tpl::AngleAxis_f64 Nested Type</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">typedef</span></strong> <a href="Vec3_tpl#0026">AngleAxis_tpl</a>&lt;f64&gt; <strong><span style="color: #660000">AngleAxis_f64</span></strong>;</pre></div></div>
<div class="Element6">
<a name="006F"></a>Vec3_tpl::x Data Member</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100">F <strong><span style="color: #660000">x</span></strong>;</pre></div></div>
<div class="Element6">
<a name="0070"></a>Vec3_tpl::y Data Member</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100">F <strong><span style="color: #660000">y</span></strong>;</pre></div></div>
<div class="Element6">
<a name="0071"></a>Vec3_tpl::z Data Member</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100">F <strong><span style="color: #660000">z</span></strong>;</pre></div></div>
<div class="Element6">
<a name="0007"></a>Vec3_tpl::- Operator (Vec2_tpl&lt;F1&gt; &amp;, Vec3_tpl&lt;F2&gt; &amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> F1,<strong><span style="color: #871F78">class</span></strong> F2&gt; <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">-</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec2_tpl">Vec2_tpl</a>&lt;F1&gt; &amp; <strong><span style="color: #660000">v0</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F2&gt; &amp; <strong><span style="color: #660000">v1</span></strong>);</pre></div></div>
<div class="Element6">
<a name="0008"></a>Vec3_tpl::- Operator (Vec3_tpl&lt;F1&gt; &amp;, Vec2_tpl&lt;F2&gt; &amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> F1,<strong><span style="color: #871F78">class</span></strong> F2&gt; <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">-</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; &amp; <strong><span style="color: #660000">v0</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec2_tpl">Vec2_tpl</a>&lt;F2&gt; &amp; <strong><span style="color: #660000">v1</span></strong>);</pre></div></div>
<div class="Element6">
<a name="0009"></a>Vec3_tpl::- Operator (Vec3_tpl&lt;F1&gt; &amp;, Vec3_tpl&lt;F2&gt; &amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> F1,<strong><span style="color: #871F78">class</span></strong> F2&gt; <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">-</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; &amp; <strong><span style="color: #660000">v0</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F2&gt; &amp; <strong><span style="color: #660000">v1</span></strong>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
<a href="vector">vector</a> subtraction</p></div>
</div>
<div class="Element6">
<a name="0001"></a>Vec3_tpl::% Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> F1,<strong><span style="color: #871F78">class</span></strong> F2&gt; <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">%</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; &amp; <strong><span style="color: #660000">v0</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F2&gt; &amp; <strong><span style="color: #660000">v1</span></strong>);</pre></div></div>
<div class="Element6">
<a name="0002"></a>Vec3_tpl::() Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">void</span></strong> <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">()</span></strong>(F <strong><span style="color: #660000">vx</span></strong>, F <strong><span style="color: #660000">vy</span></strong>, F <strong><span style="color: #660000">vz</span></strong>);</pre></div></div>
<div class="Element6">
<a name="0003"></a>Vec3_tpl::* Operator (F)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">*</span></strong>(F <strong><span style="color: #660000">k</span></strong>) <strong><span style="color: #871F78">const</span></strong>;</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
!</p>
<ul class="Element630">
<li class="Element600">overloaded arithmetic operator </li>
</ul><p class="Element10">
*</p>
<ul class="Element630">
<li class="Element600">Example:</li>
<li class="Element600"><a href="Vec3_tpl#0059">Vec3</a> v0=v1*4;</li>
</ul></div>
</div>
<div class="Element6">
<a name="0004"></a>Vec3_tpl::* Operator (Vec3_tpl&lt;F1&gt; &amp;, Vec3_tpl&lt;F2&gt; &amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> F1,<strong><span style="color: #871F78">class</span></strong> F2&gt; F1 <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">*</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; &amp; <strong><span style="color: #660000">v0</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F2&gt; &amp; <strong><span style="color: #660000">v1</span></strong>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
dot product (2 versions)</p></div>
</div>
<div class="Element6">
<a name="0005"></a>Vec3_tpl::/ Operator (F)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">/</span></strong>(F <strong><span style="color: #660000">k</span></strong>) <strong><span style="color: #871F78">const</span></strong>;</pre></div></div>
<div class="Element6">
<a name="0006"></a>Vec3_tpl::/ Operator (Vec3_tpl&lt;F1&gt; &amp;, Vec3_tpl&lt;F2&gt; &amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> F1,<strong><span style="color: #871F78">class</span></strong> F2&gt; <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">/</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; &amp; <strong><span style="color: #660000">v0</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F2&gt; &amp; <strong><span style="color: #660000">v1</span></strong>);</pre></div></div>
<div class="Element6">
<a name="000A"></a>Vec3_tpl::^ Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> F1,<strong><span style="color: #871F78">class</span></strong> F2&gt; <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">^</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; &amp; <strong><span style="color: #660000">v0</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F2&gt; &amp; <strong><span style="color: #660000">v1</span></strong>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
cross product (2 versions)</p></div>
</div>
<div class="Element6">
<a name="000B"></a>Vec3_tpl::| Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> F1,<strong><span style="color: #871F78">class</span></strong> F2&gt; F1 <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">|</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; &amp; <strong><span style="color: #660000">v0</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F2&gt; &amp; <strong><span style="color: #660000">v1</span></strong>);</pre></div></div>
<div class="Element6">
<a name="000C"></a>Vec3_tpl::+ Operator (Vec2_tpl&lt;F1&gt; &amp;, Vec3_tpl&lt;F2&gt; &amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> F1,<strong><span style="color: #871F78">class</span></strong> F2&gt; <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">+</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec2_tpl">Vec2_tpl</a>&lt;F1&gt; &amp; <strong><span style="color: #660000">v0</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F2&gt; &amp; <strong><span style="color: #660000">v1</span></strong>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
<a href="vector">vector</a> addition</p></div>
</div>
<div class="Element6">
<a name="000D"></a>Vec3_tpl::+ Operator (Vec3_tpl&lt;F1&gt; &amp;, Vec2_tpl&lt;F2&gt; &amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> F1,<strong><span style="color: #871F78">class</span></strong> F2&gt; <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">+</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; &amp; <strong><span style="color: #660000">v0</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec2_tpl">Vec2_tpl</a>&lt;F2&gt; &amp; <strong><span style="color: #660000">v1</span></strong>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
<a href="vector">vector</a> addition</p></div>
</div>
<div class="Element6">
<a name="000E"></a>Vec3_tpl::+ Operator (Vec3_tpl&lt;F1&gt; &amp;, Vec3_tpl&lt;F2&gt; &amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> F1,<strong><span style="color: #871F78">class</span></strong> F2&gt; <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">+</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; &amp; <strong><span style="color: #660000">v0</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F2&gt; &amp; <strong><span style="color: #660000">v1</span></strong>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
<a href="vector">vector</a> addition</p></div>
</div>
<div class="Element6">
<a name="000F"></a>Vec3_tpl::+= Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> F1,<strong><span style="color: #871F78">class</span></strong> F2&gt; <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt;&amp; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">+=</span></strong>(<a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; &amp; <strong><span style="color: #660000">v0</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F2&gt; &amp; <strong><span style="color: #660000">v1</span></strong>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
<a href="vector">vector</a> self-addition</p></div>
</div>
<div class="Element6">
<a name="0010"></a>Vec3_tpl::-= Operator</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> F1,<strong><span style="color: #871F78">class</span></strong> F2&gt; <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt;&amp; <strong><span style="color: #871F78">operator</span></strong> <strong><span style="color: #660000">-=</span></strong>(<a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; &amp; <strong><span style="color: #660000">v0</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F2&gt; &amp; <strong><span style="color: #660000">v1</span></strong>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
<a href="vector">vector</a> self-subtraction</p></div>
</div>
<div class="Element6">
<a name="0051"></a>Vec3_tpl::BiRandom Method</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><a href="Vec3_tpl#0059">Vec3</a> <strong><span style="color: #660000">BiRandom</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0059">Vec3</a>&amp; <strong><span style="color: #660000">vRange</span></strong>);</pre></div></div>
<div class="Element6">
<a name="0053"></a>Vec3_tpl::IsEquivalent Method</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> F&gt; <strong><span style="color: #871F78">bool</span></strong> <strong><span style="color: #660000">IsEquivalent</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">v0</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp; <strong><span style="color: #660000">v1</span></strong>, f32 <strong><span style="color: #660000">epsilon</span></strong> = <a href="Math_Macros#002C">VEC_EPSILON</a>);</pre></div></div>
<div class="Element6">
<a name="0054"></a>Vec3_tpl::Random Method (Vec3&amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><a href="Vec3_tpl#0059">Vec3</a> <strong><span style="color: #660000">Random</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0059">Vec3</a>&amp; <strong><span style="color: #660000">v</span></strong>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
Random <a href="vector">vector</a> functions.</p></div>
</div>
<div class="Element6">
<a name="0055"></a>Vec3_tpl::Random Method (Vec3&amp;, Vec3&amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><a href="Vec3_tpl#0059">Vec3</a> <strong><span style="color: #660000">Random</span></strong>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0059">Vec3</a>&amp; <strong><span style="color: #660000">a</span></strong>, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0059">Vec3</a>&amp; <strong><span style="color: #660000">b</span></strong>);</pre></div></div>
<div class="Element6">
<a name="0056"></a>Vec3_tpl::Set Method</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; <strong><span style="color: #660000">Set</span></strong>(<strong><span style="color: #871F78">const</span></strong> F <strong><span style="color: #660000">xval</span></strong>, <strong><span style="color: #871F78">const</span></strong> F <strong><span style="color: #660000">yval</span></strong>, <strong><span style="color: #871F78">const</span></strong> F <strong><span style="color: #660000">zval</span></strong>);</pre></div></div>
<div class="Element6">
<a name="0057"></a>Vec3_tpl::SphereRandom Method</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><a href="Vec3_tpl#0059">Vec3</a> <strong><span style="color: #660000">SphereRandom</span></strong>(<strong><span style="color: #871F78">float</span></strong> <strong><span style="color: #660000">fRadius</span></strong>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
<a href="Vec3_tpl#0054">Random</a> point in sphere.</p></div>
</div>
<div class="Element6">
<a name="005A"></a>Vec3_tpl::Vec3_tpl Constructor ()</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #660000">Vec3_tpl</span></strong>();</pre></div></div>
<div class="Element6">
<a name="005B"></a>Vec3_tpl::Vec3_tpl Constructor (Ang3_tpl&lt;F&gt;&amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">explicit</span></strong> <strong><span style="color: #660000">Vec3_tpl</span></strong>&lt;F&gt;(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;F&gt;&amp; <strong><span style="color: #660000">v</span></strong>);</pre></div></div>
<div class="Element6">
<a name="005C"></a>Vec3_tpl::Vec3_tpl Constructor (Ang3_tpl&lt;T&gt;&amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> T&gt;  <strong><span style="color: #871F78">explicit</span></strong> <strong><span style="color: #660000">Vec3_tpl</span></strong>&lt;F&gt;(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl#0011">Ang3_tpl</a>&lt;T&gt;&amp; <strong><span style="color: #660000">v</span></strong>);</pre></div></div>
<div class="Element6">
<a name="005D"></a>Vec3_tpl::Vec3_tpl Constructor (F)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">explicit</span></strong> <strong><span style="color: #660000">Vec3_tpl</span></strong>(F <strong><span style="color: #660000">f</span></strong>);</pre></div></div>
<div class="Element6">
<a name="005E"></a>Vec3_tpl::Vec3_tpl Constructor (F, F, F)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #660000">Vec3_tpl</span></strong>(F <strong><span style="color: #660000">vx</span></strong>, F <strong><span style="color: #660000">vy</span></strong>, F <strong><span style="color: #660000">vz</span></strong>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
!</p>
<ul class="Element630">
<li class="Element600">constructors and bracket-operator to initialize a <a href="vector">vector</a> </li>
</ul><p class="Element10">
*</p>
<ul class="Element630">
<li class="Element600">Example:</li>
<li class="Element600"><a href="Vec3_tpl#0059">Vec3</a> v0=<a href="Vec3_tpl#0059">Vec3</a>(1,2,3);</li>
<li class="Element600"><a href="Vec3_tpl#0059">Vec3</a> v1(1,2,3);</li>
<li class="Element600">v2.<a href="Vec3_tpl#0056">Set</a>(1,2,3);</li>
</ul></div>
</div>
<div class="Element6">
<a name="0062"></a>Vec3_tpl::Vec3_tpl Constructor (Vec2_tpl&lt;F&gt;&amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #660000">Vec3_tpl</span></strong>&lt;F&gt;(<strong><span style="color: #871F78">const</span></strong> <a href="Vec2_tpl">Vec2_tpl</a>&lt;F&gt;&amp; <strong><span style="color: #660000">v</span></strong>);</pre></div></div>
<div class="Element6">
<a name="0063"></a>Vec3_tpl::Vec3_tpl Constructor (Vec2_tpl&lt;T&gt;&amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> T&gt; <strong><span style="color: #660000">Vec3_tpl</span></strong>&lt;F&gt;(<strong><span style="color: #871F78">const</span></strong> <a href="Vec2_tpl">Vec2_tpl</a>&lt;T&gt;&amp; <strong><span style="color: #660000">v</span></strong>);</pre></div></div>
<div class="Element6">
<a name="0064"></a>Vec3_tpl::Vec3_tpl Constructor (Vec3_tpl&amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #660000">Vec3_tpl</span></strong>(<strong><span style="color: #871F78">const</span></strong> Vec3_tpl&amp; <strong><span style="color: #660000">v</span></strong>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
!</p>
<ul class="Element630">
<li class="Element600">the copy/casting/assignement constructor </li>
</ul><p class="Element10">
*</p>
<ul class="Element630">
<li class="Element600">Example:</li>
<li class="Element600"><a href="Vec3_tpl#0059">Vec3</a> v0=v1;</li>
<li class="Element600"><a href="Vec3_tpl#0059">Vec3</a> v0=<a href="Vec3_tpl#0059">Vec3</a>(angle);</li>
<li class="Element600"><a href="Vec3_tpl#0059">Vec3</a> v0=<a href="Vec3_tpl#0059">Vec3</a>(vector4);</li>
</ul></div>
</div>
<div class="Element6">
<a name="0065"></a>Vec3_tpl::Vec3_tpl Constructor (Vec3_tpl&lt;F1&gt;&amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> F1&gt; <strong><span style="color: #660000">Vec3_tpl</span></strong>&lt;F&gt;(<strong><span style="color: #871F78">const</span></strong> Vec3_tpl&lt;F1&gt;&amp; <strong><span style="color: #660000">v</span></strong>);</pre></div></div>
<div class="Element6">
<a name="0066"></a>Vec3_tpl::Vec3_tpl Constructor (Vec4_tpl&lt;F&gt; &amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">explicit</span></strong> <strong><span style="color: #660000">Vec3_tpl</span></strong>&lt;F&gt;(<strong><span style="color: #871F78">const</span></strong> Vec4_tpl&lt;F&gt; &amp; <strong><span style="color: #660000">v</span></strong>);</pre></div></div>
<div class="Element6">
<a name="0067"></a>Vec3_tpl::Vec3_tpl Constructor (Vec4_tpl&lt;T&gt; &amp;)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> T&gt;  <strong><span style="color: #871F78">explicit</span></strong> <strong><span style="color: #660000">Vec3_tpl</span></strong>&lt;F&gt;(<strong><span style="color: #871F78">const</span></strong> Vec4_tpl&lt;T&gt; &amp; <strong><span style="color: #660000">v</span></strong>);</pre></div></div>
<div class="Element6">
<a name="005F"></a>Vec3_tpl::Vec3_tpl Constructor (type_max)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #660000">Vec3_tpl</span></strong>(<a href="Math_Enums#0011">type_max</a>);</pre></div></div>
<div class="Element6">
<a name="0060"></a>Vec3_tpl::Vec3_tpl Constructor (type_min)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #660000">Vec3_tpl</span></strong>(<a href="Math_Enums#0013">type_min</a>);</pre></div></div>
<div class="Element6">
<a name="0061"></a>Vec3_tpl::Vec3_tpl Constructor (type_zero)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #660000">Vec3_tpl</span></strong>(<a href="Math_Enums#0015">type_zero</a>);</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
!</p>
<ul class="Element630">
<li class="Element600">template specialization to initialize a <a href="vector">vector</a> </li>
</ul><p class="Element10">
*</p>
<ul class="Element630">
<li class="Element600">Example:</li>
<li class="Element600"><a href="Vec3_tpl#0059">Vec3</a> v0=<a href="Vec3_tpl#0059">Vec3</a>(ZERO);</li>
<li class="Element600"><a href="Vec3_tpl#0059">Vec3</a> v1=<a href="Vec3_tpl#0059">Vec3</a>(MIN);</li>
<li class="Element600"><a href="Vec3_tpl#0059">Vec3</a> v2=<a href="Vec3_tpl#0059">Vec3</a>(MAX);</li>
</ul></div>
</div>
<div class="Element6">
<a name="0068"></a>Vec3_tpl::Vec3_tpl&lt;f32&gt;::Vec3_tpl Method (type_max)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;&gt; <strong><span style="color: #871F78">inline</span></strong> <strong><span style="color: #660000"><a href="Vec3_tpl">Vec3_tpl</a>&lt;f32&gt;::<a href="Vec3_tpl">Vec3_tpl</a></span></strong>(<a href="Math_Enums#0011">type_max</a>);</pre></div></div>
<div class="Element6">
<a name="0069"></a>Vec3_tpl::Vec3_tpl&lt;f32&gt;::Vec3_tpl Method (type_min)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;&gt; <strong><span style="color: #871F78">inline</span></strong> <strong><span style="color: #660000"><a href="Vec3_tpl">Vec3_tpl</a>&lt;f32&gt;::<a href="Vec3_tpl">Vec3_tpl</a></span></strong>(<a href="Math_Enums#0013">type_min</a>);</pre></div></div>
<div class="Element6">
<a name="006A"></a>Vec3_tpl::Vec3_tpl&lt;f64&gt;::Vec3_tpl Method (type_max)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;&gt; <strong><span style="color: #871F78">inline</span></strong> <strong><span style="color: #660000"><a href="Vec3_tpl">Vec3_tpl</a>&lt;f64&gt;::<a href="Vec3_tpl">Vec3_tpl</a></span></strong>(<a href="Math_Enums#0011">type_max</a>);</pre></div></div>
<div class="Element6">
<a name="006B"></a>Vec3_tpl::Vec3_tpl&lt;f64&gt;::Vec3_tpl Method (type_min)</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">template</span></strong> &lt;&gt; <strong><span style="color: #871F78">inline</span></strong> <strong><span style="color: #660000"><a href="Vec3_tpl">Vec3_tpl</a>&lt;f64&gt;::<a href="Vec3_tpl">Vec3_tpl</a></span></strong>(<a href="Math_Enums#0013">type_min</a>);</pre></div></div>
<div class="Element6">
<a name="0052"></a>friend Vec3_tpl&lt;F&gt; operator * (f32 f, const Vec3_tpl &amp;vec) { return Vec3_tpl((F)(f*vec.x), (F)(f*vec.y), (F)(f*vec.z)); } Vec3_tpl&lt;F&gt;&amp; operator *= (F k) { x*=k;y*=k;z*=k; return *this; } Vec3_tpl&lt;F&gt;&amp; operator /= (F k) { k=(F)1.0/k; x*=k;y*=k;z*=k; return *this; } Vec3_tpl&lt;F&gt; operator - ( void ) const { return Vec3_tpl&lt;F&gt;(-x,-y,-z); } Vec3_tpl&lt;F&gt;&amp; Flip() { x=-x; y=-y; z=-z; return *this; } F &amp;operator [] (int32 index) { assert(index&gt;=0 &amp;&amp; index&lt;=2); return ((F*)this)[index]; } F operator [] (int32 index) const { assert(index&gt;=0 &amp;&amp; index&lt;=2); return ((F*)this)[index]; } bool operator==(const Vec3_tpl&lt;F&gt; &amp;vec) { return x == vec.x &amp;&amp; y == vec.y &amp;&amp; z == vec.z; } bool operator!=(const Vec3_tpl&lt;F&gt; &amp;vec) { return !(*this == vec); } friend bool operator ==(const Vec3_tpl&lt;F&gt; &amp;v0, const Vec3_tpl&lt;F&gt; &amp;v1) { return ((v0.x==v1.x) &amp;&amp; (v0.y==v1.y) &amp;&amp; (v0.z==v1.z)); } friend bool operator !=(const Vec3_tpl&lt;F&gt; &amp;v0, const Vec3_tpl&lt;F&gt; &amp;v1) { return !(v0==v1); } bool IsZero(F e = (F)0.0) const { return (fabs_tpl(x) &lt;= e) &amp;&amp; (fabs_tpl(y) &lt;= e) &amp;&amp; (fabs_tpl(z) &lt;= e); } bool IsZeroFast(F e = (F)0.0003) const { return (fabs_tpl(x) + fabs_tpl(y) + fabs_tpl(z)) &lt;= e; } bool IsEquivalent(const Vec3_tpl&lt;F&gt; &amp;v1, F epsilon=VEC_EPSILON) const { assert(v1.IsValid()); assert(this-&gt;IsValid()); return ((fabs_tpl(x-v1.x) &lt;= epsilon) &amp;&amp; (fabs_tpl(y-v1.y) &lt;= epsilon)&amp;&amp; (fabs_tpl(z-v1.z) &lt;= epsilon)); } static bool IsEquivalent(const Vec3_tpl&lt;F&gt;&amp; v0, const Vec3_tpl&lt;F&gt;&amp; v1, F epsilon=VEC_EPSILON) { assert(v0.IsValid()); assert(v1.IsValid()); return ((fabs_tpl(v0.x-v1.x) &lt;= epsilon) &amp;&amp; (fabs_tpl(v0.y-v1.y) &lt;= epsilon)&amp;&amp; (fabs_tpl(v0.z-v1.z) &lt;= epsilon)); } bool IsUnit(F epsilon=VEC_EPSILON) const { return (fabs_tpl(1 - GetLengthSquared()) &lt;= epsilon); } bool IsValid() const { if (!NumberValid(x)) return false; if (!NumberValid(y)) return false; if (!NumberValid(z)) return false; return true; } void SetLength(F fLen) { F fLenMe = GetLengthSquared(); if(fLenMe&lt;0.00001f*0.00001f) return; fLenMe = fLen * isqrt_tpl(fLenMe); x*=fLenMe; y*=fLenMe; z*=fLenMe; } void ClampLength(F maxLength) { F sqrLength = GetLengthSquared(); if (sqrLength &gt; (maxLength * maxLength)) { F scale = maxLength * isqrt_tpl(sqrLength); x *= scale; y *= scale; z *= scale; } } F GetLength() const { return sqrt_tpl(x*x+y*y+z*z); } F GetLengthFloat() const { return GetLength(); } F GetLengthFast() const { return sqrt_fast_tpl(x*x+y*y+z*z); } F GetLengthSquared() const { return x*x+y*y+z*z; } F GetLengthSquaredFloat() const { return GetLengthSquared(); } F GetLength2D() const { return sqrt_tpl(x*x+y*y); } F GetLengthSquared2D() const { return x*x+y*y; } F GetDistance(const Vec3_tpl&lt;F&gt; &amp;vec1) const { return sqrt_tpl((x-vec1.x)*(x-vec1.x)+(y-vec1.y)*(y-vec1.y)+(z-vec1.z)*(z-vec1.z)); } F GetSquaredDistance ( const Vec3_tpl&lt;F&gt; &amp;v) const { return (x-v.x)*(x-v.x) + (y-v.y)*(y-v.y) + (z-v.z)*(z-v.z); } F GetSquaredDistance2D ( const Vec3_tpl&lt;F&gt; &amp;v) const { return (x-v.x)*(x-v.x) + (y-v.y)*(y-v.y); } void Normalize() { assert(this-&gt;IsValid()); F fInvLen = isqrt_safe_tpl( x*x+y*y+z*z ); x*=fInvLen; y*=fInvLen; z*=fInvLen; } void NormalizeFast() { assert(this-&gt;IsValid()); F fInvLen = isqrt_fast_tpl( x*x+y*y+z*z ); x*=fInvLen; y*=fInvLen; z*=fInvLen; } F NormalizeSafe(const struct Vec3_tpl&lt;F&gt;&amp; safe = Vec3Constants&lt;F&gt;::fVec3_Zero) { assert(this-&gt;IsValid()); F fLen2 = x*x+y*y+z*z; IF (VecPrecisionValues&lt;F&gt;::CheckGreater(fLen2), 1) { F fInvLen = isqrt_tpl(fLen2); x*=fInvLen; y*=fInvLen; z*=fInvLen; return F(1) / fInvLen; } else { *this = safe; return F(0); } } Vec3_tpl GetNormalizedFloat() const { return GetNormalized(); } Vec3_tpl GetNormalized() const { F fInvLen = isqrt_safe_tpl( x*x+y*y+z*z ); return *this * fInvLen; } Vec3_tpl GetNormalizedFast() const { F fInvLen = isqrt_fast_tpl( x*x+y*y+z*z ); return *this * fInvLen; } Vec3_tpl GetNormalizedSafe(const struct Vec3_tpl&lt;F&gt;&amp; safe = Vec3Constants&lt;F&gt;::fVec3_OneX) const { F fLen2 = x*x+y*y+z*z; IF (VecPrecisionValues&lt;F&gt;::CheckGreater(fLen2), 1) { F fInvLen = isqrt_tpl(fLen2); return *this * fInvLen; } else { return safe; } } Vec3_tpl GetNormalizedSafeFloat(const struct Vec3_tpl&lt;F&gt;&amp; safe = Vec3Constants&lt;F&gt;::fVec3_OneX) const { return GetNormalizedSafe(safe); } Vec3_tpl GetPermutated(int new_z) const { return Vec3_tpl(*(&amp;x+inc_mod3[new_z]), *(&amp;x+dec_mod3[new_z]), *(&amp;x+new_z)); } F GetVolume() const { return x*y*z; } Vec3_tpl&lt;F&gt; abs() const { return Vec3_tpl(fabs_tpl(x),fabs_tpl(y),fabs_tpl(z)); } void CheckMin(const Vec3_tpl&lt;F&gt; other) { x = min(other.x,x); y = min(other.y,y); z = min(other.z,z); } void CheckMax(const Vec3_tpl&lt;F&gt; other) { x = max(other.x,x); y = max(other.y,y); z = max(other.z,z); } void SetOrthogonal( const Vec3_tpl&lt;F&gt;&amp; v ) { sqr(F(0.9))*(v|v)-v.x*v.x&lt;0 ? (x=-v.z,y=0,z=v.x) : (x=0,y=v.z,z=-v.y); } Vec3_tpl GetOrthogonal() const { return sqr(F(0.9))*(x*x+y*y+z*z)-x*x&lt;0 ? Vec3_tpl&lt;F&gt;(-z,0,x) : Vec3_tpl&lt;F&gt;(0,z,-y); } void SetProjection( const Vec3_tpl&amp; i, const Vec3_tpl&amp; n ) { *this = i-n*(n|i); } static Vec3_tpl&lt;F&gt; CreateProjection( const Vec3_tpl&amp; i, const Vec3_tpl&amp; n ) { return i-n*(n|i); } void SetReflection( const Vec3_tpl&lt;F&gt;&amp; i, const Vec3_tpl&lt;F&gt;&amp; n) { *this=(n*(i|n)*2)-i; } static Vec3_tpl&lt;F&gt; CreateReflection( const Vec3_tpl&lt;F&gt;&amp; i, const Vec3_tpl&lt;F&gt;&amp; n ) { return (n*(i|n)*2)-i; } void SetLerp( const Vec3_tpl&lt;F&gt;&amp; p, const Vec3_tpl&lt;F&gt;&amp; q, F t ) { const Vec3_tpl&lt;F&gt; diff = q-p; *this = p + (diff*t); } static Vec3_tpl&lt;F&gt; CreateLerp( const Vec3_tpl&lt;F&gt;&amp; p, const Vec3_tpl&lt;F&gt;&amp; q, F t ) { const Vec3_tpl&lt;F&gt; diff = q-p; return p+(diff*t); } void SetSlerp( const Vec3_tpl&lt;F&gt;&amp; p, const Vec3_tpl&lt;F&gt;&amp; q, F t ) { assert(p.IsUnit(0.005f)); assert(q.IsUnit(0.005f)); F cosine = clamp_tpl((p|q), F(-1), F(1)); if(cosine&gt;=(F)0.99) { SetLerp(p,q,t); Normalize(); } else { F rad = acos_tpl(cosine); F scale_0 = sin_tpl((1-t)*rad); F scale_1 = sin_tpl(t*rad); *this=(p*scale_0 + q*scale_1) / sin_tpl(rad); Normalize(); } } static Vec3_tpl&lt;F&gt; CreateSlerp( const Vec3_tpl&lt;F&gt;&amp; p, const Vec3_tpl&lt;F&gt;&amp; q, F t ) { Vec3_tpl&lt;F&gt; v; v.SetSlerp(p,q,t); return v; } void SetQuadraticCurve(const Vec3_tpl&lt;F&gt;&amp; v0, const Vec3_tpl&lt;F&gt;&amp; v1, const Vec3_tpl&lt;F&gt;&amp; v2, F t1) { F t0=1.0f-t1; *this = t0*t0*v0 + t0*t1*2.0f*v1 + t1*t1*v2; } static Vec3_tpl&lt;F&gt; CreateQuadraticCurve(const Vec3_tpl&lt;F&gt;&amp; v0, const Vec3_tpl&lt;F&gt;&amp; v1, const Vec3_tpl&lt;F&gt;&amp; v2, F t) { Vec3_tpl&lt;F&gt; ip; ip.SetQuadraticCurve(v0,v1,v2,t); return ip; } void SetCubicCurve(const Vec3_tpl&lt;F&gt;&amp; v0, const Vec3_tpl&lt;F&gt;&amp; v1, const Vec3_tpl&lt;F&gt;&amp; v2, const Vec3_tpl&lt;F&gt;&amp; v3, F t1) { F t0=1.0f-t1; *this=t0*t0*t0*v0 + 3*t0*t0*t1*v1 + 3*t0*t1*t1*v2 + t1*t1*t1*v3; } static Vec3_tpl&lt;F&gt; CreateCubicCurve(const Vec3_tpl&lt;F&gt;&amp; v0, const Vec3_tpl&lt;F&gt;&amp; v1, const Vec3_tpl&lt;F&gt;&amp; v2, const Vec3_tpl&lt;F&gt;&amp; v3, F t) { Vec3_tpl&lt;F&gt; ip; ip.SetCubicCurve(v0,v1,v2,v3,t); return ip; } void SetQuadraticSpline(const Vec3_tpl&lt;F&gt;&amp; v0, const Vec3_tpl&lt;F&gt;&amp; v1, const Vec3_tpl&lt;F&gt;&amp; v2, F t) { SetQuadraticCurve(v0,v1-(v0*0.5f+v1+v2*0.5f-v1*2.0f),v2,t); } static Vec3_tpl&lt;F&gt; CreateQuadraticSpline(const Vec3_tpl&lt;F&gt;&amp; v0, const Vec3_tpl&lt;F&gt;&amp; v1, const Vec3_tpl&lt;F&gt;&amp; v2, F t) { Vec3_tpl&lt;F&gt; ip; ip.SetQuadraticSpline(v0,v1,v2,t); return ip; } void SetRandomDirection( void ) { int nMax = 5; F Length2; do { x = 1.0f - 2.0f*cry_frand(); y = 1.0f - 2.0f*cry_frand(); z = 1.0f - 2.0f*cry_frand(); Length2 = len2(); nMax--; } while((Length2&gt;1.0f || Length2&lt;0.0001f) &amp;&amp; nMax &gt; 0); F InvScale = isqrt_tpl(Length2); x *= InvScale; y *= InvScale; z *= InvScale; } Vec3_tpl&lt;F&gt; GetRotated(const Vec3_tpl&lt;F&gt;&amp; axis, F angle) const { return GetRotated(axis,cos_tpl(angle),sin_tpl(angle)); } Vec3_tpl&lt;F&gt; GetRotated(const Vec3_tpl&lt;F&gt;&amp; axis, F cosa,F sina) const { Vec3_tpl&lt;F&gt; zax = axis*(*this|axis); Vec3_tpl&lt;F&gt; xax = *this-zax; Vec3_tpl&lt;F&gt; yax = axis%xax; return xax*cosa + yax*sina + zax; } Vec3_tpl&lt;F&gt; GetRotated(const Vec3_tpl&amp; center,const Vec3_tpl&lt;F&gt;&amp; axis, F angle) const { return center+(*this-center).GetRotated(axis,angle); } Vec3_tpl&lt;F&gt; GetRotated(const Vec3_tpl&lt;F&gt;&amp; center,const Vec3_tpl&lt;F&gt;&amp; axis, F cosa,F sina) const { return center+(*this-center).GetRotated(axis,cosa,sina); } Vec3_tpl CompMul( const Vec3_tpl&lt;F&gt; rhs ) const { return( Vec3_tpl( x * rhs.x, y * rhs.y, z * rhs.z ) ); } F Dot (const Vec3_tpl&lt;F&gt; v) const { return x*v.x + y*v.y + z*v.z; } Vec3_tpl&lt;F&gt; Cross (const Vec3_tpl&lt;F&gt; vec2) const { return Vec3_tpl&lt;F&gt;( y*vec2.z - z*vec2.y, z*vec2.x - x*vec2.z, x*vec2.y - y*vec2.x); } DEPRICATED operator F* () { return (F*)this; } template &lt;class T&gt; explicit DEPRICATED Vec3_tpl(const T *src) { x=src[0]; y=src[1]; z=src[2]; } Vec3_tpl&amp; zero() { x=y=z=0; return *this; } F len() const { return sqrt_tpl(x*x+y*y+z*z); } F len2() const { return x*x +y*y + z*z; } Vec3_tpl&amp; normalize() { F len2 = x*x+y*y+z*z; if (len2&gt;(F)1e-20f) { F rlen = isqrt_tpl(len2); x*=rlen; y*=rlen; z*=rlen; } else Set(0,0,1); return *this; } Vec3_tpl normalized() const { F len2 = x*x+y*y+z*z; if (len2&gt;(F)1e-20f) { F rlen = isqrt_tpl(len2); return Vec3_tpl(x*rlen,y*rlen,z*rlen); } else return Vec3_tpl(0,0,1); } template&lt;class F1&gt; Vec3_tpl&lt;F1&gt; sub(const Vec3_tpl&lt;F1&gt;&amp; v) const { return Vec3_tpl&lt;F1&gt;(x-v.x, y-v.y, z-v.z); } template&lt;class F1&gt; Vec3_tpl&lt;F1&gt; scale(const F1 k) const { return Vec3_tpl&lt;F&gt;(x*k,y*k,z*k); } template&lt;class F1&gt; F1 dot(const Vec3_tpl&lt;F1&gt;&amp; v) const { return (F1)(x*v.x+y*v.y+z*v.z); } template&lt;class F1&gt; Vec3_tpl&lt;F1&gt; cross(const Vec3_tpl&lt;F1&gt; &amp;v) const { return Vec3_tpl&lt;F1&gt;(y*v.z-z*v.y, z*v.x-x*v.z, x*v.y-y*v.x); } AUTO_STRUCT_INFO } Friend</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">friend</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; <strong><span style="color: #871F78">operator</span></strong> * (f32 f, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a> &amp;vec) { <strong><span style="color: #871F78">return</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>((F)(f*vec.<a href="Vec3_tpl#006F">x</a>), (F)(f*vec.<a href="Vec3_tpl#0070">y</a>), (F)(f*vec.<a href="Vec3_tpl#0071">z</a>)); } <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; <strong><span style="color: #871F78">operator</span></strong> *= (F k) { <a href="Vec3_tpl#006F">x</a>*=k;<a href="Vec3_tpl#0070">y</a>*=k;<a href="Vec3_tpl#0071">z</a>*=k; <strong><span style="color: #871F78">return</span></strong> *<strong><span style="color: #871F78">this</span></strong>; } <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; <strong><span style="color: #871F78">operator</span></strong> /= (F k) { k=(F)1.0/k; <a href="Vec3_tpl#006F">x</a>*=k;<a href="Vec3_tpl#0070">y</a>*=k;<a href="Vec3_tpl#0071">z</a>*=k; <strong><span style="color: #871F78">return</span></strong> *<strong><span style="color: #871F78">this</span></strong>; } <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; <strong><span style="color: #871F78">operator</span></strong> - ( <strong><span style="color: #871F78">void</span></strong> ) <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;(-<a href="Vec3_tpl#006F">x</a>,-<a href="Vec3_tpl#0070">y</a>,-<a href="Vec3_tpl#0071">z</a>); } <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; Flip() { <a href="Vec3_tpl#006F">x</a>=-<a href="Vec3_tpl#006F">x</a>; <a href="Vec3_tpl#0070">y</a>=-<a href="Vec3_tpl#0070">y</a>; <a href="Vec3_tpl#0071">z</a>=-<a href="Vec3_tpl#0071">z</a>; <strong><span style="color: #871F78">return</span></strong> *<strong><span style="color: #871F78">this</span></strong>; } F &amp;<strong><span style="color: #871F78">operator</span></strong> [] (int32 index) { assert(index&gt;=0 &amp;&amp; index&lt;=2); <strong><span style="color: #871F78">return</span></strong> ((F*)<strong><span style="color: #871F78">this</span></strong>)[index]; } F <strong><span style="color: #871F78">operator</span></strong> [] (int32 index) <strong><span style="color: #871F78">const</span></strong> { assert(index&gt;=0 &amp;&amp; index&lt;=2); <strong><span style="color: #871F78">return</span></strong> ((F*)<strong><span style="color: #871F78">this</span></strong>)[index]; } <strong><span style="color: #871F78">bool</span></strong> <strong><span style="color: #871F78">operator</span></strong>==(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp;vec) { <strong><span style="color: #871F78">return</span></strong> <a href="Vec3_tpl#006F">x</a> == vec.<a href="Vec3_tpl#006F">x</a> &amp;&amp; <a href="Vec3_tpl#0070">y</a> == vec.<a href="Vec3_tpl#0070">y</a> &amp;&amp; <a href="Vec3_tpl#0071">z</a> == vec.<a href="Vec3_tpl#0071">z</a>; } <strong><span style="color: #871F78">bool</span></strong> <strong><span style="color: #871F78">operator</span></strong>!=(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp;vec) { <strong><span style="color: #871F78">return</span></strong> !(*<strong><span style="color: #871F78">this</span></strong> == vec); } <strong><span style="color: #871F78">friend</span></strong> <strong><span style="color: #871F78">bool</span></strong> <strong><span style="color: #871F78">operator</span></strong> ==(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp;v0, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp;v1) { <strong><span style="color: #871F78">return</span></strong> ((v0.<a href="Vec3_tpl#006F">x</a>==v1.<a href="Vec3_tpl#006F">x</a>) &amp;&amp; (v0.<a href="Vec3_tpl#0070">y</a>==v1.<a href="Vec3_tpl#0070">y</a>) &amp;&amp; (v0.<a href="Vec3_tpl#0071">z</a>==v1.<a href="Vec3_tpl#0071">z</a>)); } <strong><span style="color: #871F78">friend</span></strong> <strong><span style="color: #871F78">bool</span></strong> <strong><span style="color: #871F78">operator</span></strong> !=(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp;v0, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp;v1) { <strong><span style="color: #871F78">return</span></strong> !(v0==v1); } <strong><span style="color: #871F78">bool</span></strong> IsZero(F e = (F)0.0) <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> (fabs_tpl(<a href="Vec3_tpl#006F">x</a>) &lt;= e) &amp;&amp; (fabs_tpl(<a href="Vec3_tpl#0070">y</a>) &lt;= e) &amp;&amp; (fabs_tpl(<a href="Vec3_tpl#0071">z</a>) &lt;= e); } <strong><span style="color: #871F78">bool</span></strong> IsZeroFast(F e = (F)0.0003) <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> (fabs_tpl(<a href="Vec3_tpl#006F">x</a>) + fabs_tpl(<a href="Vec3_tpl#0070">y</a>) + fabs_tpl(<a href="Vec3_tpl#0071">z</a>)) &lt;= e; } <strong><span style="color: #871F78">bool</span></strong> <a href="Vec3_tpl#0053">IsEquivalent</a>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp;v1, F epsilon=<a href="Math_Macros#002C">VEC_EPSILON</a>) <strong><span style="color: #871F78">const</span></strong> { assert(v1.IsValid()); assert(<strong><span style="color: #871F78">this</span></strong>-&gt;IsValid()); <strong><span style="color: #871F78">return</span></strong> ((fabs_tpl(<a href="Vec3_tpl#006F">x</a>-v1.<a href="Vec3_tpl#006F">x</a>) &lt;= epsilon) &amp;&amp; (fabs_tpl(<a href="Vec3_tpl#0070">y</a>-v1.<a href="Vec3_tpl#0070">y</a>) &lt;= epsilon)&amp;&amp; (fabs_tpl(<a href="Vec3_tpl#0071">z</a>-v1.<a href="Vec3_tpl#0071">z</a>) &lt;= epsilon)); } <strong><span style="color: #871F78">static</span></strong> <strong><span style="color: #871F78">bool</span></strong> <a href="Vec3_tpl#0053">IsEquivalent</a>(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v0, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v1, F epsilon=<a href="Math_Macros#002C">VEC_EPSILON</a>) { assert(v0.IsValid()); assert(v1.IsValid()); <strong><span style="color: #871F78">return</span></strong> ((fabs_tpl(v0.<a href="Vec3_tpl#006F">x</a>-v1.<a href="Vec3_tpl#006F">x</a>) &lt;= epsilon) &amp;&amp; (fabs_tpl(v0.<a href="Vec3_tpl#0070">y</a>-v1.<a href="Vec3_tpl#0070">y</a>) &lt;= epsilon)&amp;&amp; (fabs_tpl(v0.<a href="Vec3_tpl#0071">z</a>-v1.<a href="Vec3_tpl#0071">z</a>) &lt;= epsilon)); } <strong><span style="color: #871F78">bool</span></strong> IsUnit(F epsilon=<a href="Math_Macros#002C">VEC_EPSILON</a>) <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> (fabs_tpl(1 - GetLengthSquared()) &lt;= epsilon); } <strong><span style="color: #871F78">bool</span></strong> IsValid() <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">if</span></strong> (!NumberValid(<a href="Vec3_tpl#006F">x</a>)) <strong><span style="color: #871F78">return</span></strong> <strong><span style="color: #871F78">false</span></strong>; <strong><span style="color: #871F78">if</span></strong> (!NumberValid(<a href="Vec3_tpl#0070">y</a>)) <strong><span style="color: #871F78">return</span></strong> <strong><span style="color: #871F78">false</span></strong>; <strong><span style="color: #871F78">if</span></strong> (!NumberValid(<a href="Vec3_tpl#0071">z</a>)) <strong><span style="color: #871F78">return</span></strong> <strong><span style="color: #871F78">false</span></strong>; <strong><span style="color: #871F78">return</span></strong> <strong><span style="color: #871F78">true</span></strong>; } <strong><span style="color: #871F78">void</span></strong> SetLength(F fLen) { F fLenMe = GetLengthSquared(); <strong><span style="color: #871F78">if</span></strong>(fLenMe&lt;0.00001f*0.00001f) <strong><span style="color: #871F78">return</span></strong>; fLenMe = fLen * isqrt_tpl(fLenMe); <a href="Vec3_tpl#006F">x</a>*=fLenMe; <a href="Vec3_tpl#0070">y</a>*=fLenMe; <a href="Vec3_tpl#0071">z</a>*=fLenMe; } <strong><span style="color: #871F78">void</span></strong> ClampLength(F maxLength) { F sqrLength = GetLengthSquared(); <strong><span style="color: #871F78">if</span></strong> (sqrLength &gt; (maxLength * maxLength)) { F scale = maxLength * isqrt_tpl(sqrLength); <a href="Vec3_tpl#006F">x</a> *= scale; <a href="Vec3_tpl#0070">y</a> *= scale; <a href="Vec3_tpl#0071">z</a> *= scale; } } F GetLength() <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> sqrt_tpl(<a href="Vec3_tpl#006F">x</a>*<a href="Vec3_tpl#006F">x</a>+<a href="Vec3_tpl#0070">y</a>*<a href="Vec3_tpl#0070">y</a>+<a href="Vec3_tpl#0071">z</a>*<a href="Vec3_tpl#0071">z</a>); } F GetLengthFloat() <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> GetLength(); } F GetLengthFast() <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> sqrt_fast_tpl(<a href="Vec3_tpl#006F">x</a>*<a href="Vec3_tpl#006F">x</a>+<a href="Vec3_tpl#0070">y</a>*<a href="Vec3_tpl#0070">y</a>+<a href="Vec3_tpl#0071">z</a>*<a href="Vec3_tpl#0071">z</a>); } F GetLengthSquared() <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> <a href="Vec3_tpl#006F">x</a>*<a href="Vec3_tpl#006F">x</a>+<a href="Vec3_tpl#0070">y</a>*<a href="Vec3_tpl#0070">y</a>+<a href="Vec3_tpl#0071">z</a>*<a href="Vec3_tpl#0071">z</a>; } F GetLengthSquaredFloat() <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> GetLengthSquared(); } F GetLength2D() <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> sqrt_tpl(<a href="Vec3_tpl#006F">x</a>*<a href="Vec3_tpl#006F">x</a>+<a href="Vec3_tpl#0070">y</a>*<a href="Vec3_tpl#0070">y</a>); } F GetLengthSquared2D() <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> <a href="Vec3_tpl#006F">x</a>*<a href="Vec3_tpl#006F">x</a>+<a href="Vec3_tpl#0070">y</a>*<a href="Vec3_tpl#0070">y</a>; } F GetDistance(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp;vec1) <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> sqrt_tpl((<a href="Vec3_tpl#006F">x</a>-vec1.<a href="Vec3_tpl#006F">x</a>)*(<a href="Vec3_tpl#006F">x</a>-vec1.<a href="Vec3_tpl#006F">x</a>)+(<a href="Vec3_tpl#0070">y</a>-vec1.<a href="Vec3_tpl#0070">y</a>)*(<a href="Vec3_tpl#0070">y</a>-vec1.<a href="Vec3_tpl#0070">y</a>)+(<a href="Vec3_tpl#0071">z</a>-vec1.<a href="Vec3_tpl#0071">z</a>)*(<a href="Vec3_tpl#0071">z</a>-vec1.<a href="Vec3_tpl#0071">z</a>)); } F GetSquaredDistance ( <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp;v) <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> (<a href="Vec3_tpl#006F">x</a>-v.<a href="Vec3_tpl#006F">x</a>)*(<a href="Vec3_tpl#006F">x</a>-v.<a href="Vec3_tpl#006F">x</a>) + (<a href="Vec3_tpl#0070">y</a>-v.<a href="Vec3_tpl#0070">y</a>)*(<a href="Vec3_tpl#0070">y</a>-v.<a href="Vec3_tpl#0070">y</a>) + (<a href="Vec3_tpl#0071">z</a>-v.<a href="Vec3_tpl#0071">z</a>)*(<a href="Vec3_tpl#0071">z</a>-v.<a href="Vec3_tpl#0071">z</a>); } F GetSquaredDistance2D ( <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; &amp;v) <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> (<a href="Vec3_tpl#006F">x</a>-v.<a href="Vec3_tpl#006F">x</a>)*(<a href="Vec3_tpl#006F">x</a>-v.<a href="Vec3_tpl#006F">x</a>) + (<a href="Vec3_tpl#0070">y</a>-v.<a href="Vec3_tpl#0070">y</a>)*(<a href="Vec3_tpl#0070">y</a>-v.<a href="Vec3_tpl#0070">y</a>); } <strong><span style="color: #871F78">void</span></strong> Normalize() { assert(<strong><span style="color: #871F78">this</span></strong>-&gt;IsValid()); F fInvLen = isqrt_safe_tpl( <a href="Vec3_tpl#006F">x</a>*<a href="Vec3_tpl#006F">x</a>+<a href="Vec3_tpl#0070">y</a>*<a href="Vec3_tpl#0070">y</a>+<a href="Vec3_tpl#0071">z</a>*<a href="Vec3_tpl#0071">z</a> ); <a href="Vec3_tpl#006F">x</a>*=fInvLen; <a href="Vec3_tpl#0070">y</a>*=fInvLen; <a href="Vec3_tpl#0071">z</a>*=fInvLen; } <strong><span style="color: #871F78">void</span></strong> NormalizeFast() { assert(<strong><span style="color: #871F78">this</span></strong>-&gt;IsValid()); F fInvLen = isqrt_fast_tpl( <a href="Vec3_tpl#006F">x</a>*<a href="Vec3_tpl#006F">x</a>+<a href="Vec3_tpl#0070">y</a>*<a href="Vec3_tpl#0070">y</a>+<a href="Vec3_tpl#0071">z</a>*<a href="Vec3_tpl#0071">z</a> ); <a href="Vec3_tpl#006F">x</a>*=fInvLen; <a href="Vec3_tpl#0070">y</a>*=fInvLen; <a href="Vec3_tpl#0071">z</a>*=fInvLen; } F NormalizeSafe(<strong><span style="color: #871F78">const</span></strong> <strong><span style="color: #871F78">struct</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; safe = <a href="Vec3Constants">Vec3Constants</a>&lt;F&gt;::fVec3_Zero) { assert(<strong><span style="color: #871F78">this</span></strong>-&gt;IsValid()); F fLen2 = <a href="Vec3_tpl#006F">x</a>*<a href="Vec3_tpl#006F">x</a>+<a href="Vec3_tpl#0070">y</a>*<a href="Vec3_tpl#0070">y</a>+<a href="Vec3_tpl#0071">z</a>*<a href="Vec3_tpl#0071">z</a>; IF (<a href="VecPrecisionValues">VecPrecisionValues</a>&lt;F&gt;::CheckGreater(fLen2), 1) { F fInvLen = isqrt_tpl(fLen2); <a href="Vec3_tpl#006F">x</a>*=fInvLen; <a href="Vec3_tpl#0070">y</a>*=fInvLen; <a href="Vec3_tpl#0071">z</a>*=fInvLen; <strong><span style="color: #871F78">return</span></strong> F(1) / fInvLen; } <strong><span style="color: #871F78">else</span></strong> { *<strong><span style="color: #871F78">this</span></strong> = safe; <strong><span style="color: #871F78">return</span></strong> F(0); } } <a href="Vec3_tpl">Vec3_tpl</a> GetNormalizedFloat() <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> GetNormalized(); } <a href="Vec3_tpl">Vec3_tpl</a> GetNormalized() <strong><span style="color: #871F78">const</span></strong> { F fInvLen = isqrt_safe_tpl( <a href="Vec3_tpl#006F">x</a>*<a href="Vec3_tpl#006F">x</a>+<a href="Vec3_tpl#0070">y</a>*<a href="Vec3_tpl#0070">y</a>+<a href="Vec3_tpl#0071">z</a>*<a href="Vec3_tpl#0071">z</a> ); <strong><span style="color: #871F78">return</span></strong> *<strong><span style="color: #871F78">this</span></strong> * fInvLen; } <a href="Vec3_tpl">Vec3_tpl</a> GetNormalizedFast() <strong><span style="color: #871F78">const</span></strong> { F fInvLen = isqrt_fast_tpl( <a href="Vec3_tpl#006F">x</a>*<a href="Vec3_tpl#006F">x</a>+<a href="Vec3_tpl#0070">y</a>*<a href="Vec3_tpl#0070">y</a>+<a href="Vec3_tpl#0071">z</a>*<a href="Vec3_tpl#0071">z</a> ); <strong><span style="color: #871F78">return</span></strong> *<strong><span style="color: #871F78">this</span></strong> * fInvLen; } <a href="Vec3_tpl">Vec3_tpl</a> GetNormalizedSafe(<strong><span style="color: #871F78">const</span></strong> <strong><span style="color: #871F78">struct</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; safe = <a href="Vec3Constants">Vec3Constants</a>&lt;F&gt;::fVec3_OneX) <strong><span style="color: #871F78">const</span></strong> { F fLen2 = <a href="Vec3_tpl#006F">x</a>*<a href="Vec3_tpl#006F">x</a>+<a href="Vec3_tpl#0070">y</a>*<a href="Vec3_tpl#0070">y</a>+<a href="Vec3_tpl#0071">z</a>*<a href="Vec3_tpl#0071">z</a>; IF (<a href="VecPrecisionValues">VecPrecisionValues</a>&lt;F&gt;::CheckGreater(fLen2), 1) { F fInvLen = isqrt_tpl(fLen2); <strong><span style="color: #871F78">return</span></strong> *<strong><span style="color: #871F78">this</span></strong> * fInvLen; } <strong><span style="color: #871F78">else</span></strong> { <strong><span style="color: #871F78">return</span></strong> safe; } } <a href="Vec3_tpl">Vec3_tpl</a> GetNormalizedSafeFloat(<strong><span style="color: #871F78">const</span></strong> <strong><span style="color: #871F78">struct</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; safe = <a href="Vec3Constants">Vec3Constants</a>&lt;F&gt;::fVec3_OneX) <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> GetNormalizedSafe(safe); } <a href="Vec3_tpl">Vec3_tpl</a> GetPermutated(<strong><span style="color: #871F78">int</span></strong> new_z) <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>(*(&amp;<a href="Vec3_tpl#006F">x</a>+<a href="Math_Definitions#000C">inc_mod3</a>[new_z]), *(&amp;<a href="Vec3_tpl#006F">x</a>+dec_mod3[new_z]), *(&amp;<a href="Vec3_tpl#006F">x</a>+new_z)); } F GetVolume() <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> <a href="Vec3_tpl#006F">x</a>*<a href="Vec3_tpl#0070">y</a>*<a href="Vec3_tpl#0071">z</a>; } <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; abs() <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>(fabs_tpl(<a href="Vec3_tpl#006F">x</a>),fabs_tpl(<a href="Vec3_tpl#0070">y</a>),fabs_tpl(<a href="Vec3_tpl#0071">z</a>)); } <strong><span style="color: #871F78">void</span></strong> CheckMin(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; other) { <a href="Vec3_tpl#006F">x</a> = min(other.<a href="Vec3_tpl#006F">x</a>,<a href="Vec3_tpl#006F">x</a>); <a href="Vec3_tpl#0070">y</a> = min(other.<a href="Vec3_tpl#0070">y</a>,<a href="Vec3_tpl#0070">y</a>); <a href="Vec3_tpl#0071">z</a> = min(other.<a href="Vec3_tpl#0071">z</a>,<a href="Vec3_tpl#0071">z</a>); } <strong><span style="color: #871F78">void</span></strong> CheckMax(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; other) { <a href="Vec3_tpl#006F">x</a> = max(other.<a href="Vec3_tpl#006F">x</a>,<a href="Vec3_tpl#006F">x</a>); <a href="Vec3_tpl#0070">y</a> = max(other.<a href="Vec3_tpl#0070">y</a>,<a href="Vec3_tpl#0070">y</a>); <a href="Vec3_tpl#0071">z</a> = max(other.<a href="Vec3_tpl#0071">z</a>,<a href="Vec3_tpl#0071">z</a>); } <strong><span style="color: #871F78">void</span></strong> SetOrthogonal( <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v ) { sqr(F(0.9))*(v|v)-v.<a href="Vec3_tpl#006F">x</a>*v.<a href="Vec3_tpl#006F">x</a>&lt;0 ? (<a href="Vec3_tpl#006F">x</a>=-v.<a href="Vec3_tpl#0071">z</a>,<a href="Vec3_tpl#0070">y</a>=0,<a href="Vec3_tpl#0071">z</a>=v.<a href="Vec3_tpl#006F">x</a>) : (<a href="Vec3_tpl#006F">x</a>=0,<a href="Vec3_tpl#0070">y</a>=v.<a href="Vec3_tpl#0071">z</a>,<a href="Vec3_tpl#0071">z</a>=-v.<a href="Vec3_tpl#0070">y</a>); } <a href="Vec3_tpl">Vec3_tpl</a> GetOrthogonal() <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> sqr(F(0.9))*(<a href="Vec3_tpl#006F">x</a>*<a href="Vec3_tpl#006F">x</a>+<a href="Vec3_tpl#0070">y</a>*<a href="Vec3_tpl#0070">y</a>+<a href="Vec3_tpl#0071">z</a>*<a href="Vec3_tpl#0071">z</a>)-<a href="Vec3_tpl#006F">x</a>*<a href="Vec3_tpl#006F">x</a>&lt;0 ? <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;(-<a href="Vec3_tpl#0071">z</a>,0,<a href="Vec3_tpl#006F">x</a>) : <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;(0,<a href="Vec3_tpl#0071">z</a>,-<a href="Vec3_tpl#0070">y</a>); } <strong><span style="color: #871F78">void</span></strong> SetProjection( <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&amp; i, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&amp; n ) { *<strong><span style="color: #871F78">this</span></strong> = i-n*(n|i); } <strong><span style="color: #871F78">static</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; CreateProjection( <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&amp; i, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&amp; n ) { <strong><span style="color: #871F78">return</span></strong> i-n*(n|i); } <strong><span style="color: #871F78">void</span></strong> SetReflection( <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; i, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; n) { *<strong><span style="color: #871F78">this</span></strong>=(n*(i|n)*2)-i; } <strong><span style="color: #871F78">static</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; CreateReflection( <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; i, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; n ) { <strong><span style="color: #871F78">return</span></strong> (n*(i|n)*2)-i; } <strong><span style="color: #871F78">void</span></strong> SetLerp( <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; p, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; q, F t ) { <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; diff = q-p; *<strong><span style="color: #871F78">this</span></strong> = p + (diff*t); } <strong><span style="color: #871F78">static</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; CreateLerp( <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; p, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; q, F t ) { <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; diff = q-p; <strong><span style="color: #871F78">return</span></strong> p+(diff*t); } <strong><span style="color: #871F78">void</span></strong> SetSlerp( <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; p, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; q, F t ) { assert(p.IsUnit(0.005f)); assert(q.IsUnit(0.005f)); F cosine = clamp_tpl((p|q), F(-1), F(1)); <strong><span style="color: #871F78">if</span></strong>(cosine&gt;=(F)0.99) { SetLerp(p,q,t); Normalize(); } <strong><span style="color: #871F78">else</span></strong> { F rad = acos_tpl(cosine); F scale_0 = sin_tpl((1-t)*rad); F scale_1 = sin_tpl(t*rad); *<strong><span style="color: #871F78">this</span></strong>=(p*scale_0 + q*scale_1) / sin_tpl(rad); Normalize(); } } <strong><span style="color: #871F78">static</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; CreateSlerp( <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; p, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; q, F t ) { <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; v; v.SetSlerp(p,q,t); <strong><span style="color: #871F78">return</span></strong> v; } <strong><span style="color: #871F78">void</span></strong> SetQuadraticCurve(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v0, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v1, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v2, F t1) { F t0=1.0f-t1; *<strong><span style="color: #871F78">this</span></strong> = t0*t0*v0 + t0*t1*2.0f*v1 + t1*t1*v2; } <strong><span style="color: #871F78">static</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; CreateQuadraticCurve(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v0, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v1, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v2, F t) { <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; ip; ip.SetQuadraticCurve(v0,v1,v2,t); <strong><span style="color: #871F78">return</span></strong> ip; } <strong><span style="color: #871F78">void</span></strong> SetCubicCurve(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v0, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v1, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v2, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v3, F t1) { F t0=1.0f-t1; *<strong><span style="color: #871F78">this</span></strong>=t0*t0*t0*v0 + 3*t0*t0*t1*v1 + 3*t0*t1*t1*v2 + t1*t1*t1*v3; } <strong><span style="color: #871F78">static</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; CreateCubicCurve(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v0, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v1, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v2, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v3, F t) { <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; ip; ip.SetCubicCurve(v0,v1,v2,v3,t); <strong><span style="color: #871F78">return</span></strong> ip; } <strong><span style="color: #871F78">void</span></strong> SetQuadraticSpline(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v0, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v1, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v2, F t) { SetQuadraticCurve(v0,v1-(v0*0.5f+v1+v2*0.5f-v1*2.0f),v2,t); } <strong><span style="color: #871F78">static</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; CreateQuadraticSpline(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v0, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v1, <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; v2, F t) { <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; ip; ip.SetQuadraticSpline(v0,v1,v2,t); <strong><span style="color: #871F78">return</span></strong> ip; } <strong><span style="color: #871F78">void</span></strong> SetRandomDirection( <strong><span style="color: #871F78">void</span></strong> ) { <strong><span style="color: #871F78">int</span></strong> nMax = 5; F Length2; <strong><span style="color: #871F78">do</span></strong> { <a href="Vec3_tpl#006F">x</a> = 1.0f - 2.0f*<a href="Math_Definitions#0005">cry_frand</a>(); <a href="Vec3_tpl#0070">y</a> = 1.0f - 2.0f*<a href="Math_Definitions#0005">cry_frand</a>(); <a href="Vec3_tpl#0071">z</a> = 1.0f - 2.0f*<a href="Math_Definitions#0005">cry_frand</a>(); Length2 = len2(); nMax--; } <strong><span style="color: #871F78">while</span></strong>((Length2&gt;1.0f || Length2&lt;0.0001f) &amp;&amp; nMax &gt; 0); F InvScale = isqrt_tpl(Length2); <a href="Vec3_tpl#006F">x</a> *= InvScale; <a href="Vec3_tpl#0070">y</a> *= InvScale; <a href="Vec3_tpl#0071">z</a> *= InvScale; } <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; GetRotated(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; axis, F angle) <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> GetRotated(axis,cos_tpl(angle),sin_tpl(angle)); } <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; GetRotated(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; axis, F cosa,F sina) <strong><span style="color: #871F78">const</span></strong> { <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; zax = axis*(*<strong><span style="color: #871F78">this</span></strong>|axis); <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; xax = *<strong><span style="color: #871F78">this</span></strong>-zax; <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; yax = axis%xax; <strong><span style="color: #871F78">return</span></strong> xax*cosa + yax*sina + zax; } <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; GetRotated(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&amp; center,<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; axis, F angle) <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> center+(*<strong><span style="color: #871F78">this</span></strong>-center).GetRotated(axis,angle); } <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; GetRotated(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; center,<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;&amp; axis, F cosa,F sina) <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> center+(*<strong><span style="color: #871F78">this</span></strong>-center).GetRotated(axis,cosa,sina); } <a href="Vec3_tpl">Vec3_tpl</a> CompMul( <strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; rhs ) <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong>( <a href="Vec3_tpl">Vec3_tpl</a>( <a href="Vec3_tpl#006F">x</a> * rhs.<a href="Vec3_tpl#006F">x</a>, <a href="Vec3_tpl#0070">y</a> * rhs.<a href="Vec3_tpl#0070">y</a>, <a href="Vec3_tpl#0071">z</a> * rhs.<a href="Vec3_tpl#0071">z</a> ) ); } F Dot (<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; v) <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> <a href="Vec3_tpl#006F">x</a>*v.<a href="Vec3_tpl#006F">x</a> + <a href="Vec3_tpl#0070">y</a>*v.<a href="Vec3_tpl#0070">y</a> + <a href="Vec3_tpl#0071">z</a>*v.<a href="Vec3_tpl#0071">z</a>; } <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; Cross (<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt; vec2) <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;( <a href="Vec3_tpl#0070">y</a>*vec2.<a href="Vec3_tpl#0071">z</a> - <a href="Vec3_tpl#0071">z</a>*vec2.<a href="Vec3_tpl#0070">y</a>, <a href="Vec3_tpl#0071">z</a>*vec2.<a href="Vec3_tpl#006F">x</a> - <a href="Vec3_tpl#006F">x</a>*vec2.<a href="Vec3_tpl#0071">z</a>, <a href="Vec3_tpl#006F">x</a>*vec2.<a href="Vec3_tpl#0070">y</a> - <a href="Vec3_tpl#0070">y</a>*vec2.<a href="Vec3_tpl#006F">x</a>); } DEPRICATED <strong><span style="color: #871F78">operator</span></strong> F* () { <strong><span style="color: #871F78">return</span></strong> (F*)<strong><span style="color: #871F78">this</span></strong>; } <strong><span style="color: #871F78">template</span></strong> &lt;<strong><span style="color: #871F78">class</span></strong> T&gt; <strong><span style="color: #871F78">explicit</span></strong> DEPRICATED <a href="Vec3_tpl">Vec3_tpl</a>(<strong><span style="color: #871F78">const</span></strong> T *src) { <a href="Vec3_tpl#006F">x</a>=src[0]; <a href="Vec3_tpl#0070">y</a>=src[1]; <a href="Vec3_tpl#0071">z</a>=src[2]; } <a href="Vec3_tpl">Vec3_tpl</a>&amp; zero() { <a href="Vec3_tpl#006F">x</a>=<a href="Vec3_tpl#0070">y</a>=<a href="Vec3_tpl#0071">z</a>=0; <strong><span style="color: #871F78">return</span></strong> *<strong><span style="color: #871F78">this</span></strong>; } F len() <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> sqrt_tpl(<a href="Vec3_tpl#006F">x</a>*<a href="Vec3_tpl#006F">x</a>+<a href="Vec3_tpl#0070">y</a>*<a href="Vec3_tpl#0070">y</a>+<a href="Vec3_tpl#0071">z</a>*<a href="Vec3_tpl#0071">z</a>); } F len2() <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> <a href="Vec3_tpl#006F">x</a>*<a href="Vec3_tpl#006F">x</a> +<a href="Vec3_tpl#0070">y</a>*<a href="Vec3_tpl#0070">y</a> + <a href="Vec3_tpl#0071">z</a>*<a href="Vec3_tpl#0071">z</a>; } <a href="Vec3_tpl">Vec3_tpl</a>&amp; normalize() { F len2 = <a href="Vec3_tpl#006F">x</a>*<a href="Vec3_tpl#006F">x</a>+<a href="Vec3_tpl#0070">y</a>*<a href="Vec3_tpl#0070">y</a>+<a href="Vec3_tpl#0071">z</a>*<a href="Vec3_tpl#0071">z</a>; <strong><span style="color: #871F78">if</span></strong> (len2&gt;(F)1e-20f) { F rlen = isqrt_tpl(len2); <a href="Vec3_tpl#006F">x</a>*=rlen; <a href="Vec3_tpl#0070">y</a>*=rlen; <a href="Vec3_tpl#0071">z</a>*=rlen; } <strong><span style="color: #871F78">else</span></strong> <a href="Vec3_tpl#0056">Set</a>(0,0,1); <strong><span style="color: #871F78">return</span></strong> *<strong><span style="color: #871F78">this</span></strong>; } <a href="Vec3_tpl">Vec3_tpl</a> normalized() <strong><span style="color: #871F78">const</span></strong> { F len2 = <a href="Vec3_tpl#006F">x</a>*<a href="Vec3_tpl#006F">x</a>+<a href="Vec3_tpl#0070">y</a>*<a href="Vec3_tpl#0070">y</a>+<a href="Vec3_tpl#0071">z</a>*<a href="Vec3_tpl#0071">z</a>; <strong><span style="color: #871F78">if</span></strong> (len2&gt;(F)1e-20f) { F rlen = isqrt_tpl(len2); <strong><span style="color: #871F78">return</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>(<a href="Vec3_tpl#006F">x</a>*rlen,<a href="Vec3_tpl#0070">y</a>*rlen,<a href="Vec3_tpl#0071">z</a>*rlen); } <strong><span style="color: #871F78">else</span></strong> <strong><span style="color: #871F78">return</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>(0,0,1); } <strong><span style="color: #871F78">template</span></strong>&lt;<strong><span style="color: #871F78">class</span></strong> F1&gt; <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; sub(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt;&amp; v) <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt;(<a href="Vec3_tpl#006F">x</a>-v.<a href="Vec3_tpl#006F">x</a>, <a href="Vec3_tpl#0070">y</a>-v.<a href="Vec3_tpl#0070">y</a>, <a href="Vec3_tpl#0071">z</a>-v.<a href="Vec3_tpl#0071">z</a>); } <strong><span style="color: #871F78">template</span></strong>&lt;<strong><span style="color: #871F78">class</span></strong> F1&gt; <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; scale(<strong><span style="color: #871F78">const</span></strong> F1 k) <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F&gt;(<a href="Vec3_tpl#006F">x</a>*k,<a href="Vec3_tpl#0070">y</a>*k,<a href="Vec3_tpl#0071">z</a>*k); } <strong><span style="color: #871F78">template</span></strong>&lt;<strong><span style="color: #871F78">class</span></strong> F1&gt; F1 dot(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt;&amp; v) <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> (F1)(<a href="Vec3_tpl#006F">x</a>*v.<a href="Vec3_tpl#006F">x</a>+<a href="Vec3_tpl#0070">y</a>*v.<a href="Vec3_tpl#0070">y</a>+<a href="Vec3_tpl#0071">z</a>*v.<a href="Vec3_tpl#0071">z</a>); } <strong><span style="color: #871F78">template</span></strong>&lt;<strong><span style="color: #871F78">class</span></strong> F1&gt; <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; cross(<strong><span style="color: #871F78">const</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt; &amp;v) <strong><span style="color: #871F78">const</span></strong> { <strong><span style="color: #871F78">return</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;F1&gt;(<a href="Vec3_tpl#0070">y</a>*v.<a href="Vec3_tpl#0071">z</a>-<a href="Vec3_tpl#0071">z</a>*v.<a href="Vec3_tpl#0070">y</a>, <a href="Vec3_tpl#0071">z</a>*v.<a href="Vec3_tpl#006F">x</a>-<a href="Vec3_tpl#006F">x</a>*v.<a href="Vec3_tpl#0071">z</a>, <a href="Vec3_tpl#006F">x</a>*v.<a href="Vec3_tpl#0070">y</a>-<a href="Vec3_tpl#0070">y</a>*v.<a href="Vec3_tpl#006F">x</a>); } AUTO_STRUCT_INFO };</pre></div></div>
<div class="Element6">
<a name="0058"></a>Vec3_tpl::value_type Nested Type</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">typedef</span></strong> F <strong><span style="color: #660000">value_type</span></strong>;</pre></div></div>
<div class="Element6">
<a name="0059"></a>Vec3_tpl::Vec3 Nested Type</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">typedef</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;f32&gt; <strong><span style="color: #660000">Vec3</span></strong>;</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
always 32 bit</p></div>
</div>
<div class="Element6">
<a name="006C"></a>Vec3_tpl::Vec3d Nested Type</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">typedef</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;f64&gt; <strong><span style="color: #660000">Vec3d</span></strong>;</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
always 64 bit</p></div>
</div>
<div class="Element6">
<a name="006D"></a>Vec3_tpl::Vec3i Nested Type</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">typedef</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;<strong><span style="color: #871F78">int</span></strong>&gt; <strong><span style="color: #660000">Vec3i</span></strong>;</pre></div></div>
<div class="Element6">
<a name="006E"></a>Vec3_tpl::Vec3r Nested Type</div>
<a name="432B2B"></a><div class="Element99">
C++</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #871F78">typedef</span></strong> <a href="Vec3_tpl">Vec3_tpl</a>&lt;real&gt; <strong><span style="color: #660000">Vec3r</span></strong>;</pre></div></div>
<a name="4465736372697074696F6E"></a><div class="Element14">
Description</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
variable float precision. depending on the target system it can be 32, 64 or 80 bit</p></div>
</div>
</div>
<!-- End Page Content -->

<!-- Begin Page Footer -->

<!-- End Page Footer -->
</div>
</div>

<!-- End Client Area -->

...