⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 view.c

📁 干涉合成孔径雷达成像的相位解缠的枝切法程序。
💻 C
字号:
/*
 * view.c -- utility functions for viewing surface data
 */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include "pi.h"
#include "view.h"

/* Generate shaded bird's eye view of surface.              */
/* elev_angle = elevation angle of light vector in radians  */
/* (elev_angle=0.0 results in a default angle of 45 deg.)   */
void Shade(float *surf, char *image, int xsize, int ysize,
           double elev_angle)
{
  int    i, j, k;
  double angle, ht, r, ca, sa, ch, sh, lightness;
  ca = cos(elev_angle);
  sa = sin(elev_angle);
  for (j=0; j<ysize; j++) {
    for (i=0; i<xsize; i++) {
      k = j*xsize + i;
      if (i==xsize - 1) {
        image[k] = 0;
      }
      else {
        ht = surf[k] - surf[k+1];
        if (ht < 0.0) {
          image[k] = 0;
        } 
        else {
          /* Dot product of surface normal with light vector. */
          /* Assumes light vector perpendicular to array columns. */
          r = sqrt(1.0 + ht*ht);
          ch = 1.0/r;
          sh = ht/r;
          lightness = ch*ca + sh*sa;
          image[k] = 255.0*lightness; 
        }
      }
    }
  }
}

/* Generate image of surface elevations.                  */
void SurfImage(float *surf, char *image, int xsize, int ysize)
{
  int     i, j, k;
  double  rmin, rmax, rscale;
  for (k=0, rmax = -(rmin = 1.0e+20); k<xsize*ysize; k++) {
    if (rmin > surf[k]) rmin = surf[k];
    if (rmax < surf[k]) rmax = surf[k];
  }
  rscale = (rmin < rmax) ? 1.0/(rmax - rmin) : 0.0;
  for (k=0, rmax = -(rmin = 1.0e+20); k<xsize*ysize; k++) {
    image[k] = 255.0*rscale*(surf[k] - rmin);
  } 
}

/* Generate image of rewrapped phase.              */
/* Assumes surface values are scaled so that the   */
/* interval 0-TWOPI is scaled to the interval 0-1. */
void Rewrap(float *surf, char *image, int xsize, int ysize)
{
  int     i, j, k;
  double  r;
  for (k=0; k<xsize*ysize; k++) {
    r = surf[k];
    if (r < 0) r += (int)(-r) + 2;  /* ensure r > 0 */
    r -= (int) r;
    image[k] = 256.0*r;
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -