MCPcopy Create free account
hub / github.com/plotly/plotly.js / tryCreateTetra

Function tryCreateTetra

src/traces/isosurface/convert.js:479–590  ·  view source on GitHub ↗
(style, abcd, min, max)

Source from the content-addressed store, hash-verified

477 }
478
479 function tryCreateTetra(style, abcd, min, max) {
480 var result = false;
481
482 var xyzv = getXYZV(abcd);
483
484 var ok = [
485 inRange(xyzv[0][3], min, max),
486 inRange(xyzv[1][3], min, max),
487 inRange(xyzv[2][3], min, max),
488 inRange(xyzv[3][3], min, max)
489 ];
490
491 if(!ok[0] && !ok[1] && !ok[2] && !ok[3]) {
492 return result;
493 }
494
495 if(ok[0] && ok[1] && ok[2] && ok[3]) {
496 if(drawingSpaceframe) {
497 result = drawTetra(style, xyzv, abcd) || result;
498 }
499 return result;
500 }
501
502 var interpolated = false;
503
504 [
505 [0, 1, 2, 3],
506 [3, 0, 1, 2],
507 [2, 3, 0, 1],
508 [1, 2, 3, 0]
509 ].forEach(function(e) {
510 if(ok[e[0]] && ok[e[1]] && ok[e[2]] && !ok[e[3]]) {
511 var A = xyzv[e[0]];
512 var B = xyzv[e[1]];
513 var C = xyzv[e[2]];
514 var D = xyzv[e[3]];
515
516 if(drawingSpaceframe) {
517 result = drawTri(style, [A, B, C], [abcd[e[0]], abcd[e[1]], abcd[e[2]]]) || result;
518 } else {
519 var p1 = calcIntersection(D, A, min, max);
520 var p2 = calcIntersection(D, B, min, max);
521 var p3 = calcIntersection(D, C, min, max);
522
523 result = drawTri(null, [p1, p2, p3], [-1, -1, -1]) || result;
524 }
525
526 interpolated = true;
527 }
528 });
529 if(interpolated) return result;
530
531 [
532 [0, 1, 2, 3],
533 [1, 2, 3, 0],
534 [2, 3, 0, 1],
535 [3, 0, 1, 2],
536 [0, 2, 3, 1],

Callers 1

addCubeFunction · 0.85

Calls 6

getXYZVFunction · 0.85
inRangeFunction · 0.85
drawTetraFunction · 0.85
drawTriFunction · 0.85
calcIntersectionFunction · 0.85
drawQuadFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…