zoukankan      html  css  js  c++  java
  • 测试用

     1 #include <iostream>
     2 #include <cmath>
     3 #include <cstdlib>
     4 #include <ctime>
     5 using namespace std;
     6 
     7 struct Tpoint{
     8     double x, y, z;
     9 };
    10 
    11 inline double length(Tpoint A, Tpoint B){
    12     double x = A.x - B.x, y = A.y - B.y, z = A.z - B.z;
    13     return sqrt(x * x + y * y + z * z);
    14 }
    15 
    16 inline double across(Tpoint A, Tpoint B, Tpoint C){
    17     Tpoint p1, p2;
    18     p1.x = C.x - A.x; p1.y = C.y - A.y; p1.z = C.z - A.z;
    19     p2.x = C.x - B.x; p2.y = C.y - B.y; p2.z = C.z - B.z;
    20     double x = p1.y * p2.z - p1.z * p2.y;
    21     double y = p1.z * p2.x - p1.x * p2.z;
    22     double z = p1.x * p2.y - p1.y * p2.x;
    23     //cout<<x<<' '<<y<<' '<<z<<endl;
    24     return sqrt(x * x + y * y + z * z);
    25 }
    26 
    27 double distance(Tpoint A, Tpoint B, Tpoint C){
    28     return abs(across(A,B,C))/length(B,C);
    29 }
    30 
    31 void neijieyuan(Tpoint A, Tpoint B, Tpoint C){
    32     Tpoint cen;
    33 
    34     srand(time(0));
    35     A.x = (double)rand()/rand(); A.y = -(double)rand()/rand();
    36     B.x = -(double)rand()/rand(); B.y = (double)rand()/rand();
    37     C.x = -(double)rand()/rand(); C.y = (double)rand()/rand();
    38     cout<<A.x<<' '<<A.y<<' '<<B.x<<' '<<B.y<<' '<<C.x<<' '<<C.y<<endl;
    39     double a = length(B,C), b = length(C, A), c = length(A, B);
    40     //cout<<a<<' '<<b<<' '<<c<<endl;
    41     if(abs(across(A, B, C)) < 0.01) {cout<<"Wrong Input!"<<endl;return;}
    42     cen.x = (a * A.x + b * B.x + c * C.x)/(a + b + c);
    43     cen.y = (a * A.y + b * B.y + c * C.y)/(a + b + c);
    44     cen.z = (a * A.z + b * B.z + c * C.z)/(a + b + c);
    45     cout<<cen.x<<' '<<cen.y<<' '<<cen.z<<endl;
    46     cout<<distance(cen, A, B)<<' '<<distance(cen, B, C)<<' '<<distance(cen, C, A)<<endl;
    47 }
    48 
    49 int main(){
    50     Tpoint A, B, C;
    51     while(true){
    52         //cin>>A.x>>A.y>>A.z>>B.x>>B.y>>B.z>>C.x>>C.y>>C.z;
    53         //cout<<across(A, B, C)<<endl;
    54         neijieyuan(A, B, C);
    55         //cout<<abs(across(A, B, C))/(a + b + c)<<endl;
    56         system("pause");
    57     }
    58 }
    View Code
    #include <iostream>
    #include <cmath>
    #include <cstdlib>
    #include <ctime>
    using namespace std;
    
    struct Tpoint{
        double x, y, z;
    };
    
    inline double length(Tpoint A, Tpoint B){
        double x = A.x - B.x, y = A.y - B.y, z = A.z - B.z;
        return sqrt(x * x + y * y + z * z);
    }
    
    inline double across(Tpoint A, Tpoint B, Tpoint C){
        Tpoint p1, p2;
        p1.x = C.x - A.x; p1.y = C.y - A.y; p1.z = C.z - A.z;
        p2.x = C.x - B.x; p2.y = C.y - B.y; p2.z = C.z - B.z;
        double x = p1.y * p2.z - p1.z * p2.y;
        double y = p1.z * p2.x - p1.x * p2.z;
        double z = p1.x * p2.y - p1.y * p2.x;
        //cout<<x<<' '<<y<<' '<<z<<endl;
        return sqrt(x * x + y * y + z * z);
    }
    
    double distance(Tpoint A, Tpoint B, Tpoint C){
        return abs(across(A,B,C))/length(B,C);
    }
    
    void neijieyuan(Tpoint A, Tpoint B, Tpoint C){
        Tpoint cen;
    
        srand(time(0));
        A.x = (double)rand()/rand(); A.y = -(double)rand()/rand();
        B.x = -(double)rand()/rand(); B.y = (double)rand()/rand();
        C.x = -(double)rand()/rand(); C.y = (double)rand()/rand();
        cout<<A.x<<' '<<A.y<<' '<<B.x<<' '<<B.y<<' '<<C.x<<' '<<C.y<<endl;
        double a = length(B,C), b = length(C, A), c = length(A, B);
        //cout<<a<<' '<<b<<' '<<c<<endl;
        if(abs(across(A, B, C)) < 0.01) {cout<<"Wrong Input!"<<endl;return;}
        cen.x = (a * A.x + b * B.x + c * C.x)/(a + b + c);
        cen.y = (a * A.y + b * B.y + c * C.y)/(a + b + c);
        cen.z = (a * A.z + b * B.z + c * C.z)/(a + b + c);
        cout<<cen.x<<' '<<cen.y<<' '<<cen.z<<endl;
        cout<<distance(cen, A, B)<<' '<<distance(cen, B, C)<<' '<<distance(cen, C, A)<<endl;
    }
    
    int main(){
        Tpoint A, B, C;
        while(true){
            //cin>>A.x>>A.y>>A.z>>B.x>>B.y>>B.z>>C.x>>C.y>>C.z;
            //cout<<across(A, B, C)<<endl;
            neijieyuan(A, B, C);
            //cout<<abs(across(A, B, C))/(a + b + c)<<endl;
            system("pause");
        }
    }
    

      

  • 相关阅读:
    java前端学习步骤
    安装Sublime Text 3插件的方法(转自Rising的博文)
    LibSVM学习详细说明
    class 2-3 小项目练习
    class 2-2 小项目练习
    class 2-1 小项目练习
    class 1-1 python开发环境配置
    Class
    class 10 文件和异常
    class
  • 原文地址:https://www.cnblogs.com/oyking/p/3188759.html
Copyright © 2011-2022 走看看