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 |
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 + |
final int x = ( boxSize + margin - sideLength ) / 2; |
||
final int y = Math.round(( boxSize + |
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); |
||