diff --git a/pom.xml b/pom.xml
index cea53df..7ac9953 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- com.funnyboyroks
+ com.github.funnyboy-roks
DrawLib
1.1.0-SNAPSHOT
jar
@@ -54,8 +54,8 @@
- funnyboy_roks
- https://maven.funnyboyroks.com/snapshots
+ jitpack.io
+ https://jitpack.io
diff --git a/src/main/java/com/funnyboyroks/drawlib/renderer/ShapeRenderer.java b/src/main/java/com/funnyboyroks/drawlib/renderer/ShapeRenderer.java
index 87a7384..a523fc7 100644
--- a/src/main/java/com/funnyboyroks/drawlib/renderer/ShapeRenderer.java
+++ b/src/main/java/com/funnyboyroks/drawlib/renderer/ShapeRenderer.java
@@ -136,12 +136,14 @@ public void drawLine(@NotNull Location a, @NotNull Location b) {
final double lengthOfStartOptimize = lengthOfTerm * 2 + lengthOfMinMiddle;
// |<--------------------------------- length ------------------------------------>|
// | term | middle | term |
- // ********** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **********
+ // ************ * * * * * * * * * * * * * * * * * * * * ************
if (this.optimize && length >= lengthOfStartOptimize) {
final double ppb = 1.0 / step_size; // points per block
final int term = (int)(lengthOfTerm * ppb); // number of terminal points
final int middle = (int)(lengthOfMinMiddle * ppb); // number of middle points
final int max = term * 2 + middle; // max points on line
+ final double lengthOfMiddle = length - lengthOfTerm * 2;
+ final double gamma = 2.2;
for (int i = 0; i <= max; i++) {
double mag; // 0.0 ~ 1.0
if (i >= term + middle) {
@@ -149,7 +151,13 @@ public void drawLine(@NotNull Location a, @NotNull Location b) {
} else if (i < term) {
mag = ((double) i / term) * lengthOfTerm / length;
} else {
- mag = (lengthOfTerm + ((double)(i - term) / middle) * (length - lengthOfTerm * 2)) / length;
+ double percent = (double)(i - term) / middle; // 0.0 ~ 1.0
+ if (percent < 0.5) {
+ percent = Math.pow(percent * 2, gamma) / 2;
+ } else {
+ percent = 1.0 - Math.pow((1.0 - percent) * 2, gamma) / 2;
+ }
+ mag = (lengthOfTerm + percent * lengthOfMiddle) / length;
}
Location l = vec.clone().mult(mag).toLocation(a.getWorld());
l.add(a);