diff --git a/.cproject b/.cproject deleted file mode 100644 index a9b81cba15fb871f873ef8acea4b93cc85bf79d9..0000000000000000000000000000000000000000 --- a/.cproject +++ /dev/null @@ -1,212 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage"> - - <storageModule moduleId="org.eclipse.cdt.core.settings"> - - <cconfiguration id="cdt.managedbuild.config.gnu.mingw.exe.debug.913981392"> - - <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.debug.913981392" moduleId="org.eclipse.cdt.core.settings" name="Debug"> - - <externalSettings/> - - <extensions> - - <extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/> - - <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - - <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - - <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - - </extensions> - - </storageModule> - - <storageModule moduleId="cdtBuildSystem" version="4.0.0"> - - <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.mingw.exe.debug.913981392" name="Debug" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=" parent="cdt.managedbuild.config.gnu.mingw.exe.debug"> - - <folderInfo id="cdt.managedbuild.config.gnu.mingw.exe.debug.913981392." name="/" resourcePath=""> - - <toolChain id="cdt.managedbuild.toolchain.gnu.mingw.exe.debug.367600360" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.exe.debug"> - - <targetPlatform id="cdt.managedbuild.target.gnu.platform.mingw.exe.debug.1719566759" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.mingw.exe.debug"/> - - <builder buildPath="${workspace_loc:/constant-workspace-algorithms-c}/Debug" id="cdt.managedbuild.tool.gnu.builder.mingw.base.1519590842" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" superClass="cdt.managedbuild.tool.gnu.builder.mingw.base"/> - - <tool id="cdt.managedbuild.tool.gnu.assembler.mingw.exe.debug.1137597037" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.exe.debug"> - - <inputType id="cdt.managedbuild.tool.gnu.assembler.input.2016104599" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> - - </tool> - - <tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.335209845" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/> - - <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug.641152686" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug"> - - <option id="gnu.cpp.compiler.mingw.exe.debug.option.optimization.level.1439991956" name="Optimization Level" superClass="gnu.cpp.compiler.mingw.exe.debug.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/> - - <option defaultValue="gnu.cpp.compiler.debugging.level.max" id="gnu.cpp.compiler.mingw.exe.debug.option.debugging.level.2053770429" name="Debug Level" superClass="gnu.cpp.compiler.mingw.exe.debug.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/> - - </tool> - - <tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.935640154" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug"> - - <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.mingw.exe.debug.option.optimization.level.1319064045" name="Optimization Level" superClass="gnu.c.compiler.mingw.exe.debug.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/> - - <option defaultValue="gnu.c.debugging.level.max" id="gnu.c.compiler.mingw.exe.debug.option.debugging.level.1027476309" name="Debug Level" superClass="gnu.c.compiler.mingw.exe.debug.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/> - - <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1918022612" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> - - </tool> - - <tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.debug.152945588" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.debug"> - - <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.408418117" superClass="cdt.managedbuild.tool.gnu.c.linker.input"> - - <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> - - <additionalInput kind="additionalinput" paths="$(LIBS)"/> - - </inputType> - - </tool> - - <tool id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.debug.160074272" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.debug"/> - - </toolChain> - - </folderInfo> - - </configuration> - - </storageModule> - - <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> - - </cconfiguration> - - <cconfiguration id="cdt.managedbuild.config.gnu.mingw.exe.release.1419934805"> - - <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.release.1419934805" moduleId="org.eclipse.cdt.core.settings" name="Release"> - - <externalSettings/> - - <extensions> - - <extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/> - - <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - - <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - - <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - - </extensions> - - </storageModule> - - <storageModule moduleId="cdtBuildSystem" version="4.0.0"> - - <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.mingw.exe.release.1419934805" name="Release" optionalBuildProperties="" parent="cdt.managedbuild.config.gnu.mingw.exe.release"> - - <folderInfo id="cdt.managedbuild.config.gnu.mingw.exe.release.1419934805." name="/" resourcePath=""> - - <toolChain id="cdt.managedbuild.toolchain.gnu.mingw.exe.release.1251512435" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.exe.release"> - - <targetPlatform id="cdt.managedbuild.target.gnu.platform.mingw.exe.release.1185331731" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.mingw.exe.release"/> - - <builder buildPath="${workspace_loc:/constant-workspace-algorithms-c}/Release" id="cdt.managedbuild.tool.gnu.builder.mingw.base.1562345432" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" superClass="cdt.managedbuild.tool.gnu.builder.mingw.base"/> - - <tool id="cdt.managedbuild.tool.gnu.assembler.mingw.exe.release.80643772" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.exe.release"> - - <inputType id="cdt.managedbuild.tool.gnu.assembler.input.415193855" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> - - </tool> - - <tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.97188924" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/> - - <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.release.1624378783" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.release"> - - <option id="gnu.cpp.compiler.mingw.exe.release.option.optimization.level.1807152657" name="Optimization Level" superClass="gnu.cpp.compiler.mingw.exe.release.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/> - - <option defaultValue="gnu.cpp.compiler.debugging.level.none" id="gnu.cpp.compiler.mingw.exe.release.option.debugging.level.39620204" name="Debug Level" superClass="gnu.cpp.compiler.mingw.exe.release.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/> - - </tool> - - <tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.1636892329" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release"> - - <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.mingw.exe.release.option.optimization.level.860990239" name="Optimization Level" superClass="gnu.c.compiler.mingw.exe.release.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/> - - <option defaultValue="gnu.c.debugging.level.none" id="gnu.c.compiler.mingw.exe.release.option.debugging.level.148760879" name="Debug Level" superClass="gnu.c.compiler.mingw.exe.release.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/> - - <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1259866239" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> - - </tool> - - <tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.release.1309107452" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.release"> - - <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.65027192" superClass="cdt.managedbuild.tool.gnu.c.linker.input"> - - <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> - - <additionalInput kind="additionalinput" paths="$(LIBS)"/> - - </inputType> - - </tool> - - <tool id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.release.2099402939" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.release"/> - - </toolChain> - - </folderInfo> - - <sourceEntries> - - <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/> - - </sourceEntries> - - </configuration> - - </storageModule> - - <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> - - </cconfiguration> - - </storageModule> - - <storageModule moduleId="cdtBuildSystem" version="4.0.0"> - - <project id="constant-workspace-algorithms-c.cdt.managedbuild.target.gnu.mingw.exe.233459410" name="Executable" projectType="cdt.managedbuild.target.gnu.mingw.exe"/> - - </storageModule> - - <storageModule moduleId="scannerConfiguration"> - - <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> - - <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.913981392;cdt.managedbuild.config.gnu.mingw.exe.debug.913981392.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.935640154;cdt.managedbuild.tool.gnu.c.compiler.input.1918022612"> - - <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> - - </scannerConfigBuildInfo> - - <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.release.1419934805;cdt.managedbuild.config.gnu.mingw.exe.release.1419934805.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.1636892329;cdt.managedbuild.tool.gnu.c.compiler.input.1259866239"> - - <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> - - </scannerConfigBuildInfo> - - </storageModule> - - <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> - - <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/> - - <storageModule moduleId="refreshScope"/> - -</cproject> diff --git a/.gitignore b/.gitignore index b5c9fbc91dbd05b91dee35875c1ade5cff96fb13..303677732b4237bc3fc80436f1a23d6fd4e31af7 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,7 @@ /html/ /delaunay.html /voronoi.html +/gmon.out +/perf.data +/perf.data.old +/.cproject diff --git a/.settings/.gitignore b/.settings/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..d81d4c414cc298fa21635d0b27c126c1b0a7ff3a --- /dev/null +++ b/.settings/.gitignore @@ -0,0 +1 @@ +/language.settings.xml diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml deleted file mode 100644 index c990946f19752387b15cd1dcd505a5b723fa8e2e..0000000000000000000000000000000000000000 --- a/.settings/language.settings.xml +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<project> - - <configuration id="cdt.managedbuild.config.gnu.mingw.exe.debug.913981392" name="Debug"> - - <extension point="org.eclipse.cdt.core.LanguageSettingsProvider"> - - <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> - - <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> - - <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> - - <provider class="org.eclipse.cdt.managedbuilder.internal.language.settings.providers.GCCBuiltinSpecsDetectorMinGW" console="false" env-hash="616115681376380407" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetectorMinGW" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings MinGW" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true"> - - <language-scope id="org.eclipse.cdt.core.gcc"/> - - <language-scope id="org.eclipse.cdt.core.g++"/> - - </provider> - - </extension> - - </configuration> - - <configuration id="cdt.managedbuild.config.gnu.mingw.exe.release.1419934805" name="Release"> - - <extension point="org.eclipse.cdt.core.LanguageSettingsProvider"> - - <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> - - <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> - - <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> - - <provider class="org.eclipse.cdt.managedbuilder.internal.language.settings.providers.GCCBuiltinSpecsDetectorMinGW" console="false" env-hash="616115681376380407" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetectorMinGW" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings MinGW" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true"> - - <language-scope id="org.eclipse.cdt.core.gcc"/> - - <language-scope id="org.eclipse.cdt.core.g++"/> - - </provider> - - </extension> - - </configuration> - -</project> diff --git a/src/.gitignore b/src/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..322e5897a4e89f67dc0bedcc00e3afda97a2878b --- /dev/null +++ b/src/.gitignore @@ -0,0 +1,4 @@ +/xyz +/delaunay.html +/test +/perf.data diff --git a/src/delaunay.c b/src/delaunay.c index 444d850ce5b793ab743d6a3848fff80b25b70ac0..c2883b32ba53e0fbeeab801d61936fcbd6f0ecac 100644 --- a/src/delaunay.c +++ b/src/delaunay.c @@ -13,18 +13,6 @@ -/* Draw a full 2*pi period of the sine */ -void create_image ( void ) -{ - /* Run the width of the image */ - for ( int x=0; x<W; x++ ) - { - /* Scale the wave to the image height */ - int y = (H/2) + - (H/2) * sin ( 2 * 3.141593 * (x/(double)W) ); - r[y][x] = 255, g[y][x] = 255, b[y][x] = 255; - } -} int comparePointsByX (const void * a, const void * b) { vertex* pointA = (vertex*) a; @@ -66,11 +54,12 @@ int drawLine(vertex* p) { /* Write the ppm-formatted file */ int reportTriangle(vertex* p, int size, FILE *out) { - for(int i = 0; i < size; i++) { + for(int i = 0; i < 3; i++) { printVertex(p[i]); printf("; "); } printf("\n"); + qsort (p, size, sizeof(*p), comparePointsByX); char *color = "255,0,0"; @@ -167,13 +156,13 @@ void circleThrough3Points(vertex p1, vertex p2, vertex p3, double* circle) { circle circle_vvv(vertex v1, vertex v2, vertex v3) { circle c; - float bx = v1.x; float by = v1.y; - float cx = v2.x; float cy = v2.y; - float dx = v3.x; float dy = v3.y; - float temp = cx*cx+cy*cy; - float bc = (bx*bx + by*by - temp)/2.0; - float cd = (temp - dx*dx - dy*dy)/2.0; - float det = (bx-cx)*(cy-dy)-(cx-dx)*(by-cy); + double bx = v1.x; double by = v1.y; + double cx = v2.x; double cy = v2.y; + double dx = v3.x; double dy = v3.y; + double temp = cx*cx+cy*cy; + double bc = (bx*bx + by*by - temp)/2.0; + double cd = (temp - dx*dx - dy*dy)/2.0; + double det = (bx-cx)*(cy-dy)-(cx-dx)*(by-cy); if (fabs(det) < 1.0e-6) { c.center.x = c.center.y = 1.0; return c; @@ -182,10 +171,30 @@ circle circle_vvv(vertex v1, vertex v2, vertex v3) c.center.x = (bc*(cy-dy)-cd*(by-cy))*det; c.center.y = ((bx-cx)*cd-(cx-dx)*bc)*det; cx = c.center.x; cy = c.center.y; - c.radius = sqrt((cx-bx)*(cx-bx)+(cy-by)*(cy-by)); + c.radius = distance(v1, c.center); return c; } + +double det2(double a, double b, double c, double d) { + return a*d-b*c; +} + +circle circleFrom3Points(vertex v1, vertex v2, vertex v3) { + circle c; + double ax = 2*(v1.x-v2.x); + double bx = 2*(v1.y-v2.y); + double cx = v1.x*v1.x - v2.x*v2.x + v1.y*v1.y - v2.y*v2.y; + double ay = 2*(v1.x-v3.x); + double by = 2*(v1.y-v3.y); + double cy = v1.x*v1.x - v3.x*v3.x + v1.y*v1.y - v3.y*v3.y; + double det = det2(ax, bx, ay, by); + c.center.x = det2(cx, bx, cy, by)/det; + c.center.y = det2(ax, cx, ay, cy)/det; + c.radius = sqrt((v1.x-c.center.x)*(v1.x-c.center.x)+(v1.y-c.center.y)*(v1.y-c.center.y)); + return c; +} + /*void reportTriangle(struct Triangle triangle) { printf("%f, %f - %f, %f - %f, %f\n", triangle.a.x, triangle.a.y, triangle.b.x, triangle.b.y, triangle.c.x, triangle.c.y); }*/ @@ -333,12 +342,12 @@ void clockwiseNextDelaunayEdge(int *p, int *q, int *r, vertex *S, int *size, int //calc circle *right = 2; *r = i; - c = circle_vvv(S[*p], S[*q], S[*r]); + c = circleFrom3Points(S[*p], S[*q], S[*r]); } else { //if inside circle: calc new circle, else: do nothing if(distance(c.center, S[i]) < c.radius) { *r = i; - c = circle_vvv(S[*p], S[*q], S[*r]); + c = circleFrom3Points(S[*p], S[*q], S[*r]); } } } else if(*right < 2) { @@ -358,6 +367,12 @@ void clockwiseNextDelaunayEdge(int *p, int *q, int *r, vertex *S, int *size, int } } } + printf("right: %d\n", *right); + if(*right == 1) { + printf("maxAngle: %f\n", maxAngle); + } else if(*right == 2) { + printf("circle x: %f, y: %f, radius: %f\n", c.center.x, c.center.y, c.radius); + } //if you want to draw the circle comment this line out //svgDrawCircle(c, out); } @@ -371,15 +386,15 @@ void delaunayCws(vertex* S, int size, FILE *out, int draw) { int j = firstDelaunayEdgeIncidentTo(i, S, size); // Find the point p[j] e S that is nearest to p[i] //j0 stores all values j had already have TODO better solution - //int jAlreadyUsed[size]; - //int numberOfJ = 0; + int jAlreadyUsed[size]; + int numberOfJ = 0; int j0 = j; //int j1 = j; do { //TODO eventuell nur k zurueckgeben (i haben wir ja schon) int k; int isTriangle; - //jAlreadyUsed[numberOfJ++] = j; + jAlreadyUsed[numberOfJ++] = j; clockwiseNextDelaunayEdge(&i, &j, &k, S, &size, &isTriangle, out); //bricht ab, wenn sich k und j abwechseln //TODO die abwechslungszyklen koennen auch groesser sein @@ -390,11 +405,13 @@ void delaunayCws(vertex* S, int size, FILE *out, int draw) { if(i < j && i < k) { if(isTriangle == 2){ vertex tri[3] = {S[i], S[j], S[k]}; + if(draw){ reportTriangle(tri, 3, out); } } } + //printf("j = %d, k = %d\n", j, k); //printf("jAlreadyUsed = "); /*for(int a = 0; a < numberOfJ; a++) { @@ -403,6 +420,10 @@ void delaunayCws(vertex* S, int size, FILE *out, int draw) { //printf("\n"); //j1 = j; j = k; + if(arrayContains(jAlreadyUsed, numberOfJ, j) && j != j0) { + printf("ERROR\n"); + return; + } } while(/*!arrayContains(jAlreadyUsed, numberOfJ, j)*/ j != j0); } //return delaunayTriangles; diff --git a/src/main.c b/src/main.c index f7e2d4731b2f6560e00d81b9aa624bb58ce42ce9..deee0bcbaa440c22797ed2d1057473ec4891f780 100644 --- a/src/main.c +++ b/src/main.c @@ -12,8 +12,8 @@ int main(int argc, char *argv[]) { //input: 1. function 0=cws_delaunay 2. # of points, 3. draw? 4. # of executions //create_image(); //write_ppm ( "sine.ppm" ); - int numberOfPoints = 24; - int function = 1; + int numberOfPoints = 15000; + int function = 0; int draw = 1; int executions = 1; if(argc > 0) { @@ -29,9 +29,12 @@ int main(int argc, char *argv[]) { //puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */ //printf("%d\n", RAND_MAX); vertex points[numberOfPoints]; + printf("%lu\n", sizeof(points)); generatePoints(points, numberOfPoints); //drawPoints(points, numberOfPoints); + clock_t begin = clock(); + switch(function){ case 0: for(int i = 0; i < executions; i++) { @@ -66,6 +69,10 @@ int main(int argc, char *argv[]) { break; } + clock_t end = clock(); + double time_spent = (double)(end - begin) / CLOCKS_PER_SEC; + + printf("Time spent: %f\n", time_spent); //readFile("test.txt", "r"); return EXIT_SUCCESS; } diff --git a/src/voronoi.c b/src/voronoi.c index bd5f902091f7365a25e5c8fde3e1eac9ca895202..ca9685e393e5be95b7f6e68815c115c93620330b 100644 --- a/src/voronoi.c +++ b/src/voronoi.c @@ -63,52 +63,24 @@ vertex findBorderVertex(vertex a, vertex b) { double y = center.y + m * dir.y; if(m > 0 && (y > 0 && y < 1)) { ret = (vertex){0, y}; - printf("%f = (0 - %f)/%f\n", m, center.x, dir.x); - printf("y = %f = %f + %f * %f\n", y, center.y, m, dir.y); - printVertex(a); - printf("\n"); - printVertex(b); - printf("\n"); - printVertex(ret); - printf("\n"); return ret; } m = (1 - center.x)/dir.x; y = center.y + m * dir.y; if(m > 0 && (y > 0 && y < 1)) { ret = (vertex){1, y}; - printf("%f = (1 - %f)/%f\n", m, center.x, dir.x); - printf("y = %f = %f + %f * %f\n", y, center.y, m, dir.y); - printVertex(a); - printf("\n"); - printVertex(b); - printf("\n"); - printVertex(ret); - printf("\n"); return ret; } m = (0 - center.y)/dir.y; double x = center.x + m * dir.x; if(m > 0 && (x > 0 && x < 1)) { ret = (vertex){x, 0}; - printVertex(a); - printf("\n"); - printVertex(b); - printf("\n"); - printVertex(ret); - printf("\n"); return ret; } m = (1 - center.y)/dir.y; x = center.x + m * dir.x; if(m > 0 && (x > 0 && x < 1)) { ret = (vertex){x, 1}; - printVertex(a); - printf("\n"); - printVertex(b); - printf("\n"); - printVertex(ret); - printf("\n"); return ret; } return ret; @@ -140,10 +112,16 @@ void voronoiCws(vertex* S, int size, FILE *out, int draw) { firstV = currentV; } else { if(!outOfBorder(currentV)) { - reportEdge((line){currentV, lastV}, out); + if(draw) { + reportEdge((line){currentV, lastV}, out); + + } } if(k == j0) { - reportEdge((line){currentV, firstV}, out); + if(draw) { + reportEdge((line){currentV, firstV}, out); + + } } } } else if(isTriangle == 1) { @@ -155,7 +133,10 @@ void voronoiCws(vertex* S, int size, FILE *out, int draw) { firstV = currentV; } else { if(!outOfBorder(lastV)) { - reportEdge((line){currentV, lastV}, out); + if(draw) { + reportEdge((line){currentV, lastV}, out); + + } } } currentV = findBorderVertex(S[i], S[k]);