Skip to content
Snippets Groups Projects
Commit 2dba2226 authored by mika's avatar mika
Browse files

fixed loop bug (TODO code cleanup)

parent 0e982e1a
Branches
No related tags found
No related merge requests found
<?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>
......@@ -2,3 +2,7 @@
/html/
/delaunay.html
/voronoi.html
/gmon.out
/perf.data
/perf.data.old
/.cproject
/language.settings.xml
<?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 &quot;${INPUTS}&quot;" 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 &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
</configuration>
</project>
/xyz
/delaunay.html
/test
/perf.data
......@@ -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;
......
......@@ -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;
}
......@@ -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]);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment