LineIterator class
Пакет: com.hypixel.hytale.math.iterator
Файл: com/hypixel/hytale/math/iterator/LineIterator.java
implements: Iterator<Vector3i>
Поля (7)
| Модификаторы | Тип | Имя |
|---|---|---|
|
Vector3i |
var1 |
|
Vector3i |
var2 |
|
Vector3i |
var3 |
|
int |
var7 |
|
int |
var8 |
|
int |
var9 |
final |
int |
x_inc |
Методы (17)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
NoSuchElementExceptionthrow new NoSuchElementException() |
abstract |
return new |
Vector3ireturn new Vector3i(this.pointX, this.pointY, this.pointZ) |
|
|
if if(this.l >= this.m && this.l >= this.n) |
|
|
if if(this.l >= this.m && this.l >= this.n) |
|
|
if if(this.l >= this.m && this.l >= this.n) |
|
|
if if(this.i == this.l) |
|
|
if if(this.i > this.l) |
|
|
if if(this.err1 > 0) |
|
|
if if(this.err2 > 0) |
|
|
if if(this.i == this.m) |
|
|
if if(this.i > this.m) |
|
|
if if(this.err1 > 0) |
|
|
if if(this.err2 > 0) |
|
|
if if(this.i == this.n) |
|
|
if if(this.i > this.n) |
|
|
if if(this.err1 > 0) |
|
|
if if(this.err2 > 0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.math.iterator;
class="kw">import java.util.Iterator;
class="kw">import java.util.NoSuchElementException;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;
class="kw">public class LineIterator class="kw">implements Iterator<Vector3i> {
class="kw">private class="kw">final int x_inc;
class="kw">private class="kw">final int y_inc;
class="kw">private class="kw">final int z_inc;
class="kw">private class="kw">final int l;
class="kw">private class="kw">final int m;
class="kw">private class="kw">final int n;
class="kw">private class="kw">final int dx2;
class="kw">private class="kw">final int dy2;
class="kw">private class="kw">final int dz2;
class="kw">private int i;
class="kw">private int err1;
class="kw">private int err2;
class="kw">private int pointX;
class="kw">private int pointY;
class="kw">private int pointZ;
class="kw">public LineIterator(int var1, int var2, int var3, int var4, int var5, int var6) {
this.pointX = var1;
this.pointY = var2;
this.pointZ = var3;
int var7 = var4 - var1;
int var8 = var5 - var2;
int var9 = var6 - var3;
this.x_inc = var7 < 0 ? -1 : 1;
this.y_inc = var8 < 0 ? -1 : 1;
this.z_inc = var9 < 0 ? -1 : 1;
this.l = Math.abs(var7);
this.m = Math.abs(var8);
this.n = Math.abs(var9);
this.dx2 = this.l << 1;
this.dy2 = this.m << 1;
this.dz2 = this.n << 1;
if (this.l >= this.m && this.l >= this.n) {
this.err1 = this.dy2 - this.l;
this.err2 = this.dz2 - this.l;
} else if (this.m >= this.l && this.m >= this.n) {
this.err1 = this.dx2 - this.m;
this.err2 = this.dz2 - this.m;
} else {
this.err1 = this.dx2 - this.n;
this.err2 = this.dy2 - this.n;
}
}
@Override
class="kw">public boolean hasNext() {
if (this.l >= this.m && this.l >= this.n) {
class="kw">return this.i <= this.l;
} else {
class="kw">return this.m >= this.l && this.m >= this.n ? this.i <= this.m : this.i <= this.n;
}
}
@Nonnull
class="kw">public Vector3i next() {
if (this.l >= this.m && this.l >= this.n) {
if (this.i == this.l) {
this.i++;
class="kw">return new Vector3i(this.pointX, this.pointY, this.pointZ);
}
if (this.i > this.l) {
throw new NoSuchElementException();
}
Vector3i var3 = new Vector3i(this.pointX, this.pointY, this.pointZ);
this.pointX = this.pointX + this.x_inc;
if (this.err1 > 0) {
this.pointY = this.pointY + this.y_inc;
this.err1 = this.err1 - this.dx2;
}
this.err1 = this.err1 + this.dy2;
if (this.err2 > 0) {
this.pointZ = this.pointZ + this.z_inc;
this.err2 = this.err2 - this.dx2;
}
this.err2 = this.err2 + this.dz2;
this.i++;
class="kw">return var3;
} else if (this.m >= this.l && this.m >= this.n) {
if (this.i == this.m) {
this.i++;
class="kw">return new Vector3i(this.pointX, this.pointY, this.pointZ);
}
if (this.i > this.m) {
throw new NoSuchElementException();
}
Vector3i var2 = new Vector3i(this.pointX, this.pointY, this.pointZ);
if (this.err1 > 0) {
this.pointX = this.pointX + this.x_inc;
this.err1 = this.err1 - this.dy2;
}
this.err1 = this.err1 + this.dx2;
this.pointY = this.pointY + this.y_inc;
if (this.err2 > 0) {
this.pointZ = this.pointZ + this.z_inc;
this.err2 = this.err2 - this.dy2;
}
this.err2 = this.err2 + this.dz2;
this.i++;
class="kw">return var2;
} else {
if (this.i == this.n) {
this.i++;
class="kw">return new Vector3i(this.pointX, this.pointY, this.pointZ);
}
if (this.i > this.n) {
throw new NoSuchElementException();
}
Vector3i var1 = new Vector3i(this.pointX, this.pointY, this.pointZ);
if (this.err1 > 0) {
this.pointX = this.pointX + this.x_inc;
this.err1 = this.err1 - this.dz2;
}
this.err1 = this.err1 + this.dx2;
if (this.err2 > 0) {
this.pointY = this.pointY + this.y_inc;
this.err2 = this.err2 - this.dz2;
}
this.err2 = this.err2 + this.dy2;
this.pointZ = this.pointZ + this.z_inc;
this.i++;
class="kw">return var1;
}
}
}