• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-21  評論-10  文章-21  trackbacks-0
             1 /*
             2 近兩個小時
             3 錯誤有三:1 dis函數a.y - b.y 又一次寫成了 a.y - a.y;
             4           2 角度旋轉時沒有考慮方向性,是向左轉,還是向右轉。沒有考慮清楚
             5           3 第11次如果還碰到就輸出,否則輸出inf
             6 */
             7 #include<iostream>
             8 #include<algorithm>
             9 #include<cmath>
            10 using namespace std;
            11 
            12 const int maxn = 30;
            13 int x[maxn], y[maxn], r[maxn];
            14 
            15 struct Ray{
            16     double x, y, dx, dy;
            17 };
            18 Ray ray;
            19 int n;
            20 
            21 double dis(Ray a, Ray b){
            22     return (a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y);
            23 }
            24 
            25 double get_angle(double x0, double y0, double x1, double y1){
            26     return atan2(x0*y1 - x1*y0, x0*x1 + y0*y1) ;
            27 }
            28 
            29 bool get(Ray ray, int id, Ray & next){
            30     double a = ray.dx * ray.dx + ray.dy * ray.dy;
            31     double b = 2 * ray.dx * (ray.x - x[id]) + 2 * ray.dy * (ray.y - y[id]);
            32     double c = (ray.x - x[id])*(ray.x - x[id]) + (ray.y - y[id])*(ray.y - y[id]) - 1.0 * r[id] * r[id];
            33     double delta = b*- 4*a*c;
            34     if(delta < 0)return false;
            35     double p = (-- sqrt(delta) ) / (2 * a);
            36     if(p <= 1e-8)return false;
            37     next.x = ray.dx * p + ray.x;
            38     next.y = ray.dy * p + ray.y;
            39     double theta = get_angle(ray.dx, ray.dy, next.x - x[id], next.y - y[id] )
            40                  - get_angle(next.x - x[id], next.y - y[id], -ray.dx, -ray.dy);
            41     next.dx = ray.dx * cos(theta) - ray.dy * sin(theta);
            42     next.dy = ray.dx * sin(theta) + ray.dy * cos(theta);
            43     return true;
            44 }
            45 
            46 void solve(){
            47     int i, j;
            48     for(i = 0; i < 11; i++){
            49         Ray best, next_ray;
            50         bool first = true;
            51         int id;
            52         for(j = 0; j < n; j++)
            53            ifget(ray, j, next_ray) ){
            54                if(first || dis(best, ray) > dis(next_ray, ray) ){
            55                     first = false;
            56                     best = next_ray;
            57                     id = j;
            58                }
            59            }
            60        if(first)break;
            61        if(i < 10)printf("%d ",id+1);
            62        ray = best;
            63     }
            64     if(i==11){
            65        printf("\n");
            66     }else
            67         printf("inf\n");
            68 }
            69 
            70 int main()
            71 {
            72     int cas = 1;
            73     while(scanf("%d",&n) && n){
            74         for(int i = 0; i < n; i++)
            75           scanf("%d %d %d",&x[i], &y[i], &r[i]);
            76         scanf("%lf %lf %lf %lf",&ray.x, &ray.y, &ray.dx, &ray.dy);
            77         printf("Scene %d\n",cas++);
            78         solve();
            79         printf("\n");
            80     }
            81 }

            posted on 2009-10-25 00:06 wangzhihao 閱讀(118) 評論(0)  編輯 收藏 引用 所屬分類: geometry
            亚洲AV无码久久寂寞少妇| 久久精品国产亚洲AV不卡| 成人综合久久精品色婷婷 | 久久亚洲中文字幕精品有坂深雪| 久久乐国产精品亚洲综合| 丁香五月网久久综合| 久久亚洲精品国产精品| 久久精品麻豆日日躁夜夜躁| 亚洲香蕉网久久综合影视| 国产aⅴ激情无码久久| 性欧美丰满熟妇XXXX性久久久 | 亚洲中文字幕无码久久综合网 | 国产高清美女一级a毛片久久w | 久久ZYZ资源站无码中文动漫| 亚洲午夜久久久久久噜噜噜| 日韩人妻无码精品久久久不卡| 伊人久久精品无码二区麻豆| 亚洲AV无码成人网站久久精品大| 欧美午夜精品久久久久免费视| 国产亚洲色婷婷久久99精品| 久久中文字幕一区二区| 国产综合免费精品久久久| 日本国产精品久久| 人妻精品久久久久中文字幕69| av国内精品久久久久影院| 精品国产福利久久久| 久久久久久一区国产精品| 久久人人爽人人爽人人片AV不| 久久精品国产亚洲AV无码偷窥| 亚洲国产精品久久久久婷婷老年| 欧美亚洲另类久久综合婷婷| 99久久精品免费看国产一区二区三区| 久久精品天天中文字幕人妻| 国产激情久久久久影院小草| 亚洲精品第一综合99久久| 国产精品久久久久影视不卡| 日日狠狠久久偷偷色综合96蜜桃| 久久久久久亚洲Av无码精品专口| 久久er国产精品免费观看8| 亚洲色大成网站www久久九| 国产福利电影一区二区三区久久老子无码午夜伦不 |