Line data Source code
1 : /* File: geometry_point.inl; Copyright and License: see below */ 2 : 3 : #include "u8/u8_trace.h" 4 : #include "u8/u8_log.h" 5 : #include <assert.h> 6 : #include <math.h> 7 : 8 14 : static inline void geometry_point_init ( geometry_point_t *this_, double x, double y ) 9 : { 10 14 : (*this_).x = x; 11 14 : (*this_).y = y; 12 14 : } 13 : 14 2 : static inline geometry_point_t geometry_point_new ( double x, double y ) 15 : { 16 : geometry_point_t result; 17 2 : geometry_point_init( &result, x, y ); 18 2 : return result; 19 : } 20 : 21 : static inline void geometry_point_reinit ( geometry_point_t *this_, double x, double y ) 22 : { 23 : (*this_).x = x; 24 : (*this_).y = y; 25 : } 26 : 27 1 : static inline void geometry_point_copy ( geometry_point_t *this_, const geometry_point_t *original ) 28 : { 29 1 : assert( NULL != original ); 30 1 : (*this_) = (*original); 31 1 : } 32 : 33 1 : static inline void geometry_point_replace ( geometry_point_t *this_, const geometry_point_t *original ) 34 : { 35 1 : assert( NULL != original ); 36 1 : (*this_) = (*original); 37 1 : } 38 : 39 5 : static inline void geometry_point_destroy ( geometry_point_t *this_ ) 40 : { 41 5 : } 42 : 43 67 : static inline double geometry_point_get_x ( const geometry_point_t *this_ ) 44 : { 45 67 : return (*this_).x; 46 : } 47 : 48 68 : static inline double geometry_point_get_y ( const geometry_point_t *this_ ) 49 : { 50 68 : return (*this_).y; 51 : } 52 : 53 1 : static inline double geometry_point_calc_chess_distance ( const geometry_point_t *this_, const geometry_point_t *that ) 54 : { 55 1 : assert( NULL != that ); 56 1 : return ( fabs( (*this_).x - (*that).x ) + fabs( (*this_).y - (*that).y ) ); 57 : } 58 : 59 1 : static inline bool geometry_point_equals ( const geometry_point_t *this_, const geometry_point_t *that ) 60 : { 61 1 : assert( NULL != that ); 62 1 : return ( ( fabs( (*this_).x - (*that).x ) + fabs( (*this_).y - (*that).y ) ) < 0.000000001 ); 63 : } 64 : 65 5 : static inline void geometry_point_shift ( geometry_point_t *this_, double delta_x, double delta_y ) 66 : { 67 5 : (*this_).x += delta_x; 68 5 : (*this_).y += delta_y; 69 5 : } 70 : 71 1 : static inline void geometry_point_trace ( const geometry_point_t *this_ ) 72 : { 73 1 : U8_TRACE_INFO( "geometry_point_t" ); 74 1 : U8_TRACE_INFO_INT( "- x:", (*this_).x ); 75 1 : U8_TRACE_INFO_INT( "- y:", (*this_).y ); 76 1 : } 77 : 78 : 79 : /* 80 : Copyright 2019-2025 Andreas Warnke 81 : 82 : Licensed under the Apache License, Version 2.0 (the "License"); 83 : you may not use this file except in compliance with the License. 84 : You may obtain a copy of the License at 85 : 86 : http://www.apache.org/licenses/LICENSE-2.0 87 : 88 : Unless required by applicable law or agreed to in writing, software 89 : distributed under the License is distributed on an "AS IS" BASIS, 90 : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 91 : See the License for the specific language governing permissions and 92 : limitations under the License. 93 : */