| 454 | } |
| 455 | |
| 456 | Float3 Float3::Perpendicular(const Float3& vec) |
| 457 | { |
| 458 | Assert_(vec.Length() >= 0.00001f); |
| 459 | |
| 460 | Float3 perp; |
| 461 | |
| 462 | float x = std::abs(vec.x); |
| 463 | float y = std::abs(vec.y); |
| 464 | float z = std::abs(vec.z); |
| 465 | float minVal = std::min(x, y); |
| 466 | minVal = std::min(minVal, z); |
| 467 | |
| 468 | if(minVal == x) |
| 469 | perp = Float3::Cross(vec, Float3(1.0f, 0.0f, 0.0f)); |
| 470 | else if(minVal == y) |
| 471 | perp = Float3::Cross(vec, Float3(0.0f, 1.0f, 0.0f)); |
| 472 | else |
| 473 | perp = Float3::Cross(vec, Float3(0.0f, 0.0f, 1.0f)); |
| 474 | |
| 475 | return Float3::Normalize(perp); |
| 476 | } |
| 477 | |
| 478 | float Float3::Distance(const Float3& a, const Float3& b) |
| 479 | { |