simplex.readCache(cache, proxyA, transformA, proxyB, transformB); simplex.getClosestPoint(closestPoint); float distanceSqr1 = closestPoint.lengthSquared(); float distanceSqr2 = distanceSqr1; break; case 2: simplex.solve2(); break; case 3: simplex.solve3(); break; default: simplex.getClosestPoint(closestPoint); distanceSqr2 = closestPoint.lengthSquared(); simplex.getSearchDirection(d); simplex.getWitnessPoints(output.pointA, output.pointB); output.distance = MathUtils.distance(output.pointA, output.pointB); output.iterations = iter; simplex.writeCache(cache);
float metric2 = getMetric(); if (metric2 < 0.5f * metric1 || 2.0f * metric1 < metric2 || metric2 < JBoxSettings.EPSILON) {
simplex.readCache(cache, proxyA, transformA, proxyB, transformB); simplex.getClosestPoint(closestPoint); float distanceSqr1 = closestPoint.lengthSquared(); float distanceSqr2 = distanceSqr1; break; case 2: simplex.solve2(); break; case 3: simplex.solve3(); break; default: simplex.getClosestPoint(closestPoint); distanceSqr2 = closestPoint.lengthSquared(); simplex.getSearchDirection(d); simplex.getWitnessPoints(output.pointA, output.pointB); output.distance = MathUtils.distance(output.pointA, output.pointB); output.iterations = iter; simplex.writeCache(cache);
simplex.readCache(cache, proxyA, transformA, proxyB, transformB); simplex.getClosestPoint(closestPoint); float distanceSqr1 = closestPoint.lengthSquared(); float distanceSqr2 = distanceSqr1; break; case 2: simplex.solve2(); break; case 3: simplex.solve3(); break; default: simplex.getClosestPoint(closestPoint); distanceSqr2 = closestPoint.lengthSquared(); simplex.getSearchDirection(d); simplex.getWitnessPoints(output.pointA, output.pointB); output.distance = JBoxUtils.distance(output.pointA, output.pointB); output.iterations = iter; simplex.writeCache(cache);
float metric2 = getMetric(); if (metric2 < 0.5f * metric1 || 2.0f * metric1 < metric2 || metric2 < Settings.EPSILON) {
float metric2 = getMetric(); if (metric2 < 0.5f * metric1 || 2.0f * metric1 < metric2 || metric2 < Settings.EPSILON) {
public void writeCache(SimplexCache cache) { cache.metric = getMetric(); cache.count = m_count; for (int i = 0; i < m_count; ++i) { cache.indexA[i] = (vertices[i].indexA); cache.indexB[i] = (vertices[i].indexB); } }
public void writeCache(SimplexCache cache) { cache.metric = getMetric(); cache.count = m_count; for (int i = 0; i < m_count; ++i) { cache.indexA[i] = (vertices[i].indexA); cache.indexB[i] = (vertices[i].indexB); } }
public void writeCache(SimplexCache cache) { cache.metric = getMetric(); cache.count = m_count; for (int i = 0; i < m_count; ++i) { cache.indexA[i] = (vertices[i].indexA); cache.indexB[i] = (vertices[i].indexB); } }
simplex.readCache(cache, proxyA, transformA, proxyB, transformB); simplex.getClosestPoint(closestPoint); float distanceSqr1 = closestPoint.lengthSquared(); float distanceSqr2 = distanceSqr1; break; case 2: simplex.solve2(); break; case 3: simplex.solve3(); break; default: simplex.getClosestPoint(closestPoint); distanceSqr2 = closestPoint.lengthSquared(); simplex.getSearchDirection(d); simplex.getWitnessPoints(output.pointA, output.pointB); output.distance = MathUtils.distance(output.pointA, output.pointB); output.iterations = iter; simplex.writeCache(cache);
float metric2 = getMetric(); if (metric2 < 0.5f * metric1 || 2.0f * metric1 < metric2 || metric2 < Settings.EPSILON) {
public void writeCache(SimplexCache cache) { cache.metric = getMetric(); cache.count = m_count; for (int i = 0; i < m_count; ++i) { cache.indexA[i] = (vertices[i].indexA); cache.indexB[i] = (vertices[i].indexB); } }
simplex.readCache(cache, proxyA, transformA, proxyB, transformB); simplex.getClosestPoint(closestPoint); float distanceSqr1 = closestPoint.lengthSquared(); float distanceSqr2 = distanceSqr1; break; case 2: simplex.solve2(); break; case 3: simplex.solve3(); break; default: simplex.getClosestPoint(closestPoint); distanceSqr2 = closestPoint.lengthSquared(); simplex.getSearchDirection(d); simplex.getWitnessPoints(output.pointA, output.pointB); output.distance = MathUtils.distance(output.pointA, output.pointB); output.iterations = iter; simplex.writeCache(cache);
float metric2 = getMetric(); if (metric2 < 0.5f * metric1 || 2.0f * metric1 < metric2 || metric2 < Settings.EPSILON) {
public void writeCache(SimplexCache cache) { cache.metric = getMetric(); cache.count = m_count; for (int i = 0; i < m_count; ++i) { cache.indexA[i] = (vertices[i].indexA); cache.indexB[i] = (vertices[i].indexB); } }