Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package mountain;
- import fractal.*;
- public class Mountain extends Fractal{
- private Point p1;
- private Point p2;
- private Point p3;
- private double dev;
- public Mountain(Point p1, Point p2, Point p3, double dev){
- super();
- this.p1 = p1;
- this.p2 = p2;
- this.p3 = p3;
- this.dev = dev;
- }
- @Override
- public String getTitle() {
- return "Mountain Fractals";
- }
- @Override
- public void draw(TurtleGraphics turtle) {
- turtle.moveTo(p1.getX(), p1.getY());
- fractalLine(turtle, order, p1, p2, p3);
- }
- private void fractalLine(TurtleGraphics turtle, int order, Point p1, Point p2, Point p3) {
- if(order == 0) {
- drawMinTriangle(turtle, p1, p2, p3);
- }
- else {
- //dev = dev/2;
- Point mP1 = mid(p1, p2, dev);
- Point mP2 = mid(p2, p3, dev);
- Point mP3 = mid(p3, p1, dev);
- fractalLine(turtle, order-1, p1, mP1, mP3);
- fractalLine(turtle, order-1, p2, mP1, mP2);
- fractalLine(turtle, order-1, p3, mP2, mP3);
- fractalLine(turtle, order-1, mP1, mP2, mP3);
- }
- }
- /* Gives the point in the "deviated" middle of two points */
- private Point mid(Point x1, Point x2, double deviation) {
- double rand = RandomUtilities.randFunc(deviation);
- Point midPoint = new Point((x1.getX()+x2.getX())/2.0, (x1.getY()+x2.getY())/ 2.0 + rand/2);
- return midPoint;
- }
- private void drawMinTriangle(TurtleGraphics turtle, Point x1, Point x2, Point x3) {
- turtle.moveTo(x1.getX(), x1.getY());
- turtle.forwardTo(x2.getX(), x2.getY());
- turtle.forwardTo(x3.getX(), x3.getY());
- turtle.forwardTo(x1.getX(), x1.getY());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement