/[freetype]/freetype2/include/freetype/fttrigon.h
ViewVC logotype

Diff of /freetype2/include/freetype/fttrigon.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.10 by werner, Tue Nov 4 07:44:19 2003 UTC revision 1.11 by wl, Thu Oct 27 21:28:35 2005 UTC
# Line 4  Line 4 
4  /*                                                                         */  /*                                                                         */
5  /*    FreeType trigonometric functions (specification).                    */  /*    FreeType trigonometric functions (specification).                    */
6  /*                                                                         */  /*                                                                         */
7  /*  Copyright 2001, 2003 by                                                */  /*  Copyright 2001, 2003, 2005 by                                          */
8  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
9  /*                                                                         */  /*                                                                         */
10  /*  This file is part of the FreeType project, and may only be used,       */  /*  This file is part of the FreeType project, and may only be used,       */
# Line 33  FT_BEGIN_HEADER Line 33  FT_BEGIN_HEADER
33    
34    /*************************************************************************/    /*************************************************************************/
35    /*                                                                       */    /*                                                                       */
36    /* @section:                                                             */    /* <Section>                                                             */
37    /*   computations                                                        */    /*   computations                                                        */
38    /*                                                                       */    /*                                                                       */
39    /*************************************************************************/    /*************************************************************************/
40    
41    
42    /*************************************************************************/    /*************************************************************************
43    /*                                                                       */     *
44    /* @type:                                                                */     * @type:
45    /*    FT_Angle                                                           */     *   FT_Angle
46    /*                                                                       */     *
47    /* @description:                                                         */     * @description:
48    /*    This type is used to model angle values in FreeType.  Note that    */     *   This type is used to model angle values in FreeType.  Note that the
49    /*    the angle is a 16.16 fixed float value expressed in degrees.       */     *   angle is a 16.16 fixed float value expressed in degrees.
50    /*                                                                       */     *
51       */
52    typedef FT_Fixed  FT_Angle;    typedef FT_Fixed  FT_Angle;
53    
54    
55    /*************************************************************************/    /*************************************************************************
56    /*                                                                       */     *
57    /* @macro:                                                               */     * @macro:
58    /*    FT_ANGLE_PI                                                        */     *   FT_ANGLE_PI
59    /*                                                                       */     *
60    /* @description:                                                         */     * @description:
61    /*   The angle pi expressed in @FT_Angle units.                          */     *   The angle pi expressed in @FT_Angle units.
62    /*                                                                       */     *
63       */
64  #define FT_ANGLE_PI  ( 180L << 16 )  #define FT_ANGLE_PI  ( 180L << 16 )
65    
66    
67    /*************************************************************************/    /*************************************************************************
68    /*                                                                       */     *
69    /* @macro:                                                               */     * @macro:
70    /*    FT_ANGLE_2PI                                                       */     *   FT_ANGLE_2PI
71    /*                                                                       */     *
72    /* @description:                                                         */     * @description:
73    /*    The angle 2*pi expressed in @FT_Angle units.                       */     *   The angle 2*pi expressed in @FT_Angle units.
74    /*                                                                       */     *
75       */
76  #define FT_ANGLE_2PI  ( FT_ANGLE_PI * 2 )  #define FT_ANGLE_2PI  ( FT_ANGLE_PI * 2 )
77    
78    
79    /*************************************************************************/    /*************************************************************************
80    /*                                                                       */     *
81    /* @macro:                                                               */     * @macro:
82    /*    FT_ANGLE_PI2                                                       */     *   FT_ANGLE_PI2
83    /*                                                                       */     *
84    /* @description:                                                         */     * @description:
85    /*    The angle pi/2 expressed in @FT_Angle units.                       */     *   The angle pi/2 expressed in @FT_Angle units.
86    /*                                                                       */     *
87       */
88  #define FT_ANGLE_PI2  ( FT_ANGLE_PI / 2 )  #define FT_ANGLE_PI2  ( FT_ANGLE_PI / 2 )
89    
90    
91    /*************************************************************************/    /*************************************************************************
92    /*                                                                       */     *
93    /* @macro:                                                               */     * @macro:
94    /*    FT_ANGLE_PI4                                                       */     *   FT_ANGLE_PI4
95    /*                                                                       */     *
96    /* @description:                                                         */     * @description:
97    /*    The angle pi/4 expressed in @FT_Angle units.                       */     *   The angle pi/4 expressed in @FT_Angle units.
98    /*                                                                       */     *
99       */
100  #define FT_ANGLE_PI4  ( FT_ANGLE_PI / 4 )  #define FT_ANGLE_PI4  ( FT_ANGLE_PI / 4 )
101    
102    
103    /*************************************************************************/    /*************************************************************************
104    /*                                                                       */     *
105    /* @function:                                                            */     * @function:
106    /*    FT_Sin                                                             */     *   FT_Sin
107    /*                                                                       */     *
108    /* @description:                                                         */     * @description:
109    /*    Return the sinus of a given angle in fixed point format.           */     *   Return the sinus of a given angle in fixed point format.
110    /*                                                                       */     *
111    /* @input:                                                               */     * @input:
112    /*    angle :: The input angle.                                          */     *   angle ::
113    /*                                                                       */     *     The input angle.
114    /* @return:                                                              */     *
115    /*    The sinus value.                                                   */     * @return:
116    /*                                                                       */     *   The sinus value.
117    /* @note:                                                                */     *
118    /*    If you need both the sinus and cosinus for a given angle, use the  */     * @note:
119    /*    function @FT_Vector_Unit.                                          */     *   If you need both the sinus and cosinus for a given angle, use the
120    /*                                                                       */     *   function @FT_Vector_Unit.
121       *
122       */
123    FT_EXPORT( FT_Fixed )    FT_EXPORT( FT_Fixed )
124    FT_Sin( FT_Angle  angle );    FT_Sin( FT_Angle  angle );
125    
126    
127    /*************************************************************************/    /*************************************************************************
128    /*                                                                       */     *
129    /* @function:                                                            */     * @function:
130    /*    FT_Cos                                                             */     *   FT_Cos
131    /*                                                                       */     *
132    /* @description:                                                         */     * @description:
133    /*    Return the cosinus of a given angle in fixed point format.         */     *   Return the cosinus of a given angle in fixed point format.
134    /*                                                                       */     *
135    /* @input:                                                               */     * @input:
136    /*    angle :: The input angle.                                          */     *   angle ::
137    /*                                                                       */     *     The input angle.
138    /* @return:                                                              */     *
139    /*    The cosinus value.                                                 */     * @return:
140    /*                                                                       */     *   The cosinus value.
141    /* @note:                                                                */     *
142    /*    If you need both the sinus and cosinus for a given angle, use the  */     * @note:
143    /*    function @FT_Vector_Unit.                                          */     *   If you need both the sinus and cosinus for a given angle, use the
144    /*                                                                       */     *   function @FT_Vector_Unit.
145       *
146       */
147    FT_EXPORT( FT_Fixed )    FT_EXPORT( FT_Fixed )
148    FT_Cos( FT_Angle  angle );    FT_Cos( FT_Angle  angle );
149    
150    
151    /*************************************************************************/    /*************************************************************************
152    /*                                                                       */     *
153    /* @function:                                                            */     * @function:
154    /*    FT_Tan                                                             */     *   FT_Tan
155    /*                                                                       */     *
156    /* @description:                                                         */     * @description:
157    /*    Return the tangent of a given angle in fixed point format.         */     *   Return the tangent of a given angle in fixed point format.
158    /*                                                                       */     *
159    /* @input:                                                               */     * @input:
160    /*    angle :: The input angle.                                          */     *   angle ::
161    /*                                                                       */     *     The input angle.
162    /* @return:                                                              */     *
163    /*    The tangent value.                                                 */     * @return:
164    /*                                                                       */     *   The tangent value.
165       *
166       */
167    FT_EXPORT( FT_Fixed )    FT_EXPORT( FT_Fixed )
168    FT_Tan( FT_Angle  angle );    FT_Tan( FT_Angle  angle );
169    
170    
171    /*************************************************************************/    /*************************************************************************
172    /*                                                                       */     *
173    /* @function:                                                            */     * @function:
174    /*    FT_Atan2                                                           */     *   FT_Atan2
175    /*                                                                       */     *
176    /* @description:                                                         */     * @description:
177    /*    Return the arc-tangent corresponding to a given vector (x,y) in    */     *   Return the arc-tangent corresponding to a given vector (x,y) in
178    /*    the 2d plane.                                                      */     *   the 2d plane.
179    /*                                                                       */     *
180    /* @input:                                                               */     * @input:
181    /*    x :: The horizontal vector coordinate.                             */     *   x ::
182    /*                                                                       */     *     The horizontal vector coordinate.
183    /*    y :: The vertical vector coordinate.                               */     *
184    /*                                                                       */     *   y ::
185    /* @return:                                                              */     *     The vertical vector coordinate.
186    /*    The arc-tangent value (i.e. angle).                                */     *
187    /*                                                                       */     * @return:
188       *   The arc-tangent value (i.e. angle).
189       *
190       */
191    FT_EXPORT( FT_Angle )    FT_EXPORT( FT_Angle )
192    FT_Atan2( FT_Fixed  x,    FT_Atan2( FT_Fixed  x,
193              FT_Fixed  y );              FT_Fixed  y );
194    
195    
196    /*************************************************************************/    /*************************************************************************
197    /*                                                                       */     *
198    /* @function:                                                            */     * @function:
199    /*    FT_Angle_Diff                                                      */     *   FT_Angle_Diff
200    /*                                                                       */     *
201    /* @description:                                                         */     * @description:
202    /*    Return the difference between two angles.  The result is always    */     *   Return the difference between two angles.  The result is always
203    /*    constrained to the ]-PI..PI] interval.                             */     *   constrained to the ]-PI..PI] interval.
204    /*                                                                       */     *
205    /* @input:                                                               */     * @input:
206    /*    angle1 :: First angle.                                             */     *   angle1 ::
207    /*                                                                       */     *     First angle.
208    /*    angle2 :: Second angle.                                            */     *
209    /*                                                                       */     *   angle2 ::
210    /* @return:                                                              */     *     Second angle.
211    /*    Contrainted value of `value2-value1'.                              */     *
212    /*                                                                       */     * @return:
213       *   Contrainted value of `value2-value1'.
214       *
215       */
216    FT_EXPORT( FT_Angle )    FT_EXPORT( FT_Angle )
217    FT_Angle_Diff( FT_Angle  angle1,    FT_Angle_Diff( FT_Angle  angle1,
218                   FT_Angle  angle2 );                   FT_Angle  angle2 );
219    
220    
221    /*************************************************************************/    /*************************************************************************
222    /*                                                                       */     *
223    /* @function:                                                            */     * @function:
224    /*    FT_Vector_Unit                                                     */     *   FT_Vector_Unit
225    /*                                                                       */     *
226    /* @description:                                                         */     * @description:
227    /*    Return the unit vector corresponding to a given angle.  After the  */     *   Return the unit vector corresponding to a given angle.  After the
228    /*    call, the value of `vec.x' will be `sin(angle)', and the value of  */     *   call, the value of `vec.x' will be `sin(angle)', and the value of
229    /*    `vec.y' will be `cos(angle)'.                                      */     *   `vec.y' will be `cos(angle)'.
230    /*                                                                       */     *
231    /*    This function is useful to retrieve both the sinus and cosinus of  */     *   This function is useful to retrieve both the sinus and cosinus of a
232    /*    a given angle quickly.                                             */     *   given angle quickly.
233    /*                                                                       */     *
234    /* @output:                                                              */     * @output:
235    /*    vec   :: The address of target vector.                             */     *   vec ::
236    /*                                                                       */     *     The address of target vector.
237    /* @input:                                                               */     *
238    /*    angle :: The address of angle.                                     */     * @input:
239    /*                                                                       */     *   angle ::
240       *     The address of angle.
241       *
242       */
243    FT_EXPORT( void )    FT_EXPORT( void )
244    FT_Vector_Unit( FT_Vector*  vec,    FT_Vector_Unit( FT_Vector*  vec,
245                    FT_Angle    angle );                    FT_Angle    angle );
246    
247    
248    /*************************************************************************/    /*************************************************************************
249    /*                                                                       */     *
250    /* @function:                                                            */     * @function:
251    /*    FT_Vector_Rotate                                                   */     *   FT_Vector_Rotate
252    /*                                                                       */     *
253    /* @description:                                                         */     * @description:
254    /*    Rotate a vector by a given angle.                                  */     *   Rotate a vector by a given angle.
255    /*                                                                       */     *
256    /* @inout:                                                               */     * @inout:
257    /*    vec   :: The address of target vector.                             */     *   vec ::
258    /*                                                                       */     *     The address of target vector.
259    /* @input:                                                               */     *
260    /*    angle :: The address of angle.                                     */     * @input:
261    /*                                                                       */     *   angle ::
262       *     The address of angle.
263       *
264       */
265    FT_EXPORT( void )    FT_EXPORT( void )
266    FT_Vector_Rotate( FT_Vector*  vec,    FT_Vector_Rotate( FT_Vector*  vec,
267                      FT_Angle    angle );                      FT_Angle    angle );
268    
269    
270    /*************************************************************************/    /*************************************************************************
271    /*                                                                       */     *
272    /* @function:                                                            */     * @function:
273    /*   FT_Vector_Length                                                    */     *   FT_Vector_Length
274    /*                                                                       */     *
275    /* @description:                                                         */     * @description:
276    /*   Return the length of a given vector.                                */     *   Return the length of a given vector.
277    /*                                                                       */     *
278    /* @input:                                                               */     * @input:
279    /*   vec :: The address of target vector.                                */     *   vec ::
280    /*                                                                       */     *     The address of target vector.
281    /* @return:                                                              */     *
282    /*   The vector length, expressed in the same units that the original    */     * @return:
283    /*   vector coordinates.                                                 */     *   The vector length, expressed in the same units that the original
284    /*                                                                       */     *   vector coordinates.
285       *
286       */
287    FT_EXPORT( FT_Fixed )    FT_EXPORT( FT_Fixed )
288    FT_Vector_Length( FT_Vector*  vec );    FT_Vector_Length( FT_Vector*  vec );
289    
290    
291    /*************************************************************************/    /*************************************************************************
292    /*                                                                       */     *
293    /* @function:                                                            */     * @function:
294    /*    FT_Vector_Polarize                                                 */     *   FT_Vector_Polarize
295    /*                                                                       */     *
296    /* @description:                                                         */     * @description:
297    /*    Compute both the length and angle of a given vector.               */     *   Compute both the length and angle of a given vector.
298    /*                                                                       */     *
299    /* @input:                                                               */     * @input:
300    /*    vec    :: The address of source vector.                            */     *   vec ::
301    /*                                                                       */     *     The address of source vector.
302    /* @output:                                                              */     *
303    /*    length :: The vector length.                                       */     * @output:
304    /*    angle  :: The vector angle.                                        */     *   length ::
305    /*                                                                       */     *     The vector length.
306       *
307       *   angle ::
308       *     The vector angle.
309       *
310       */
311    FT_EXPORT( void )    FT_EXPORT( void )
312    FT_Vector_Polarize( FT_Vector*  vec,    FT_Vector_Polarize( FT_Vector*  vec,
313                        FT_Fixed   *length,                        FT_Fixed   *length,
314                        FT_Angle   *angle );                        FT_Angle   *angle );
315    
316    
317    /*************************************************************************/    /*************************************************************************
318    /*                                                                       */     *
319    /* @function:                                                            */     * @function:
320    /*    FT_Vector_From_Polar                                               */     *   FT_Vector_From_Polar
321    /*                                                                       */     *
322    /* @description:                                                         */     * @description:
323    /*    Compute vector coordinates from a length and angle.                */     *   Compute vector coordinates from a length and angle.
324    /*                                                                       */     *
325    /* @output:                                                              */     * @output:
326    /*    vec    :: The address of source vector.                            */     *   vec ::
327    /*                                                                       */     *     The address of source vector.
328    /* @input:                                                               */     *
329    /*    length :: The vector length.                                       */     * @input:
330    /*    angle  :: The vector angle.                                        */     *   length ::
331    /*                                                                       */     *     The vector length.
332       *
333       *   angle ::
334       *     The vector angle.
335       *
336       */
337    FT_EXPORT( void )    FT_EXPORT( void )
338    FT_Vector_From_Polar( FT_Vector*  vec,    FT_Vector_From_Polar( FT_Vector*  vec,
339                          FT_Fixed    length,                          FT_Fixed    length,

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26