題目
於空間座標,求兩平行線的距離
L1=(X+1)/2=(Y-1)/2=(Z)/1
L2=(X-1)/2=(Y)/2=(Z+2)/1
距離為3
package ch4;
import java.io.*;
public class ch4_21_1
{
public static void main(String args[])throws IOException
{
InputStreamReader in=new InputStreamReader(System.in);
BufferedReader buf=new BufferedReader(in);
int l1x,l1y,l1z,l2x,l2y,l2z,x1,y1,z1,x2,y2,z2;
String sl1x,sl1y,sl1z,sl2x,sl2y,sl2z,sx1,sy1,sz1,sx2,sy2,sz2;
double r1,r2,r3,d,t;
System.out.println("請依序輸入L1中?的數值(X+?)/?,(Y+?)/?,(Z+?)/?");
sl1x=buf.readLine();
l1x=Integer.parseInt(sl1x);
sx1=buf.readLine();
x1=Integer.parseInt(sx1);
sl1y=buf.readLine();
l1y=Integer.parseInt(sl1y);
sy1=buf.readLine();
y1=Integer.parseInt(sy1);
sl1z=buf.readLine();
l1z=Integer.parseInt(sl1z);
sz1=buf.readLine();
z1=Integer.parseInt(sz1);
System.out.println("請依序輸入L2中?的數值(X+?)/?,(Y+?)/?,(Z+?)/?");
sl2x=buf.readLine();
l2x=Integer.parseInt(sl2x);
sx2=buf.readLine();
x2=Integer.parseInt(sx2);
sl2y=buf.readLine();
l2y=Integer.parseInt(sl2y);
sy2=buf.readLine();
y2=Integer.parseInt(sy2);
sl2z=buf.readLine();
l2z=Integer.parseInt(sl2z);
sz2=buf.readLine();
z2=Integer.parseInt(sz2);
t=(l1x*x2-l2x*x2+l1y*y2-l2y*y2+l1z*z2-l2z*z2)/-(Math.pow(x2,2)+Math.pow(y2,2)+Math.pow(z2,2));
r1=x2*t-l2x;
r2=y2*t-l2y;
r3=z2*t-l2z;
System.out.println(t);
System.out.println(r1);
System.out.println(r2);
System.out.println(r3);
d=Math.sqrt(Math.abs(Math.pow(r1-(-l1x),2)+Math.pow(r2-(-l1y),2)+Math.pow(r3-(-l1z),2)));
System.out.println("兩條線間的距離為"+d);
}
}
輸出結果
請依序輸入L1中?的數值(X+?)/?,(Y+?)/?,(Z+?)/?
1
2
-1
2
0
1
請依序輸入L2中?的數值(X+?)/?,(Y+?)/?,(Z+?)/?
-1
2
0
2
2
1
-0.0
1.0
-0.0
-2.0
兩條線間的距離為3.0
留言列表