zoukankan      html  css  js  c++  java
  • UVa 11437 Triangle Fun

    我是求出来所有点的坐标用叉积算的面积……

    据说可以证明出来S△PQR = S△ABC/7

      1 #include <cstdio>
      2 #include <cmath>
      3 
      4 struct Point
      5 {
      6     double x, y;
      7     Point( double x = 0, double y = 0 ):x(x), y(y) { }
      8 };
      9 
     10 Point operator+( Point A, Point B )
     11 {
     12     return Point( A.x + B.x, A.y + B.y );
     13 }
     14 
     15 Point operator-( Point A, Point B )
     16 {
     17     return Point( A.x - B.x, A.y - B.y );
     18 }
     19 
     20 Point operator*( Point A, double p )
     21 {
     22     return Point( A.x * p, A.y * p );
     23 }
     24 
     25 Point operator/( Point A, double p )
     26 {
     27     return Point( A.x / p, A.y / p );
     28 }
     29 
     30 bool operator<( const Point& A, const Point& B )
     31 {
     32     return A.x < B.x || ( A.x == B.x && A.y < B.y );
     33 }
     34 
     35 Point Rotate( Point A, double rad )
     36 {
     37     return Point( A.x * cos(rad) - A.y * sin(rad), A.x * sin(rad) + A.y * cos(rad) );
     38 }
     39 
     40 double Cross( Point A, Point B )
     41 {
     42     return A.x * B.y - A.y * B.x;
     43 }
     44 
     45 Point GetLineIntersection( Point P, Point v, Point Q, Point w )
     46 {
     47     Point u = P - Q;
     48     double t = Cross( w, u ) / Cross( v, w );
     49     return P + v * t;
     50 }
     51 
     52 double Dot( Point A, Point B )
     53 {
     54     return A.x * B.x + A.y * B.y;
     55 }
     56 
     57 double Length( Point A )
     58 {
     59     return sqrt( Dot( A, A ) );
     60 }
     61 
     62 double Angle( Point A, Point B )
     63 {
     64     return acos( Dot(A, B) / Length(A) / Length(B) );
     65 }
     66 
     67 Point read_Point()
     68 {
     69     double x, y;
     70     scanf( "%lf%lf", &x, &y );
     71     return Point( x, y );
     72 }
     73 
     74 Point GetD( Point B, Point C )
     75 {
     76     return ( C - B ) / 3.0 + B;
     77 }
     78 
     79 int main()
     80 {
     81     Point A, B, C, D, E, F;
     82     Point P, Q, R;
     83     int T;
     84     scanf( "%d", &T );
     85     while ( T-- )
     86     {
     87         A = read_Point();
     88         B = read_Point();
     89         C = read_Point();
     90         D = GetD( B, C );
     91         E = GetD( C, A );
     92         F = GetD( A, B );
     93         Point AD = D - A;
     94         Point BE = E - B;
     95         Point CF = F - C;
     96         P = GetLineIntersection( B, BE, A, AD );
     97         Q = GetLineIntersection( C, CF, B, BE );
     98         R = GetLineIntersection( A, AD, C, CF );
     99 
    100         printf( "%.0f\n", Cross( Q - P, R - P ) / 2.0 );
    101     }
    102     return 0;
    103 }
  • 相关阅读:
    Excel相关函数
    慢SQL优化
    idea 添加阿里代码检查插件
    Jmeter使用自定义编写代码
    七、一些困难的测试场景:多线程、持久化存储等
    六、测试驱动开发 TDD
    五、从宏观角度考虑单元测试
    四、使用Mock对象
    三、单元测试要测试的是什么? The Right-BICP
    二、优秀单元测试的五个特征FIRST
  • 原文地址:https://www.cnblogs.com/GBRgbr/p/3138002.html
Copyright © 2011-2022 走看看