Changes to PythagorasTree implementation, still not working

Changes to the implementation, is still not workin
This commit is contained in:
Jan Christian Grünhage 2015-02-10 18:13:13 +01:00
parent dfd1841e2f
commit f73687b6d6
8 changed files with 73 additions and 73 deletions

View file

@ -46,11 +46,11 @@
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="PythagorasTree.java" pinned="false" current-in-tab="true"> <file leaf-file-name="PythagorasTree.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/PythagorasTree.java"> <entry file="file://$PROJECT_DIR$/src/PythagorasTree.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.13016845" vertical-offset="357" max-vertical-offset="1496"> <state vertical-scroll-proportion="0.0" vertical-offset="204" max-vertical-offset="1309">
<caret line="26" column="0" selection-start-line="26" selection-start-column="0" selection-end-line="26" selection-end-column="0" /> <caret line="46" column="61" selection-start-line="46" selection-start-column="61" selection-end-line="46" selection-end-column="61" />
<folding> <folding>
<element signature="imports" expanded="true" /> <element signature="imports" expanded="true" />
</folding> </folding>
@ -61,8 +61,8 @@
<file leaf-file-name="TurtleState.java" pinned="false" current-in-tab="false"> <file leaf-file-name="TurtleState.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/TurtleState.java"> <entry file="file://$PROJECT_DIR$/src/TurtleState.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="374"> <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="476">
<caret line="13" column="35" selection-start-line="13" selection-start-column="35" selection-end-line="13" selection-end-column="35" /> <caret line="16" column="27" selection-start-line="16" selection-start-column="27" selection-end-line="16" selection-end-column="27" />
<folding /> <folding />
</state> </state>
</provider> </provider>
@ -80,11 +80,11 @@
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="PythagorasTreeQueue.java" pinned="false" current-in-tab="false"> <file leaf-file-name="PythagorasTreeQueue.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/PythagorasTreeQueue.java"> <entry file="file://$PROJECT_DIR$/src/PythagorasTreeQueue.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="374"> <state vertical-scroll-proportion="0.36447167" vertical-offset="0" max-vertical-offset="653">
<caret line="12" column="12" selection-start-line="12" selection-start-column="12" selection-end-line="12" selection-end-column="12" /> <caret line="14" column="53" selection-start-line="14" selection-start-column="53" selection-end-line="14" selection-end-column="53" />
<folding> <folding>
<element signature="imports" expanded="true" /> <element signature="imports" expanded="true" />
</folding> </folding>
@ -139,9 +139,9 @@
<option value="$PROJECT_DIR$/src/PythagorasTriangleList.java" /> <option value="$PROJECT_DIR$/src/PythagorasTriangleList.java" />
<option value="$PROJECT_DIR$/src/Main.java" /> <option value="$PROJECT_DIR$/src/Main.java" />
<option value="$PROJECT_DIR$/src/DrawingTools.java" /> <option value="$PROJECT_DIR$/src/DrawingTools.java" />
<option value="$PROJECT_DIR$/src/PythagorasTreeQueue.java" />
<option value="$PROJECT_DIR$/src/TurtleState.java" /> <option value="$PROJECT_DIR$/src/TurtleState.java" />
<option value="$PROJECT_DIR$/src/PythagorasTree.java" /> <option value="$PROJECT_DIR$/src/PythagorasTree.java" />
<option value="$PROJECT_DIR$/src/PythagorasTreeQueue.java" />
</list> </list>
</option> </option>
</component> </component>
@ -230,6 +230,9 @@
<property name="recentsLimit" value="5" /> <property name="recentsLimit" value="5" />
<property name="restartRequiresConfirmation" value="true" /> <property name="restartRequiresConfirmation" value="true" />
<property name="dynamic.classpath" value="false" /> <property name="dynamic.classpath" value="false" />
<property name="options.lastSelected" value="project.propVCSSupport.Mappings" />
<property name="options.splitter.main.proportions" value="0.3" />
<property name="options.splitter.details.proportions" value="0.2" />
</component> </component>
<component name="RecentsManager"> <component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS"> <key name="MoveFile.RECENT_KEYS">
@ -512,16 +515,16 @@
<created>1423576956527</created> <created>1423576956527</created>
<option name="number" value="Default" /> <option name="number" value="Default" />
<updated>1423576956527</updated> <updated>1423576956527</updated>
<workItem from="1423576961426" duration="8044000" /> <workItem from="1423576961426" duration="9364000" />
</task> </task>
<servers /> <servers />
</component> </component>
<component name="TimeTrackingManager"> <component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="8044000" /> <option name="totallyTimeSpent" value="9364000" />
</component> </component>
<component name="ToolWindowManager"> <component name="ToolWindowManager">
<frame x="-8" y="-8" width="1456" height="939" extended-state="6" /> <frame x="-8" y="-8" width="1456" height="939" extended-state="6" />
<editor active="true" /> <editor active="false" />
<layout> <layout>
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" /> <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
@ -534,7 +537,7 @@
<window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> <window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.16385542" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" /> <window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.16385542" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> <window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.1875" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" /> <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.1875" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
@ -611,14 +614,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/DrawingTools.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="306">
<caret line="7" column="0" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/PythagorasTriangle.java"> <entry file="file://$PROJECT_DIR$/src/PythagorasTriangle.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="914" max-vertical-offset="1445"> <state vertical-scroll-proportion="0.0" vertical-offset="914" max-vertical-offset="1445">
@ -649,26 +644,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/Main.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="805" max-vertical-offset="3536">
<caret line="59" column="124" selection-start-line="59" selection-start-column="124" selection-end-line="59" selection-end-column="124" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/PythagorasTreeQueue.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="374">
<caret line="12" column="12" selection-start-line="12" selection-start-column="12" selection-end-line="12" selection-end-column="12" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/aplu5.jar!/ch/aplu/turtle/Turtle.class"> <entry file="jar://$PROJECT_DIR$/aplu5.jar!/ch/aplu/turtle/Turtle.class">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-3.7777777" vertical-offset="30226" max-vertical-offset="36686"> <state vertical-scroll-proportion="-3.7777777" vertical-offset="30226" max-vertical-offset="36686">
@ -679,16 +654,44 @@
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/TurtleState.java"> <entry file="file://$PROJECT_DIR$/src/TurtleState.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="374"> <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="476">
<caret line="13" column="35" selection-start-line="13" selection-start-column="35" selection-end-line="13" selection-end-column="35" /> <caret line="16" column="27" selection-start-line="16" selection-start-column="27" selection-end-line="16" selection-end-column="27" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/Main.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="805" max-vertical-offset="3536">
<caret line="59" column="124" selection-start-line="59" selection-start-column="124" selection-end-line="59" selection-end-column="124" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/DrawingTools.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="306">
<caret line="7" column="0" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/PythagorasTree.java"> <entry file="file://$PROJECT_DIR$/src/PythagorasTree.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.13016845" vertical-offset="357" max-vertical-offset="1496"> <state vertical-scroll-proportion="0.0" vertical-offset="204" max-vertical-offset="1309">
<caret line="26" column="0" selection-start-line="26" selection-start-column="0" selection-end-line="26" selection-end-column="0" /> <caret line="46" column="61" selection-start-line="46" selection-start-column="61" selection-end-line="46" selection-end-column="61" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/PythagorasTreeQueue.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.36447167" vertical-offset="0" max-vertical-offset="653">
<caret line="14" column="53" selection-start-line="14" selection-start-column="53" selection-end-line="14" selection-end-column="53" />
<folding> <folding>
<element signature="imports" expanded="true" /> <element signature="imports" expanded="true" />
</folding> </folding>

Binary file not shown.

View file

@ -15,6 +15,7 @@ public class PythagorasTree {
private double size; private double size;
private int momentaryDepth; private int momentaryDepth;
private int maximalDepth; private int maximalDepth;
private TurtleState turtleState;
public PythagorasTree(PythagorasTreeVariant variant, PythagorasTriangleList triangles, Turtle turtle, double size, int momentaryDepth, int maximalDepth) { public PythagorasTree(PythagorasTreeVariant variant, PythagorasTriangleList triangles, Turtle turtle, double size, int momentaryDepth, int maximalDepth) {
this.variant = variant; this.variant = variant;
@ -23,41 +24,29 @@ public class PythagorasTree {
this.size = size; this.size = size;
this.momentaryDepth = momentaryDepth; this.momentaryDepth = momentaryDepth;
this.maximalDepth = maximalDepth; this.maximalDepth = maximalDepth;
this.turtleState = new TurtleState(turtle);
} }
public void addPythagorasTree(PythagorasTreeQueue queue) { public void addSubTrees(PythagorasTreeQueue queue) {
if (momentaryDepth + 1 >= maximalDepth) return;
turtle.forward(size);
turtle.pushState(); turtle.pushState();
turtle.right(triangles.getLeftAngle(momentaryDepth)); turtle.right(triangles.getLeftAngle(momentaryDepth));
PythagorasTree treeOne = queue.remove();
treeOne.drawPythagorasTree(queue);
turtle.popState();
turtle.setPenColor(drawColor(momentaryDepth, maximalDepth));
turtle.left(triangles.getRightAngle(momentaryDepth));
turtle.forward(size * triangles.getRightSizeFactor(momentaryDepth));
PythagorasTree treeTwo = queue.remove();
treeTwo.drawPythagorasTree(queue);
treeOne.addPythagorasTree(queue);
treeTwo.addPythagorasTree(queue);
}
public void drawPythagorasTree(PythagorasTreeQueue queue) {
rightSubTree = new PythagorasTree(variant, triangles, turtle, size * triangles.getRightSizeFactor(momentaryDepth), momentaryDepth + 1, maximalDepth); rightSubTree = new PythagorasTree(variant, triangles, turtle, size * triangles.getRightSizeFactor(momentaryDepth), momentaryDepth + 1, maximalDepth);
queue.add(rightSubTree); queue.add(rightSubTree);
turtle.popState();
turtle.left(triangles.getRightAngle(momentaryDepth));
turtle.forward(size * triangles.getRightSizeFactor(momentaryDepth));
leftSubTree = new PythagorasTree(variant, triangles, turtle, size * triangles.getLeftSizeFactor(momentaryDepth), momentaryDepth + 1, maximalDepth); leftSubTree = new PythagorasTree(variant, triangles, turtle, size * triangles.getLeftSizeFactor(momentaryDepth), momentaryDepth + 1, maximalDepth);
queue.add(leftSubTree); queue.add(leftSubTree);
}
public boolean drawPythagorasTree(PythagorasTreeQueue queue) {
turtle.setPenColor(drawColor(momentaryDepth, maximalDepth));
turtleState.returnToState(turtle);
DrawingTools.drawSquare(turtle, size); DrawingTools.drawSquare(turtle, size);
if (momentaryDepth + 1 >= maximalDepth) return false;
addSubTrees(queue);
return true;
} }
public static Color drawColor(int momentaryDepth, int maximalDepth) { public static Color drawColor(int momentaryDepth, int maximalDepth) {

View file

@ -9,8 +9,10 @@ public class PythagorasTreeQueue extends LinkedList<PythagorasTree> {
public PythagorasTreeQueue(PythagorasTree.PythagorasTreeVariant variant, PythagorasTriangleList triangles, Turtle turtle, double size, int momentaryDepth, int maximalDepth) { public PythagorasTreeQueue(PythagorasTree.PythagorasTreeVariant variant, PythagorasTriangleList triangles, Turtle turtle, double size, int momentaryDepth, int maximalDepth) {
super(); super();
add(new PythagorasTree(variant, triangles, turtle, size, momentaryDepth, maximalDepth)); add(new PythagorasTree(variant, triangles, turtle, size, momentaryDepth, maximalDepth));
PythagorasTree tree = remove(); boolean finished = false;
tree.drawPythagorasTree(this); while (!finished) {
tree.addPythagorasTree(this); PythagorasTree tree = remove();
finished = tree.drawPythagorasTree(this);
}
} }
} }

View file

@ -13,4 +13,10 @@ public class TurtleState {
y = turtle.getY(); y = turtle.getY();
heading = turtle.heading(); heading = turtle.heading();
} }
public void returnToState(Turtle turtle) {
turtle.setX(x);
turtle.setY(y);
turtle.heading(heading);
}
} }