亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xcharts.c

?? 一個占星術算命游戲
?? C
?? 第 1 頁 / 共 3 頁
字號:
  DrawColor(gray);
  DrawDash(cx, y1, cx, y2, 1);
  DrawDash((cx+x1)/2, y1, (cx+x1)/2, y2, 1);
  DrawDash((cx+x2)/2, y1, (cx+x2)/2, y2, 1);
  DrawColor(on);
  DrawEdge(x1, y1, x2, y2);
  DrawDash(x1, cy, x2, cy, 1);

  /* Calculate the local horizon coordinates of each planet. First convert */
  /* zodiac position and declination to zenith longitude and latitude.     */

  lon = DTOR(Mod(Lon)); lat = DTOR(Lat);
  for (i = 1; i <= total; i++) {
    lonz[i] = DTOR(planet[i]); latz[i] = DTOR(planetalt[i]);
    EclToEqu(&lonz[i], &latz[i]);
  }
  for (i = 1; i <= total; i++) if (Proper(i)) {
    lonz[i] = DTOR(Mod(RTOD(lonz[_MC]-lonz[i]+PI/2.0)));
    EquToLocal(&lonz[i], &latz[i], PI/2.0-lat);
    azi[i] = DEGREES-RTOD(lonz[i]); alt[i] = RTOD(latz[i]);
    x[i] = x1+(int)((real)xs*(Mod(DEGQUAD-azi[i]))/DEGREES+ROUND);
    y[i] = y1+(int)((real)ys*(DEGQUAD-alt[i])/DEGHALF+ROUND);
    m[i] = x[i]; n[i] = y[i]+unit/2;
  }

  /* As in the DrawGlobe() routine, we now determine where to draw the   */
  /* glyphs in relation to the actual points, so that the glyphs aren't  */
  /* drawn on top of each other if possible. Again, we assume that we'll */
  /* put the glyph right under the point, unless there would be some     */
  /* overlap and the above position is better off.                       */

  for (i = 1; i <= total; i++) if (Proper(i)) {
    k = l = chartx+charty;
    for (j = 1; j < i; j++) if (Proper(j)) {
      k = MIN(k, abs(m[i]-m[j])+abs(n[i]-n[j]));
      l = MIN(l, abs(m[i]-m[j])+abs(n[i]-unit-n[j]));
    }
    if (k < unit || l < unit)
      if (k < l)
        n[i] -= unit;
  }
  for (i = total; i >= 1; i--) if (Proper(i))    /* Draw planet's glyph. */
    DrawObject(i, m[i], n[i]);
  for (i = total; i >= 1; i--) if (Proper(i)) {
    DrawColor(objectcolor[i]);
    if (!xbonus || i > BASE)
      DrawPoint(x[i], y[i]);    /* Draw small or large dot */
    else                        /* near glyph indicating   */
      DrawSpot(x[i], y[i]);     /* exact local location.   */
  }
}


/* Draw the local horizon, and draw in the planets where they are at the  */
/* time in question. This chart is done when the -Z0 is combined with the */
/* -X switch. This is an identical function to XChartHorizon(); however,  */
/* that routine's chart is entered on the horizon and meridian. Here we   */
/* center the chart around the center of the sky straight up from the     */
/* local horizon, with the horizon itself being an encompassing circle.   */

void XChartHorizonSky()
{
  real lon, lat, rx, ry, s, a, sqr2,
    lonz[TOTAL+1], latz[TOTAL+1], azi[TOTAL+1], alt[TOTAL+1];
  int x[TOTAL+1], y[TOTAL+1], m[TOTAL+1], n[TOTAL+1],
    cx = chartx / 2, cy = charty / 2, unit = 12*SCALE, i, j, k, l;

  /* Draw a circle in window to indicate horizon line, lines dividing   */
  /* the window into quadrants to indicate n/s and w/e meridians, and   */
  /* segments on these lines and the edges marking 5 degree increments. */

  sqr2 = sqrt(2.0);
  DrawColor(gray);
  DrawDash(cx, 0, cx, charty-1, 1);
  DrawDash(0, cy, chartx-1, cy, 1);
  DrawColor(hilite);
  for (i = -125; i <= 125; i += 5) {
    k = (2+(i/10*10 == i ? 1 : 0)+(i/30*30 == i ? 2 : 0))*scalet;
    s = 1.0/(DEGQUAD*sqr2);
    j = cy+(int)(s*cy*i);
    DrawLine(cx-k, j, cx+k, j);
    j = cx+(int)(s*cx*i);
    DrawLine(j, cy-k, j, cy+k);
  }
  for (i = 5; i < 55; i += 5) {
    k = (2+(i/10*10 == i ? 1 : 0)+(i/30*30 == i ? 2 : 0))*scalet;
    s = 1.0/(DEGHALF-DEGQUAD*sqr2);
    j = (int)(s*cy*i);
    DrawLine(0, j, k, j);
    DrawLine(0, charty-1-j, k, charty-1-j);
    DrawLine(chartx-1, j, chartx-1-k, j);
    DrawLine(chartx-1, charty-1-j, chartx-1-k, charty-1-j);
    j = (int)(s*cx*i);
    DrawLine(j, 0, j, k);
    DrawLine(chartx-1-j, 0, chartx-1-j, k);
    DrawLine(j, charty-1, j, charty-1-k);
    DrawLine(chartx-1-j, charty-1, chartx-1-j, charty-1-k);
  }
  rx = cx/sqr2; ry = cy/sqr2;
  DrawColor(on);
  DrawCircle(cx, cy, (int)rx, (int)ry);
  InitCircle();
  for (i = 0; i < DEGR; i += 5) {
    k = (2+(i/10*10 == i ? 1 : 0)+(i/30*30 == i ? 2 : 0))*scalet;
    DrawLine(cx+(int)((rx-k)*circ->x[i]), cy+(int)((ry-k)*circ->y[i]),
      cx+(int)((rx+k)*circ->x[i]), cy+(int)((ry+k)*circ->y[i]));
  }

  /* Calculate the local horizon coordinates of each planet. First convert */
  /* zodiac position and declination to zenith longitude and latitude.     */

  lon = DTOR(Mod(Lon)); lat = DTOR(Lat);
  for (i = 1; i <= total; i++) {
    lonz[i] = DTOR(planet[i]); latz[i] = DTOR(planetalt[i]);
    EclToEqu(&lonz[i], &latz[i]);
  }
  for (i = 1; i <= total; i++) if (Proper(i)) {
    lonz[i] = DTOR(Mod(RTOD(lonz[_MC]-lonz[i]+PI/2.0)));
    EquToLocal(&lonz[i], &latz[i], PI/2.0-lat);
    azi[i] = a = DEGREES-RTOD(lonz[i]); alt[i] = DEGQUAD-RTOD(latz[i]);
    s = alt[i]/DEGQUAD;
    x[i] = cx+(int)(rx*s*COSD(DEGHALF+azi[i])+ROUND);
    y[i] = cy+(int)(ry*s*SIND(DEGHALF+azi[i])+ROUND);
    if (!ISCHART(x[i], y[i]))
      x[i] = -1000;
    m[i] = x[i]; n[i] = y[i]+unit/2;
  }

  /* As in the DrawGlobe() routine, we now determine where to draw the   */
  /* glyphs in relation to the actual points, so that the glyphs aren't  */
  /* drawn on top of each other if possible. Again, we assume that we'll */
  /* put the glyph right under the point, unless there would be some     */
  /* overlap and the above position is better off.                       */

  for (i = 1; i <= total; i++) if (Proper(i)) {
    k = l = chartx+charty;
    for (j = 1; j < i; j++) if (Proper(j)) {
      k = MIN(k, abs(m[i]-m[j])+abs(n[i]-n[j]));
      l = MIN(l, abs(m[i]-m[j])+abs(n[i]-unit-n[j]));
    }
    if (k < unit || l < unit)
      if (k < l)
        n[i] -= unit;
  }
  for (i = total; i >= 1; i--) if (m[i] >= 0 && Proper(i))    /* Draw glyph. */
    DrawObject(i, m[i], n[i]);
  for (i = total; i >= 1; i--) if (x[i] >= 0 && Proper(i)) {
    DrawColor(objectcolor[i]);
    if (!xbonus || i > BASE)
      DrawPoint(x[i], y[i]);    /* Draw small or large dot */
    else                        /* near glyph indicating   */
      DrawSpot(x[i], y[i]);     /* exact local location.   */
  }
}


/* Draw a chart depicting an aerial view of the solar system in space, with */
/* all the planets drawn around the Sun, and the specified central planet   */
/* in the middle, as done when the -S is combined with the -X switch.       */

void XChartSpace()
{
  int x[TOTAL+1], y[TOTAL+1], m[TOTAL+1], n[TOTAL+1],
    cx = chartx / 2, cy = charty / 2, unit, x1, y1, x2, y2, i, j, k, l;
  real sx, sy, sz = 30.0, xp, yp, a;

  unit = MAX(xtext*12, 6*SCALE);
  x1 = unit; y1 = unit; x2 = chartx-1-unit; y2 = charty-1-unit;
  unit = 12*SCALE;

  /* Determine the scale of the window. For a scale size of 300, make    */
  /* the window 6 AU in radius (enough for inner planets out to asteroid */
  /* belt). For a scale of 200, make window 30 AU in radius (enough for  */
  /* planets out to Neptune). For scale of 100, make it 90 AU in radius  */
  /* (enough for all planets including the orbits of the uranians.)      */

  if (SCALE < 2)
    sz = 90.0;
  else if (SCALE > 2)
    sz = 6.0;
  sx = (real)(cx-x1)/sz; sy = (real)(cy-y1)/sz;
  for (i = 0; i <= BASE; i++) if (Proper(i)) {

    /* Determine what glyph corresponds to our current planet. Normally the */
    /* array indices are the same, however we have to do some swapping for  */
    /* non-geocentric based charts where a planet gets replaced with Earth. */

    if (centerplanet == 0)
      j = i < 2 ? 1-i : i;
    else if (centerplanet == 1)
      j = i;
    else
      j = i == 0 ? centerplanet : (i == centerplanet ? 0 : i);
    xp = spacex[j]; yp = spacey[j];
    x[i] = cx-(int)(xp*sx); y[i] = cy+(int)(yp*sy);
    m[i] = x[i]; n[i] = y[i]+unit/2;
  }

  /* As in the DrawGlobe() routine, we now determine where to draw the   */
  /* glyphs in relation to the actual points, so that the glyphs aren't  */
  /* drawn on top of each other if possible. Again, we assume that we'll */
  /* put the glyph right under the point, unless there would be some     */
  /* overlap and the above position is better off.                       */

  for (i = 0; i <= BASE; i++) if (Proper(i)) {
    k = l = chartx+charty;
    for (j = 0; j < i; j++) if (Proper(j)) {
      k = MIN(k, abs(m[i]-m[j])+abs(n[i]-n[j]));
      l = MIN(l, abs(m[i]-m[j])+abs(n[i]-unit-n[j]));
    }
    if (k < unit || l < unit)
      if (k < l)
        n[i] -= unit;
  }

  /* Draw the 12 sign boundaries from the center body to edges of screen. */

  a = Mod(RTOD(Angle(spacex[_JUP], spacey[_JUP]))-planet[_JUP]);
  DrawColor(gray);
  for (i = 0; i < SIGNS; i++) {
    k = cx+2*(int)((real)cx*COSD((real)i*30.0+a));
    l = cy+2*(int)((real)cy*SIND((real)i*30.0+a));
    DrawClip(cx, cy, k, l, x1, y1, x2, y2, 1);
  }
  DrawColor(hilite);
  DrawEdge(x1, y1, x2, y2);
  for (i = BASE; i >= 0; i--)
    if (Proper(i) && ISLEGAL(m[i], n[i], x1, y1, x2, y2))
      DrawObject(i, m[i], n[i]);
  for (i = BASE; i >= 0; i--)
    if (Proper(i) && ISLEGAL(x[i], y[i], x1, y1, x2, y2)) {
      DrawColor(objectcolor[i]);
      if (!xbonus || i > BASE)
        DrawPoint(x[i], y[i]);    /* Draw small or large dot */
      else                        /* near glyph indicating   */
        DrawSpot(x[i], y[i]);     /* exact local location.   */
    }
}


/* Draw a chart showing a graphical ephemeris for the given month (or year */
/* if -Ey in effect), with the date on the vertical access and the zodiac  */
/* on the horizontal, as done when the -E is combined with the -X switch.  */

void XChartEphemeris()
{
  real symbol[TOTAL*2+1];
  char string[4];
  int yea, unit = 6*SCALE, daytot, d = 1, day, mon, monsiz,
    x1, y1, x2, y2, xs, ys, m, n, u, v, i, j;

  yea = (exdisplay & DASHEy) > 0;    /* Is this -Ey -X or just -E -X? */
  if (yea) {
    daytot = DayInYear(Yea);
    day = 1; mon = 1; monsiz = 31;
  } else
    daytot = DayInMonth(Mon, Yea);
  x1 = yea ? 30 : 24; y1 = unit*2; x2 = chartx - x1; y2 = charty - y1;
  xs = x2 - x1; ys = y2 - y1;

  /* Display glyphs of the zodiac along the bottom axis. */
  for (i = 1; i <= SIGNS+1; i++) {
    m = x1 + xs * (i-1) / 12;
    j = i > SIGNS ? 1 : i;
    DrawColor(signcolor(j));
    DrawSign(j, m, y2 + unit);
    DrawColor(gray);
    DrawDash(m, y1, m, y2, 2);
  }

  /* Loop and display planet movements for one day segment. */
  while (d <= daytot + 1) {
    n = v;
    v = y1 + MULTDIV(ys, d-1, daytot);
    if (!yea || day == 1) {
      DrawColor(gray);
      DrawDash(x1, v, x2, v, 1);    /* Marker line for day or month. */
    }
    if (d > 1)
      for (i = 1; i <= total; i++)
        planet1[i] = planet[i];
    if (yea) {
      MM = mon; DD = day;
    } else {
      MM = Mon; DD = d;
    }
    YY = Yea; TT = 0.0; ZZ = defzone; OO = deflong; AA = deflat;
    CastChart(TRUE);

    /* Draw planet glyphs along top of chart. */
    if (d < 2) {
      for (i = 1; i <= total; i++) {
        symbol[i*2-1] = -LARGE;
        if (!Proper(i) || (i == _MOO && xbonus))
          symbol[i*2] = -LARGE;
        else
          symbol[i*2] = planet[i];
      }
      FillSymbolLine(symbol);
      for (i = total; i >= 1; i--)
        if (symbol[i*2] >= 0.0)
          DrawObject(i, x1 + (int)((real)xs * symbol[i*2] / DEGREES), unit);

    /* Draw a line segment for each object during this time section. */
    } else
      for (i = total; i >= 1; i--) {
        if (!Proper(i) || (i == _MOO && xbonus))
          continue;
        m = x1 + (int)((real)xs * planet1[i] / DEGREES);
        u = x1 + (int)((real)xs * planet[i]  / DEGREES);
        DrawColor(objectcolor[i]);
        DrawWrap(m, n, u, v, x1, x2, objectcolor[i]);
      }

    /* Label months or days in the month along the left and right edges. */
    if (d <= daytot && (!yea || day == 1)) {
      if (yea) {
        sprintf(string, "%c%c%c", MONNAM(mon));
        i = (mon == Mon);
      } else {
        sprintf(string, "%2d", d);
        i = (d == Day);
      }
      DrawColor(i ? on : hilite);
      DrawText(string,     FONTX   *scalet, v + (FONTY-2)*scalet, -1);
      DrawText(string, x2+(FONTX-1)*scalet, v + (FONTY-2)*scalet, -1);
    }

    /* Now increment the day counter. For a month we always go up by one. */
    /* For a year we go up by four or until the end of the month reached. */
    if (yea) {
      day += 4;
      if (day > monsiz) {
        d += 4-(day-monsiz-1);
        if (d <= daytot + 1) {
          mon++;
          monsiz = DayInMonth(mon, Yea);
          day = 1;
        }
      } else
        d += 4;
    } else
      d++;
  }
  DrawColor(hilite);
  DrawEdge(x1, y1, x2, y2);

  MM = Mon; DD = Day; TT = Tim;    /* Recast original chart. */
  CastChart(TRUE);
}
#endif /* GRAPH */

/* xcharts.c */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
制服丝袜av成人在线看| 久久精品国产亚洲aⅴ | 麻豆91精品视频| 欧美日产在线观看| 经典三级在线一区| 国产片一区二区三区| 99久久伊人久久99| 亚洲乱码中文字幕综合| 欧美久久久久久久久| 久久精品国产一区二区三 | 日本一区二区不卡视频| 99国产一区二区三精品乱码| 一二三区精品福利视频| 91精品综合久久久久久| 国产在线一区二区| 中文字幕在线不卡视频| 欧美日韩情趣电影| 久久狠狠亚洲综合| 国产精品久久久久久久浪潮网站| 欧美特级限制片免费在线观看| 免费在线看成人av| 久久久精品综合| 91黄色在线观看| 久久激情五月婷婷| 一区二区成人在线| www激情久久| 欧美中文字幕一区二区三区 | 国产一区二区久久| 亚洲欧美日韩一区二区| 欧美一级黄色录像| 99免费精品视频| 久久精品国产亚洲aⅴ| 综合久久久久久| 欧美电影免费观看高清完整版在| 成年人午夜久久久| 蜜桃一区二区三区四区| 国产精品久久久久久亚洲毛片| 9191精品国产综合久久久久久| 成人av在线网| 蜜臀av一区二区在线观看 | 日韩国产在线观看一区| 国产精品美女久久久久aⅴ| 欧美日韩国产片| av影院午夜一区| 激情久久久久久久久久久久久久久久| 一区二区视频免费在线观看| 久久久精品国产99久久精品芒果| 欧美日韩免费高清一区色橹橹| 成人av电影在线网| 国产一区二区主播在线| 日韩高清不卡在线| 亚洲激情欧美激情| ㊣最新国产の精品bt伙计久久| 精品国产乱码久久久久久浪潮 | 一区二区三区在线免费播放| 国产三级久久久| 精品少妇一区二区三区视频免付费| 欧美专区在线观看一区| 成人一级视频在线观看| 国产美女一区二区| 久久99精品一区二区三区三区| 天天射综合影视| 亚洲电影激情视频网站| 一区二区三区在线视频观看58| 国产精品久久久爽爽爽麻豆色哟哟| 精品国产sm最大网站| 91精品国产综合久久精品图片 | 亚洲自拍偷拍九九九| 中文字幕日本乱码精品影院| 国产目拍亚洲精品99久久精品| 精品久久久久久久一区二区蜜臀| 日韩三级精品电影久久久| 日韩一区二区在线看片| 欧美高清性hdvideosex| 欧美军同video69gay| 欧美男女性生活在线直播观看| 欧美中文一区二区三区| 在线免费观看不卡av| 欧美成人乱码一区二区三区| 91精品国产色综合久久不卡蜜臀| 欧美日韩国产一二三| 欧美高清hd18日本| 日韩手机在线导航| 久久久91精品国产一区二区三区| 国产女主播视频一区二区| 国产精品女同一区二区三区| 综合激情成人伊人| 亚洲综合色视频| 天堂午夜影视日韩欧美一区二区| 日韩av中文字幕一区二区| 久久99蜜桃精品| 国产福利一区二区三区视频| 成人av在线影院| 色综合欧美在线| 3atv一区二区三区| 日韩美女视频一区二区在线观看| 精品国产百合女同互慰| 国产精品午夜春色av| 亚洲影院久久精品| 毛片av一区二区| 粉嫩欧美一区二区三区高清影视| av在线不卡电影| 欧美日韩日日夜夜| 久久亚洲一区二区三区明星换脸 | 国产精品福利av| 亚洲成国产人片在线观看| 美女精品一区二区| 成人18精品视频| 在线播放一区二区三区| 国产日韩精品一区二区三区| 亚洲欧美偷拍三级| 日韩黄色免费电影| 99久久久久久| 欧美日本在线一区| 国产精品视频一二三| 日韩avvvv在线播放| 成人中文字幕合集| 欧美一区二区三区免费| 国产精品卡一卡二卡三| 日本一区中文字幕| 99精品热视频| 精品国产伦理网| 一区二区三区高清不卡| 国产成人在线色| 欧美美女网站色| 国产精品成人一区二区艾草| 日本亚洲最大的色成网站www| 不卡高清视频专区| 精品美女一区二区三区| 亚洲成av人片| 91香蕉视频污| 国产欧美一区二区精品性| 免费亚洲电影在线| 91精彩视频在线| 国产精品美女一区二区三区| 麻豆精品新av中文字幕| 91官网在线免费观看| 中文av字幕一区| 激情综合色播五月| 91麻豆精品国产91久久久| 一区二区三区在线观看国产| 不卡电影一区二区三区| 久久无码av三级| 热久久一区二区| 91精品免费观看| 五月激情综合色| 欧美亚日韩国产aⅴ精品中极品| 国产精品久久久久久久久免费樱桃| 九色porny丨国产精品| 日韩一区二区在线观看视频播放| 亚洲主播在线观看| 在线视频一区二区免费| 亚洲精品日韩专区silk| 99久久er热在这里只有精品66| 国产亚洲欧洲997久久综合 | 日本精品视频一区二区三区| 国产精品久久久久久妇女6080| 国产成人午夜99999| www久久精品| 国产精品亚洲视频| 国产欧美日韩不卡| 国产成人综合网| 日本一区二区三区久久久久久久久不 | 最新国产成人在线观看| 成人小视频在线观看| 国产网站一区二区| 成人黄页毛片网站| 国产精品麻豆视频| 99免费精品在线观看| 亚洲美女视频在线| 欧美在线观看18| 亚洲自拍偷拍九九九| 欧美精品久久99久久在免费线| 日本三级韩国三级欧美三级| 日韩一区二区电影| 久草热8精品视频在线观看| 精品蜜桃在线看| 粉嫩绯色av一区二区在线观看 | 国产精品三级av| 99久久国产综合色|国产精品| 亚洲欧美日韩精品久久久久| 欧美三电影在线| 麻豆freexxxx性91精品| 国产亚洲午夜高清国产拍精品| 成人黄色在线网站| 一二三四社区欧美黄| 日韩视频123| 成人精品视频一区二区三区尤物| 亚洲欧美激情插| 欧美日韩国产影片| 国产一区999| 一区二区激情小说| 精品久久久久久久久久久久久久久| 国产成人aaaa| 一区二区不卡在线视频 午夜欧美不卡在| 欧美精品少妇一区二区三区| 国产美女在线观看一区| 亚洲激情av在线| 精品欧美乱码久久久久久| 处破女av一区二区|