#include <qstring.h>
#include <math.h>
#include "value.h"
#include "runtime.h"
Go to the source code of this file.
Classes | |
class | NetPoint |
class | Triangle |
Functions | |
double | min (double a, double b) |
double | dist (double, double, double, double) |
int | sign (double b) |
void | pos (double x1, double y1, double x2, double y2, double pct, double &x, double &y) |
QString | type_name (NetPoint) |
int | side (double a, double b, double x1, double y1, double x2, double y2) |
int * | getRing (double *x, double *y, int &count, bool *enabled, int points) |
void | newpoint (double ax, double ay, double bx, double by, double cx, double cy, double ix, double iy, double &tx, double &ty) |
bool | Q1 (double a) |
bool | Q3 (double a) |
double | calc_step (double x1, double y1, double x2, double y2) |
|
Definition at line 1172 of file morph.cpp. References dist(). 01173 { 01174 double d = dist(x1,y1,x2,y2); 01175 if (d==0) return 1; 01176 return 0.5/d; 01177 }
|
|
return the distance between the two points Definition at line 2 of file aux.cpp. 00003 { 00004 double x = x1-x0; 00005 double y = y1-y0; 00006 x*=x; 00007 y*=y; 00008 double d = x+y; 00009 d = (double) (sqrt(d) + 1); 00010 return d; 00011 }
|
|
Definition at line 817 of file morph.cpp. 00818 { 00819 int * result = new int[points]; 00820 count = 0; 00821 double largestx = -1; 00822 int idx = -1; 00823 for(int i = 0 ; i < points; i++) 00824 if (enabled[i] && x[i]>largestx) 00825 largestx=x[idx=i]; 00826 if (idx==-1) 00827 { 00828 printf("No points left\n"); 00829 return NULL; 00830 } 00831 result[count++]=idx; 00832 printf("pointidx %d\n",idx); 00833 00834 while(true) 00835 { 00836 bool added_something = false; 00837 for(int i = 0 ; i < points; i++) 00838 { 00839 if (!enabled[i]) continue; 00840 bool already_in_result = false; 00841 for(int k = 0 ; k < count ; k++) 00842 if (result[k]==i) already_in_result = true; 00843 if (already_in_result) continue; 00844 int j; 00845 for(j = 0 ; j < points; j++) 00846 { 00847 if (!enabled[j]) continue; 00848 if (j==result[count-1]) continue; 00849 if (j==i) continue; 00850 if (side(x[j], 00851 y[j], 00852 x[result[count-1]], 00853 y[result[count-1]], 00854 x[i], 00855 y[i])>0) break; 00856 } 00857 if (j==points) 00858 { 00859 printf("pointidx %d\n",i); 00860 added_something = true; 00861 result[count++]=i; 00862 assert(count < 1000); 00863 break; 00864 } 00865 } 00866 if (!added_something) return result; 00867 } 00868 }
|
|
Definition at line 4 of file morph.cpp. Referenced by Runtime::add(), min(), and Runtime::straighten().
|
|
Definition at line 878 of file morph.cpp. References dist(). 00880 { 00881 ax-=bx; 00882 ay-=by; 00883 cx-=bx; 00884 cy-=by; 00885 tx = ax + cx; 00886 ty = ay + cy; 00887 double d = dist(0,0,tx,ty); 00888 tx /= d; 00889 ty /= d; 00890 tx *= 40; 00891 ty *= 40; 00892 tx = ix - tx; 00893 ty = iy - ty; 00894 }
|
|
Definition at line 19 of file morph.cpp. 00020 { 00021 double dx = x2-x1; 00022 double dy = y2-y1; 00023 x = x1 + dx*pct; 00024 y = y1 + dy*pct; 00025 }
|
|
Definition at line 1156 of file morph.cpp. 01157 { 01158 while (a<0) a+=2*M_PI; 01159 while (a>=2*M_PI) a-=2*M_PI; 01160 bool r = a<=M_PI/2; 01161 return r; 01162 }
|
|
Definition at line 1164 of file morph.cpp. 01165 { 01166 while (a<0) a+=2*M_PI; 01167 while (a>=2*M_PI) a-=2*M_PI; 01168 bool r = a>=3*M_PI/2; 01169 return r; 01170 }
|
|
Definition at line 598 of file morph.cpp. References sign(). 00599 { 00600 return sign( (a-x1)*(y2-y1) - (b-y1)*(x2-x1) ); 00601 }
|
|
Definition at line 12 of file morph.cpp. Referenced by NetPoint::move(), and side().
|
|
Definition at line 461 of file morph.cpp.
|