Koch curve: Difference between revisions

Content added Content deleted
m (Added language identifier.)
m (Minor changes to code.)
Line 1,179: Line 1,179:
=={{header|Java}}==
=={{header|Java}}==
<syntaxhighlight lang="java">
<syntaxhighlight lang="java">

import java.awt.Point;
import java.awt.Point;
import java.io.IOException;
import java.io.IOException;
Line 1,196: Line 1,197:
String text = kochCurveText(points, IMAGE_SIZE);
String text = kochCurveText(points, IMAGE_SIZE);
Files.write(Paths.get("koch.svg"), text.getBytes());
Files.write(Paths.get("C:/Users/psnow/Desktop/koch.svg"), text.getBytes());
}
}
private static List<Point> initialEquilateralTriangle() {
private static List<Point> initialEquilateralTriangle() {
final int boxSize = IMAGE_SIZE - MARGIN;
final int margin = 50;
final int boxSize = IMAGE_SIZE - margin;
final int sideLength = Math.round(boxSize * SIN_60_DEGREES);
final int sideLength = Math.round(boxSize * SIN_60_DEGREES);
final int x = ( boxSize + MARGIN - sideLength ) / 2;
final int x = ( boxSize + margin - sideLength ) / 2;
final int y = Math.round(( boxSize + MARGIN ) / 2 - sideLength * SIN_60_DEGREES / 3);
final int y = Math.round(( boxSize + margin ) / 2 - sideLength * SIN_60_DEGREES / 3);
List<Point> points = Arrays.asList(
List<Point> points = Arrays.asList(
Line 1,219: Line 1,221:
for ( int i = 0; i < aPoints.size() - 1; i++ ) {
for ( int i = 0; i < aPoints.size() - 1; i++ ) {
int x0 = aPoints.get(i).x;
final int x0 = aPoints.get(i).x;
int y0 = aPoints.get(i).y;
final int y0 = aPoints.get(i).y;
int x1 = aPoints.get(i + 1).x;
final int x1 = aPoints.get(i + 1).x;
int y1 = aPoints.get(i + 1).y;
final int y1 = aPoints.get(i + 1).y;
int dy = y1 - y0;
final int dy = y1 - y0;
int dx = x1 - x0;
final int dx = x1 - x0;
result.add(aPoints.get(i));
result.add(aPoints.get(i));
Line 1,244: Line 1,246:
text.append("<polygon points='");
text.append("<polygon points='");
for ( int i = 0; i < aPoints.size(); i++ ) {
for ( int i = 0; i < aPoints.size(); i++ ) {
text.append(aPoints.get(i).x + "," + aPoints.get(i).y + " ");
text.append(aPoints.get(i).x + ", " + aPoints.get(i).y + " ");
}
}
text.append("' style='fill:pink;stroke:black;stroke-width:2'/>\n</svg>\n");
text.append("' style='fill:pink;stroke:black;stroke-width:2'/>\n</svg>\n");
Line 1,251: Line 1,253:
}
}
private static final int IMAGE_SIZE = 700;
private static final int IMAGE_SIZE = 700;
private static final int MARGIN = 50;
private static final float SIN_60_DEGREES = (float) Math.sin(Math.PI / 3.0);
private static final float SIN_60_DEGREES = (float) Math.sin(Math.PI / 3.0);