home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 13 / 13.iso / p / p024 / 12.img / ADS1.LIB / UTIL.H < prev   
Encoding:
C/C++ Source or Header  |  1992-05-29  |  5.1 KB  |  121 lines

  1. /*****************************************************************************
  2.       UTIL.H
  3.       (C) Copyright 1988-1992 by Autodesk, Inc.
  4.  
  5.       This program is copyrighted by Autodesk, Inc. and is  licensed
  6.       to you under the following conditions.  You may not distribute
  7.       or  publish the source code of this program in any form.   You
  8.       may  incorporate this code in object form in derivative  works
  9.       provided  such  derivative  works  are  (i.) are  designed and
  10.       intended  to  work  solely  with  Autodesk, Inc. products, and
  11.       (ii.)  contain  Autodesk's  copyright  notice  "(C)  Copyright
  12.       1988-1992 by Autodesk, Inc."
  13.  
  14.       AUTODESK  PROVIDES THIS PROGRAM "AS IS" AND WITH  ALL  FAULTS.
  15.       AUTODESK  SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF  MER-
  16.       CHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK,  INC.
  17.       DOES  NOT  WARRANT THAT THE OPERATION OF THE PROGRAM  WILL  BE
  18.       UNINTERRUPTED OR ERROR FREE.
  19.  
  20.   Description: Library of various utility functions. This is not a well
  21.                organized library, just a rather random collection of 
  22.            functions. But you might find some of the functions useful.
  23.   
  24. *****************************************************************************/
  25.  
  26. #ifndef _UTIL_H
  27. #define _UTIL_H
  28.  
  29.  
  30. /****************************************************************************/
  31. /*  DEFINES                                                                 */
  32. /****************************************************************************/
  33.  
  34. #define      PI               3.14159265358979323846
  35. #define      DEGRAD           (PI/180.0)  
  36. #define      EPS              1e-10
  37. #define      EPS_COS          0.99999
  38.  
  39. #define      ELEMENTS(array)  (sizeof(array)/sizeof((array)[0]))
  40. #define      SQR(x)           ((x)*(x))
  41. #define      LENGTH(v)        sqrt(SQR((v)[X])+SQR((v)[Y])+SQR((v)[Z]))
  42. #define      DISTANCE(a,b)    sqrt(SQR((a)[X]-(b)[X])+SQR((a)[Y]-(b)[Y])\
  43.                    +SQR((a)[Z]-(b)[Z]))
  44. #define      DOTPROD(a,b)     ((a)[X]*(b)[X]+(a)[Y]*(b)[Y]+(a)[Z]*(b)[Z])
  45.  
  46. #define      CPY_PNT(a,b)     ((a)[X]=(b)[X],(a)[Y]=(b)[Y],(a)[Z]=(b)[Z])
  47. #define      SUB_PNT(a,b,c)   ((a)[X]=(b)[X]-(c)[X],(a)[Y]=(b)[Y]-(c)[Y],\
  48.                    (a)[Z]=(b)[Z]-(c)[Z])
  49. #define      ADD_PNT(a,b,c)   ((a)[X]=(b)[X]+(c)[X],(a)[Y]=(b)[Y]+(c)[Y],\
  50.                    (a)[Z]=(b)[Z]+(c)[Z])
  51.  
  52. /****************************************************************************/
  53. /*  EXPORTED FUNCTIONS                                                      */
  54. /****************************************************************************/
  55.  
  56. int sa_get_pline_segment_data  _((ads_name plseg_name, 
  57.                   struct resbuf *plseg_rb,
  58.                   ads_point p1, ads_point p2,
  59.                   ads_point center, double *radius,
  60.                   ads_point normal));
  61.                    
  62. int sa_get_cs_of_picked_entity _((char *prompt, int axis_required,
  63.                   ads_point origin, ads_point xaxis,
  64.                   ads_point yaxis, ads_point zaxis));
  65.                    
  66. void   sa_save_acad_vars      _((void));
  67. void   sa_restore_acad_vars   _((void));
  68. void   sa_cmdecho_off         _((void));
  69. void   sa_cmdecho_back        _((void));
  70. void   sa_undo_group          _((void));
  71. void   sa_undo_end            _((void));
  72. void   sa_set_sortents        _((int pick_mode));
  73. void   sa_save_sortents       _((void));
  74. void   sa_restore_sortents    _((void));
  75.  
  76. void   sa_cross               _((ads_point v, ads_point v1, ads_point v2));
  77. double sa_det                 _((ads_point a, ads_point b, ads_point c));
  78. int    sa_u2w                 _((ads_point p1, ads_point p2));
  79. int    sa_w2u                 _((ads_point p1, ads_point p2));
  80. int    sa_points_are_collinear _((ads_point p1, ads_point p2, ads_point p3));
  81. void   sa_transform_pt        _((ads_point m[4], ads_point p1, ads_point p2));
  82. int    sa_normalize           _((ads_point v));
  83. void   sa_normalize_angle     _((double *angle));
  84. double sa_3d_angle            _((ads_point apex, ads_point p1, ads_point p2));
  85.  
  86. int    sa_plane_from_point_and_normal _((ads_point origin, 
  87.                      ads_point xaxis,
  88.                      ads_point yaxis, 
  89.                      ads_point zaxis));
  90.  
  91. int    sa_plane_equation              _((int pts3, 
  92.                      ads_point p1, ads_point p2, 
  93.                      ads_point p3,
  94.                      ads_point n, double *d));
  95.                    
  96. int    sa_rotate_point_around_axis _((ads_point pp, double angle,
  97.                       ads_point p1, ads_point p2));
  98.  
  99. double sa_angle_around_axis        _((ads_point p1, ads_point p2, 
  100.                       ads_point from, ads_point to));
  101.  
  102. void   sa_orientate_cs_upwards     _((ads_point origin, ads_point xaxis,
  103.                       ads_point yaxis, ads_point zaxis));
  104.  
  105. int    sa_is_planar_pline          _((ads_name vertex_name, ads_point normal));
  106.  
  107. int    sa_pline_name_from_vertex_name _((ads_name vertex_name,
  108.                      ads_name pline_name));
  109.  
  110. int    sa_make_arb_matrix _((ads_point zaxis, ads_point m[4]));
  111.  
  112. int    sa_get_radius_of_picked_entity _((char *prompt, double *radius));
  113.  
  114. int    sa_snap _((char *prompt, char *mode, ads_point p));
  115. double sa_uniform_scaling_factor _((ads_point m[4]));
  116.  
  117. double sa_visual_distance _((ads_point p1, ads_point p2));
  118.  
  119.  
  120. #endif /*_UTIL_H*/
  121.