Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1129)

Side by Side Diff: samples/o3d-webgl/primitive.js

Issue 3013067: o3d-webgl: Fixes picking edge case where two components of the world ray are both 0. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/o3d/
Patch Set: '' Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2010, Google Inc. 2 * Copyright 2010, Google Inc.
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 var v0 = (t00 * x - 518 var v0 = (t00 * x -
519 (m10 * m22 - m12 * m20) * y + 519 (m10 * m22 - m12 * m20) * y +
520 (m10 * m21 - m11 * m20) * z) / d; 520 (m10 * m21 - m11 * m20) * z) / d;
521 var v1 = (-t10 * x + 521 var v1 = (-t10 * x +
522 (m00 * m22 - m02 * m20) * y - 522 (m00 * m22 - m02 * m20) * y -
523 (m00 * m21 - m01 * m20) * z) / d; 523 (m00 * m21 - m01 * m20) * z) / d;
524 var v2 = (t20 * x - 524 var v2 = (t20 * x -
525 (m00 * m12 - m02 * m10) * y + 525 (m00 * m12 - m02 * m10) * y +
526 (m00 * m11 - m01 * m10) * z) / d; 526 (m00 * m11 - m01 * m10) * z) / d;
527 527
528 if (v0 > 0 && v1 > 0 && v2 > 0) { 528 if (v0 >= 0 && v1 >= 0 && v2 >= 0 && (v0 + v1 + v2 > 0)) {
529 // Rescale by the one-norm to find the intersection of the transformed. 529 // Rescale by the one-norm to find the intersection of the transformed.
530 // ray with the unit triangle. 530 // ray with the unit triangle.
531 var one_norm = v0 + v1 + v2; 531 var one_norm = v0 + v1 + v2;
532 v0 /= one_norm; 532 v0 /= one_norm;
533 v1 /= one_norm; 533 v1 /= one_norm;
534 v2 /= one_norm; 534 v2 /= one_norm;
535 // Multiply m to get back to the original triangle. 535 // Multiply m to get back to the original triangle.
536 var px = m00 * v0 + m10 * v1 + m20 * v2; 536 var px = m00 * v0 + m10 * v1 + m20 * v2;
537 var py = m01 * v0 + m11 * v1 + m21 * v2; 537 var py = m01 * v0 + m11 * v1 + m21 * v2;
538 var pz = m02 * v0 + m12 * v1 + m22 * v2; 538 var pz = m02 * v0 + m12 * v1 + m22 * v2;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 } 581 }
582 points.push(p); 582 points.push(p);
583 } 583 }
584 584
585 o3d.BoundingBox.fitBoxToPoints_(points, this.boundingBox); 585 o3d.BoundingBox.fitBoxToPoints_(points, this.boundingBox);
586 return this.boundingBox; 586 return this.boundingBox;
587 }; 587 };
588 588
589 589
590 590
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698