00001 /*
00002 ccp4_unitcell.h: headers for C library for ccp4_unitcell.c
00003 Copyright (C) 2001 CCLRC, Martyn Winn
00004
00005 This library is free software and is distributed under the terms and
00006 conditions of the CCP4 licence agreement as `Part 0' (Annex 2)
00007 software, which is version 2.1 of the GNU Lesser General Public
00008 Licence (LGPL) with the following additional clause:
00009
00010 `You may also combine or link a "work that uses the Library" to
00011 produce a work containing portions of the Library, and distribute
00012 that work under terms of your choice, provided that you give
00013 prominent notice with each copy of the work that the specified
00014 version of the Library is used in it, and that you include or
00015 provide public access to the complete corresponding
00016 machine-readable source code for the Library including whatever
00017 changes were used in the work. (i.e. If you make changes to the
00018 Library you must distribute those, but you do not need to
00019 distribute source or object code to those portions of the work
00020 not covered by this licence.)'
00021
00022 Note that this clause grants an additional right and does not impose
00023 any additional restriction, and so does not affect compatibility
00024 with the GNU General Public Licence (GPL). If you wish to negotiate
00025 other terms, please contact the maintainer.
00026
00027 You can redistribute it and/or modify the library under the terms of
00028 the GNU Lesser General Public License as published by the Free Software
00029 Foundation; either version 2.1 of the License, or (at your option) any
00030 later version.
00031
00032 This library is distributed in the hope that it will be useful, but
00033 WITHOUT ANY WARRANTY; without even the implied warranty of
00034 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00035 Lesser General Public License for more details.
00036
00037 You should have received a copy of the CCP4 licence and/or GNU
00038 Lesser General Public License along with this library; if not, write
00039 to the CCP4 Secretary, Daresbury Laboratory, Warrington WA4 4AD, UK.
00040 The GNU Lesser General Public can also be obtained by writing to the
00041 Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
00042 MA 02111-1307 USA
00043 */
00044
00050 #ifndef __CCP4_UNITCELL
00051 #define __CCP4_UNITCELL
00052
00053 #ifdef __cplusplus
00054 namespace CCP4uc {
00055 extern "C" {
00056 #endif
00057
00058 #include <math.h>
00059
00068 double ccp4uc_frac_orth_mat(const double cell[6], const int ncode,
00069 double ro[3][3], double rf[3][3]);
00070
00076 double ccp4uc_calc_rcell(const double cell[6], double rcell[6]);
00077
00086 void ccp4uc_orth_to_frac(const double rf[3][3], const double xo[3], double xf[3]);
00087
00094 void ccp4uc_frac_to_orth(const double ro[3][3], const double xf[3], double xo[3]);
00095
00102 void ccp4uc_orthu_to_fracu(const double rf[3][3], const double uo[6], double uf[6]);
00103
00110 void ccp4uc_fracu_to_orthu(const double ro[3][3], const double uf[6], double uo[6]);
00111
00116 double ccp4uc_calc_cell_volume(const double cell[6]);
00117
00124 int ccp4uc_cells_differ(const double cell1[6], const double cell2[6], const double tolerance);
00125
00131 int ccp4uc_is_rhombohedral(const float cell[6], const float tolerance);
00132
00138 int ccp4uc_is_hexagonal(const float cell[6], const float tolerance);
00139
00140 #ifdef __cplusplus
00141 } }
00142 #endif
00143
00144 #endif