dfad27a51c
The first Implementation of the "KilianEhrmanPythagorasTree". this tree is just a crap... look at the code for calculating the angles yourself. looks nice though
104 lines
2.9 KiB
Java
104 lines
2.9 KiB
Java
/**
|
|
* Class PythagorasTriangle
|
|
* @author Jan Christian Grünhage
|
|
*/
|
|
public class PythagorasTriangle {
|
|
private double leftSizeFactor;
|
|
private double leftAngle;
|
|
private double rightSizeFactor;
|
|
private double rightAngle;
|
|
|
|
public PythagorasTriangle(PythagorasTree.PythagorasTreeVariant variant, int momentaryDepth, Fibonacci fibonacci, Double angle) {
|
|
|
|
switch (variant) {
|
|
|
|
|
|
case SymetricPythagorasTree:
|
|
leftAngle = 45;
|
|
break;
|
|
|
|
|
|
case AsymetricPythagorasTree:
|
|
if (angle < 0 || angle > 90) return;
|
|
leftAngle = angle;
|
|
break;
|
|
|
|
|
|
case RegularRandomPythagorasTree:
|
|
leftAngle = Math.random() * 50 + 20;
|
|
break;
|
|
|
|
|
|
case PisanoPythagorasTreeOne:
|
|
leftAngle = (fibonacci.calcFibonacci(momentaryDepth) % 4) * 10 + 30;
|
|
break;
|
|
|
|
|
|
case PisanoPythagorasTreeTwo:
|
|
leftAngle = (fibonacci.calcFibonacci(momentaryDepth) % 2) * 30 + 30;
|
|
break;
|
|
|
|
|
|
case PisanoPythagorasTreeThree:
|
|
leftAngle = (fibonacci.calcFibonacci(momentaryDepth) % 7) * 5 + 30;
|
|
break;
|
|
|
|
|
|
case PisanoPythagorasTreeFour:
|
|
leftAngle = (fibonacci.calcFibonacci(momentaryDepth) % 31) + 30;
|
|
break;
|
|
|
|
|
|
case PisanoPythagorasTreeFive:
|
|
leftAngle = (fibonacci.calcFibonacci(momentaryDepth) % 9) * 4 + 29;
|
|
break;
|
|
|
|
case KilianEhrmannPythagorasTree:
|
|
leftAngle = kilianEhrmannAngle(momentaryDepth);
|
|
break;
|
|
default:
|
|
leftAngle = 45;
|
|
break;
|
|
}
|
|
rightAngle = (double) 90 - leftAngle;
|
|
leftSizeFactor = Math.sin(Math.toRadians(leftAngle));
|
|
rightSizeFactor = Math.sin(Math.toRadians(rightAngle));
|
|
}
|
|
|
|
private double kilianEhrmannAngle(int index) {
|
|
if (index == 0) return 30;
|
|
double result_1;
|
|
double result_2;
|
|
result_1 = 100000000*Math.pow(index,(1/13));
|
|
result_2 = 70000%index;
|
|
result_2 = Math.cos(Math.tan(result_2));
|
|
result_2 = index - Math.pow(result_2, 3);
|
|
result_2 *= index + (1 / ( Math.pow(index, (1/17.3))));
|
|
result_2 = Math.pow(result_2, (1/index));
|
|
if (result_2 != 0) {
|
|
result_1 /= result_2;
|
|
result_1 = result_1 % index;
|
|
}
|
|
result_1 = result_1 % 30;
|
|
result_1 += 30;
|
|
System.out.println("Calculationdepth: " + index);
|
|
return result_1;
|
|
}
|
|
|
|
public double getLeftSizeFactor() {
|
|
return leftSizeFactor;
|
|
}
|
|
|
|
public double getLeftAngle() {
|
|
return leftAngle;
|
|
}
|
|
|
|
public double getRightSizeFactor() {
|
|
return rightSizeFactor;
|
|
}
|
|
|
|
public double getRightAngle() {
|
|
return rightAngle;
|
|
}
|
|
}
|