dfd1841e2f
New pythagoras Tree implementation, not fully working yet
79 lines
2.1 KiB
Java
79 lines
2.1 KiB
Java
/**
|
|
* Created by Christian on 10.02.2015.
|
|
*/
|
|
public class PythagorasTriangle {
|
|
private double leftSizeFactor;
|
|
private double leftAngle;
|
|
private double rightSizeFactor;
|
|
private double rightAngle;
|
|
private PythagorasTree.PythagorasTreeVariant variant;
|
|
|
|
public PythagorasTriangle(PythagorasTree.PythagorasTreeVariant variant, int momentaryDepth, Numbers numbers, Double angle) {
|
|
|
|
switch (variant) {
|
|
|
|
|
|
case SymetricPythagorasTree:
|
|
leftAngle = 45;
|
|
break;
|
|
|
|
|
|
case AsymetricPythagorasTree:
|
|
if (angle < 0 || angle > 90) return;
|
|
leftAngle = angle;
|
|
break;
|
|
|
|
|
|
case RegularRandomPythagorasTree:
|
|
leftAngle = numbers.getRegularRandom(momentaryDepth) * 50 + 20;
|
|
break;
|
|
|
|
|
|
case PisanoPythagorasTreeOne:
|
|
leftAngle = (numbers.calcFibonacci(momentaryDepth) % 4) * 10 + 30;
|
|
break;
|
|
|
|
|
|
case PisanoPythagorasTreeTwo:
|
|
leftAngle = (numbers.calcFibonacci(momentaryDepth) % 2) * 30 + 30;
|
|
break;
|
|
|
|
|
|
case PisanoPythagorasTreeThree:
|
|
leftAngle = (numbers.calcFibonacci(momentaryDepth) % 7) * 5 + 30;
|
|
break;
|
|
|
|
|
|
case PisanoPythagorasTreeFour:
|
|
leftAngle = (numbers.calcFibonacci(momentaryDepth) % 31) + 30;
|
|
break;
|
|
|
|
|
|
case PisanoPythagorasTreeFive:
|
|
leftAngle = (numbers.calcFibonacci(momentaryDepth) % 9) * 4 + 29;
|
|
break;
|
|
|
|
default:
|
|
leftAngle = 45;
|
|
break;
|
|
}
|
|
rightAngle = (double) 90 - leftAngle;
|
|
leftSizeFactor = Math.sin(Math.toRadians(leftAngle));
|
|
rightSizeFactor = Math.sin(Math.toRadians(rightAngle));
|
|
}
|
|
public double getLeftSizeFactor() {
|
|
return leftSizeFactor;
|
|
}
|
|
|
|
public double getLeftAngle() {
|
|
return leftAngle;
|
|
}
|
|
|
|
public double getRightSizeFactor() {
|
|
return rightSizeFactor;
|
|
}
|
|
|
|
public double getRightAngle() {
|
|
return rightAngle;
|
|
}
|
|
}
|