題目

於空間座標,求兩平行線的距離

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

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 驢子 的頭像
    驢子

    驢子的生活日記

    驢子 發表在 痞客邦 留言(0) 人氣()