⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 distance.java

📁 JAVA3D矩陈的相关类
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
		if (seg1int != null) seg1int.set (seg1end);		if (param != null) { param[0] = s; param[1] = t; }		return DIST(C+2*E+F);	      }	      else if (-tmp >= A) {		s = 1;		if (seg0int != null) seg0int.set (seg0end);		if (seg1int != null) seg1int.set (seg1end);		if (param != null) { param[0] = s; param[1] = t; }		return DIST(A+C+F+2*(E+tmp));	      }	      else {		s = -tmp/A;		if (seg0int != null) seg0int.scaleAdd (s, seg0dir, seg0start);		if (seg1int != null) seg1int.set (seg1end);		if (param != null) { param[0] = s; param[1] = t; }		return DIST(tmp*s+C+2*E+F);	      }	    }	  }	  else { // region 7 (side)	    t = 0;	    if (D >= 0) {	      s = 0;	      if (seg0int != null) seg0int.set (seg0start);	      if (seg1int != null) seg1int.set (seg1start);	      if (param != null) { param[0] = s; param[1] = t; }	      return DIST(F);	    }	    else if (-D >= A) {	      s = 1;	      if (seg0int != null) seg0int.set (seg0end);	      if (seg1int != null) seg1int.set (seg1start);	      if (param != null) { param[0] = s; param[1] = t; }	      return DIST(A+2*D+F);	    }	    else {	      s = -D/A;	      if (seg0int != null) seg0int.scaleAdd (s, seg0dir, seg0start);	      if (seg1int != null) seg1int.set (seg1start);	      if (param != null) { param[0] = s; param[1] = t; }	      return DIST(D*s+F);	    }	  }	}	else {	  if (t >= 0) {	    if (t <= det) { // region 1 (side)	      s = 1;	      tmp = B+E;	      if (tmp >= 0) {		t = 0;		if (seg0int != null) seg0int.set (seg0end);		if (seg1int != null) seg1int.set (seg1start);		if (param != null) { param[0] = s; param[1] = t; }		return DIST(A+2*D+F);	      }	      else if (-tmp >= C) {		t = 1;		if (seg0int != null) seg0int.set (seg0end);		if (seg1int != null) seg1int.set (seg1end);		if (param != null) { param[0] = s; param[1] = t; }		return DIST(A+C+F+2*(D+tmp));	      }	      else {		t = -tmp/C;		if (seg0int != null) seg0int.set (seg0end);		if (seg1int != null) seg1int.scaleAdd (t, seg1dir, seg1start);		if (param != null) { param[0] = s; param[1] = t; }		return DIST(tmp*t+A+2*D+F);	      }	    }	    else { // region 2 (corner)	      tmp = B+D;	      if (-tmp <= A) {		t = 1;		if (tmp >= 0) {		  s = 0;		  if (seg0int != null) seg0int.set (seg0start);		  if (seg1int != null) seg1int.set (seg1end);		  if (param != null) { param[0] = s; param[1] = t; }		  return DIST(C+2*E+F);		}		else {		  s = -tmp/A;		  if (seg0int!=null) seg0int.scaleAdd (s, seg0dir, seg0start);		  if (seg1int!=null) seg1int.set (seg1end);		  if (param != null) { param[0] = s; param[1] = t; }		  return DIST(tmp*s+C+2*E+F);		}	      }	      else {		s = 1;		tmp = B+E;		if (tmp >= 0) {		  t = 0;		  if (seg0int!=null) seg0int.set (seg0end);		  if (seg1int!=null) seg1int.set (seg1start);		  if (param != null) { param[0] = s; param[1] = t; }		  return DIST(A+2*D+F);		}		else if (-tmp >= C) {		  t = 1;		  if (seg0int != null) seg0int.set (seg0end);		  if (seg1int != null) seg1int.set (seg1end);		  if (param != null) { param[0] = s; param[1] = t; }		  return DIST(A+C+F+2*(D+tmp));		}		else {		  t = -tmp/C;		  if (seg0int!=null) seg0int.set (seg0end);		  if (seg1int!=null) seg1int.scaleAdd (t, seg1dir, seg1start);		  if (param != null) { param[0] = s; param[1] = t; }		  return DIST(tmp*t+A+2*D+F);		}	      }	    }	  }	  else { // region 8 (corner)	    if (-D < A) {	      t = 0;	      if (D >= 0) {		s = 0;		if (seg0int != null) seg0int.set (seg0start);		if (seg1int != null) seg1int.set (seg1start);		if (param != null) { param[0] = s; param[1] = t; }		return DIST(F);	      }	      else {		s = -D/A;		if (seg0int != null) seg0int.scaleAdd (s, seg0dir, seg0start);		if (seg1int != null) seg1int.set (seg1start);		if (param != null) { param[0] = s; param[1] = t; }		return DIST(D*s+F);	      }	    }	    else {	      s = 1;	      tmp = B+E;	      if (tmp >= 0) {		t = 0;		if (seg0int != null) seg0int.set (seg0end);		if (seg1int != null) seg1int.set (seg1start);		if (param != null) { param[0] = s; param[1] = t; }		return DIST(A+2*D+F);	      }	      else if (-tmp >= C) {		t = 1;		if (seg0int != null) seg0int.set (seg0end);		if (seg1int != null) seg1int.set (seg1end);		if (param != null) { param[0] = s; param[1] = t; }		return DIST(A+C+F+2*(D+tmp));	      }	      else {		t = -tmp/C;		if (seg0int != null) seg0int.set (seg0end);		if (seg1int != null) seg1int.scaleAdd (t, seg1dir, seg1start);		if (param != null) { param[0] = s; param[1] = t; }		return DIST(tmp*t+A+2*D+F);	      }	    }	  }	}      }      else {	if (t >= 0) {	  if (t <= det) { // region 5 (side)	    s = 0;	    if (E >= 0) {	      t = 0;	      if (seg0int != null) seg0int.set (seg0start);	      if (seg1int != null) seg1int.set (seg1start);	      if (param != null) { param[0] = s; param[1] = t; }	      return DIST(F);	    }	    else if (-E >= C) {	      t = 1;	      if (seg0int != null) seg0int.set (seg0start);	      if (seg1int != null) seg1int.set (seg1end);	      if (param != null) { param[0] = s; param[1] = t; }	      return DIST(C+2*E+F);	    }	    else {	      t = -E/C;	      if (seg0int != null) seg0int.set (seg0start);	      if (seg1int != null) seg1int.scaleAdd (t, seg1dir, seg1start);	      if (param != null) { param[0] = s; param[1] = t; }	      return DIST(E*t+F);	    }	  }	  else { // region 4 (corner)	    tmp = B+D;	    if (tmp < 0) {	      t = 1;	      if (-tmp >= A) {		s = 1;		if (seg0int != null) seg0int.set (seg0end);		if (seg1int != null) seg1int.set (seg1end);		if (param != null) { param[0] = s; param[1] = t; }		return DIST(A+C+F+2*(E+tmp));	      }	      else {		s = -tmp/A;		if (seg0int != null) seg0int.scaleAdd (s, seg0dir, seg0start);		if (seg1int != null) seg1int.set (seg1end);		if (param != null) { param[0] = s; param[1] = t; }		return DIST(tmp*s+C+2*E+F);	      }	    }	    else {	      s = 0;	      if (E >= 0) {		t = 0;		if (seg0int != null) seg0int.set (seg0start);		if (seg1int != null) seg1int.set (seg1start);		if (param != null) { param[0] = s; param[1] = t; }		return DIST(F);	      }	      else if (-E >= C) {		t = 1;		if (seg0int != null) seg0int.set (seg0start);		if (seg1int != null) seg1int.set (seg1end);		if (param != null) { param[0] = s; param[1] = t; }		return DIST(C+2*E+F);	      }	      else {		t = -E/C;		if (seg0int != null) seg0int.set (seg0start);		if (seg1int != null) seg1int.scaleAdd (t, seg1dir, seg1start);		if (param != null) { param[0] = s; param[1] = t; }		return DIST(E*t+F);	      }	    }	  }	}	else {  // region 6 (corner)	  if (D < 0) {	    t = 0;	    if (-D >= A) {	      s = 1;	      if (seg0int != null) seg0int.set (seg0end);	      if (seg1int != null) seg1int.set (seg1start);	      if (param != null) { param[0] = s; param[1] = t; }	      return DIST(A+2*D+F);	    }	    else {	      s = -D/A;	      if (seg0int != null) seg0int.scaleAdd (s, seg0dir, seg0start);	      if (seg1int != null) seg1int.set (seg1start);	      if (param != null) { param[0] = s; param[1] = t; }	      return DIST(D*s+F);	    }	  }	  else {	    s = 0;	    if (E >= 0) {	      t = 0;	      if (seg0int != null) seg0int.set (seg0start);	      if (seg1int != null) seg1int.set (seg1start);	      if (param != null) { param[0] = s; param[1] = t; }	      return DIST(F);	    }	    else if (-E >= C) {	      t = 1;	      if (seg0int != null) seg0int.set (seg0start);	      if (seg1int != null) seg1int.set (seg1end);	      if (param != null) { param[0] = s; param[1] = t; }	      return DIST(C+2*E+F);	    }	    else {	      t = -E/C;	      if (seg0int != null) seg0int.set (seg0start);	      if (seg1int != null) seg1int.scaleAdd (t, seg1dir, seg1start);	      if (param != null) { param[0] = s; param[1] = t; }	      return DIST(E*t+F);	    }	  }	}      }    }    else {      // line segments are parallel      if (B > 0) {	// direction vectors form an obtuse angle	if (D >= 0) {	  s = 0;	  t = 0;	  if (seg0int != null) seg0int.set (seg0start);	  if (seg1int != null) seg1int.set (seg1start);	  if (param != null) { param[0] = s; param[1] = t; }	  return DIST(F);	}	else if (-D <= A) {	  s = -D/A;	  t = 0;	  if (seg0int != null) seg0int.scaleAdd (s, seg0dir, seg0start);	  if (seg1int != null) seg1int.set (seg1start);	  if (param != null) { param[0] = s; param[1] = t; }	  return DIST(D*s+F);	}	else {	  E = -seg1dir.dot (diff); //-Dot(seg1dir,diff);	  s = 1;	  tmp = A+D;	  if (-tmp >= B) {	    t = 1;	    if (seg0int != null) seg0int.set (seg0end);	    if (seg1int != null) seg1int.set (seg1end);	    if (param != null) { param[0] = s; param[1] = t; }	    return DIST(A+C+F+2*(B+D+E));	  }	  else {	    t = -tmp/B;	    if (seg0int != null) seg0int.set (seg0end);	    if (seg1int != null) seg1int.scaleAdd (t, seg1dir, seg1start);	    if (param != null) { param[0] = s; param[1] = t; }	    return DIST(A+2*D+F+t*(C*t+2*(B+E)));	  }	}      }      else {	// direction vectors form an acute angle	if (-D >= A) {	  s = 1;	  t = 0;	  if (seg0int != null) seg0int.set (seg0end);	  if (seg1int != null) seg1int.set (seg1start);	  if (param != null) { param[0] = s; param[1] = t; }	  return DIST(A+2*D+F);	}	else if (D <= 0) {	  s = -D/A;	  t = 0;	  if (seg0int != null) seg0int.scaleAdd (s, seg0dir, seg0start);	  if (seg1int != null) seg1int.set (seg1start);	  if (param != null) { param[0] = s; param[1] = t; }	  return DIST(D*s+F);	}	else {	  E = -seg1dir.dot (diff); //-Dot(seg1dir,diff);	  s = 0;	  if (D >= -B) {	    t = 1;	    if (seg0int != null) seg0int.set (seg0start);	    if (seg1int != null) seg1int.set (seg1end);	    if (param != null) { param[0] = s; param[1] = t; }	    return DIST(C+2*E+F);	  }	  else {	    t = -D/B;	    if (seg0int != null) seg0int.set (seg0start);	    if (seg1int != null) seg1int.scaleAdd (t, seg1dir, seg1start);	    if (param != null) { param[0] = s; param[1] = t; }	    return DIST(F+t*(2*E+C*t));	  }	}      }    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -