本文整理了Java中org.bukkit.util.Vector.dot()
方法的一些代码示例,展示了Vector.dot()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Vector.dot()
方法的具体详情如下:
包路径:org.bukkit.util.Vector
类名称:Vector
方法名:dot
[英]Calculates the dot product of this vector with another. The dot product is defined as x1x2+y1y2+z1z2. The returned value is a scalar.
[中]计算这个向量与另一个向量的点积。点积定义为x1x2+y1y2+z1z2。返回的值是标量。
代码示例来源:origin: Bukkit/Bukkit
/**
* Gets the angle between this vector and another in radians.
*
* @param other The other vector
* @return angle in radians
*/
public float angle(Vector other) {
double dot = dot(other) / (length() * other.length());
return (float) Math.acos(dot);
}
代码示例来源:origin: SpigotMC/Spigot-API
/**
* Gets the angle between this vector and another in radians.
*
* @param other The other vector
* @return angle in radians
*/
public float angle(Vector other) {
double dot = dot(other) / (length() * other.length());
return (float) Math.acos(dot);
}
代码示例来源:origin: com.github.shynixn.ball/ball-bukkit-core
private void applyKnockBack(Vector starter, Vector n, org.bukkit.block.Block block, BlockFace blockFace) {
if (block == null || block.getType() == org.bukkit.Material.AIR) {
return;
}
if (this.knockBackBumper <= 0) {
final Optional<BounceObject> optBounce = this.ball.getMeta().getBounceObjectController().getBounceObjectFromBlock(block);
if (optBounce.isPresent() || this.ball.getMeta().isAlwaysBounceBack()) {
Vector r = starter.clone().subtract(n.multiply(2 * starter.dot(n))).multiply(0.75);
if (optBounce.isPresent()) {
r = r.multiply(optBounce.get().getBounceModifier());
} else {
r = r.multiply(this.ball.getMeta().getModifiers().getBounceModifier());
}
final BallWallCollideEvent event = new BallWallCollideEvent(this.ball, block, blockFace, r.clone(), starter.clone());
Bukkit.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
this.setVelocity(r);
((CustomDesign) this.ball).revertAnimation = !((CustomDesign) this.ball).revertAnimation;
this.knockBackBumper = 5;
}
}
}
}
代码示例来源:origin: com.github.shynixn.ball/ball-bukkit-core
private void applyKnockBack(Vector starter, Vector n, org.bukkit.block.Block block, BlockFace blockFace) {
if (block == null || block.getType() == org.bukkit.Material.AIR) {
return;
}
if (this.knockBackBumper <= 0) {
final Optional<BounceObject> optBounce = this.ball.getMeta().getBounceObjectController().getBounceObjectFromBlock(block);
if (optBounce.isPresent() || this.ball.getMeta().isAlwaysBounceBack()) {
Vector r = starter.clone().subtract(n.multiply(2 * starter.dot(n))).multiply(0.75);
if (optBounce.isPresent()) {
r = r.multiply(optBounce.get().getBounceModifier());
} else {
r = r.multiply(this.ball.getMeta().getModifiers().getBounceModifier());
}
final BallWallCollideEvent event = new BallWallCollideEvent(this.ball, block, blockFace, r.clone(), starter.clone());
Bukkit.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
this.setVelocity(r);
((CustomDesign) this.ball).revertAnimation = !((CustomDesign) this.ball).revertAnimation;
this.knockBackBumper = 5;
}
}
}
}
代码示例来源:origin: com.github.shynixn.ball/ball-bukkit-core
private void applyKnockBack(Vector starter, Vector n, org.bukkit.block.Block block, BlockFace blockFace) {
if (block == null || block.getType() == org.bukkit.Material.AIR) {
return;
}
if (this.knockBackBumper <= 0) {
final Optional<BounceObject> optBounce = this.ball.getMeta().getBounceObjectController().getBounceObjectFromBlock(block);
if (optBounce.isPresent() || this.ball.getMeta().isAlwaysBounceBack()) {
Vector r = starter.clone().subtract(n.multiply(2 * starter.dot(n))).multiply(0.75);
if (optBounce.isPresent()) {
r = r.multiply(optBounce.get().getBounceModifier());
}
else {
r = r.multiply(this.ball.getMeta().getModifiers().getBounceModifier());
}
final BallWallCollideEvent event = new BallWallCollideEvent(this.ball, block, blockFace, r.clone(), starter.clone());
Bukkit.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
this.setVelocity(r);
((CustomDesign) this.ball).revertAnimation = !((CustomDesign) this.ball).revertAnimation;
this.knockBackBumper = 5;
}
}
}
}
代码示例来源:origin: ProjectKorra/ProjectKorra
final double comp = velocity.dot(push.clone().normalize());
if (comp > factor) {
velocity.multiply(.5);
velocity.add(push.clone().normalize().multiply(velocity.clone().dot(push.clone().normalize())));
} else if (comp + factor * .5 > factor) {
velocity.add(push.clone().multiply(factor - comp));
代码示例来源:origin: com.github.shynixn.ball/ball-bukkit-core
private void applyKnockBack(Vector starter, Vector n, org.bukkit.block.Block block, BlockFace blockFace) {
if (block == null || block.getType() == org.bukkit.Material.AIR) {
return;
}
if (this.knockBackBumper <= 0) {
final Optional<BounceObject> optBounce = this.ball.getMeta().getBounceObjectController().getBounceObjectFromBlock(block);
if (optBounce.isPresent() || this.ball.getMeta().isAlwaysBounceBack()) {
Vector r = starter.clone().subtract(n.multiply(2 * starter.dot(n))).multiply(0.75);
if (optBounce.isPresent()) {
r = r.multiply(optBounce.get().getBounceModifier());
}
else {
r = r.multiply(this.ball.getMeta().getModifiers().getBounceModifier());
}
final BallWallCollideEvent event = new BallWallCollideEvent(this.ball, block, blockFace, r.clone(), starter.clone());
Bukkit.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
this.setVelocity(r);
((CustomDesign) this.ball).revertAnimation = !((CustomDesign) this.ball).revertAnimation;
this.knockBackBumper = 5;
}
}
}
}
代码示例来源:origin: com.github.shynixn.ball/ball-bukkit-core
private void applyKnockBack(Vector starter, Vector n, org.bukkit.block.Block block, BlockFace blockFace) {
if (block == null || block.getType() == org.bukkit.Material.AIR) {
return;
}
if (this.knockBackBumper <= 0) {
final Optional<BounceObject> optBounce = this.ball.getMeta().getBounceObjectController().getBounceObjectFromBlock(block);
if (optBounce.isPresent() || this.ball.getMeta().isAlwaysBounceBack()) {
Vector r = starter.clone().subtract(n.multiply(2 * starter.dot(n))).multiply(0.75);
if (optBounce.isPresent()) {
r = r.multiply(optBounce.get().getBounceModifier());
} else {
r = r.multiply(this.ball.getMeta().getModifiers().getBounceModifier());
}
final BallWallCollideEvent event = new BallWallCollideEvent(this.ball, block, blockFace, r.clone(), starter.clone());
Bukkit.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
this.setVelocity(r);
((CustomDesign) this.ball).revertAnimation = !((CustomDesign) this.ball).revertAnimation;
this.knockBackBumper = 5;
}
}
}
}
代码示例来源:origin: com.github.shynixn.ball/ball-bukkit-core
private void applyKnockBack(Vector starter, Vector n, org.bukkit.block.Block block, BlockFace blockFace) {
if (block == null || block.getType() == org.bukkit.Material.AIR) {
return;
}
if (this.knockBackBumper <= 0) {
final Optional<BounceObject> optBounce = this.ball.getMeta().getBounceObjectController().getBounceObjectFromBlock(block);
if (optBounce.isPresent() || this.ball.getMeta().isAlwaysBounceBack()) {
Vector r = starter.clone().subtract(n.multiply(2 * starter.dot(n))).multiply(0.75);
if (optBounce.isPresent()) {
r = r.multiply(optBounce.get().getBounceModifier());
}
else {
r = r.multiply(this.ball.getMeta().getModifiers().getBounceModifier());
}
final BallWallCollideEvent event = new BallWallCollideEvent(this.ball, block, blockFace, r.clone(), starter.clone());
Bukkit.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
this.setVelocity(r);
((CustomDesign) this.ball).revertAnimation = !((CustomDesign) this.ball).revertAnimation;
this.knockBackBumper = 5;
}
}
}
}
代码示例来源:origin: com.github.shynixn.ball/ball-bukkit-core
private void applyKnockBack(Vector starter, Vector n, org.bukkit.block.Block block, BlockFace blockFace) {
if (block == null || block.getType() == org.bukkit.Material.AIR) {
return;
}
if (this.knockBackBumper <= 0) {
final Optional<BounceObject> optBounce = this.ball.getMeta().getBounceObjectController().getBounceObjectFromBlock(block);
if (optBounce.isPresent() || this.ball.getMeta().isAlwaysBounceBack()) {
Vector r = starter.clone().subtract(n.multiply(2 * starter.dot(n))).multiply(0.75);
if (optBounce.isPresent()) {
r = r.multiply(optBounce.get().getBounceModifier());
}
else {
r = r.multiply(this.ball.getMeta().getModifiers().getBounceModifier());
}
final BallWallCollideEvent event = new BallWallCollideEvent(this.ball, block, blockFace, r.clone(), starter.clone());
Bukkit.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
this.setVelocity(r);
((CustomDesign) this.ball).revertAnimation = !((CustomDesign) this.ball).revertAnimation;
this.knockBackBumper = 5;
}
}
}
}
代码示例来源:origin: com.github.shynixn.ball/ball-bukkit-core
private void applyKnockBack(Vector starter, Vector n, org.bukkit.block.Block block, BlockFace blockFace) {
if (block == null || block.getType() == org.bukkit.Material.AIR) {
return;
}
if (this.knockBackBumper <= 0) {
final Optional<BounceObject> optBounce = this.ball.getMeta().getBounceObjectController().getBounceObjectFromBlock(block);
if (optBounce.isPresent() || this.ball.getMeta().isAlwaysBounceBack()) {
Vector r = starter.clone().subtract(n.multiply(2 * starter.dot(n))).multiply(0.75);
if (optBounce.isPresent()) {
r = r.multiply(optBounce.get().getBounceModifier());
}
else {
r = r.multiply(this.ball.getMeta().getModifiers().getBounceModifier());
}
final BallWallCollideEvent event = new BallWallCollideEvent(this.ball, block, blockFace, r.clone(), starter.clone());
Bukkit.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
this.setVelocity(r);
((CustomDesign) this.ball).revertAnimation = !((CustomDesign) this.ball).revertAnimation;
this.knockBackBumper = 5;
}
}
}
}
代码示例来源:origin: com.github.shynixn.ball/ball-bukkit-core
private void applyKnockBack(Vector starter, Vector n, org.bukkit.block.Block block, BlockFace blockFace) {
if (block == null || block.getType() == org.bukkit.Material.AIR) {
return;
}
if (this.knockBackBumper <= 0) {
final Optional<BounceObject> optBounce = this.ball.getMeta().getBounceObjectController().getBounceObjectFromBlock(block);
if (optBounce.isPresent() || this.ball.getMeta().isAlwaysBounceBack()) {
Vector r = starter.clone().subtract(n.multiply(2 * starter.dot(n))).multiply(0.75);
if (optBounce.isPresent()) {
r = r.multiply(optBounce.get().getBounceModifier());
}
else {
r = r.multiply(this.ball.getMeta().getModifiers().getBounceModifier());
}
final BallWallCollideEvent event = new BallWallCollideEvent(this.ball, block, blockFace, r.clone(), starter.clone());
Bukkit.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
this.setVelocity(r);
((CustomDesign) this.ball).revertAnimation = !((CustomDesign) this.ball).revertAnimation;
this.knockBackBumper = 5;
}
}
}
}
代码示例来源:origin: elBukkit/MagicPlugin
protected void reflect(Vector normal, double offset) {
trackEntity = reflectTrackEntity;
reorient = reflectReorient;
if (reflectResetDistanceTraveled) distanceTravelled = 0;
if (reflectTrackCursorRange >= 0) trackCursorRange = reflectTrackCursorRange;
if (reflectTargetCaster) actionContext.setTargetsCaster(true);
// Calculate angle of reflection
if (normal != null) {
velocity.multiply(-1);
velocity = velocity.subtract(normal.multiply(2 * velocity.dot(normal))).normalize();
velocity.multiply(-1);
actionContext.getMage().sendDebugMessage(ChatColor.AQUA + "Projectile reflected: " + ChatColor.LIGHT_PURPLE
+ " with normal vector of " + TextUtils.printVector(normal), 4);
} else {
actionContext.getMage().sendDebugMessage(ChatColor.AQUA + "Projectile reflected");
}
// Offset position slightly to avoid hitting again
actionContext.setTargetLocation(actionContext.getTargetLocation().add(velocity.clone().multiply(offset)));
// actionContext.setTargetLocation(targetLocation.add(normal.normalize().multiply(2)));
actionContext.playEffects("reflect");
reflectCount++;
}
代码示例来源:origin: ProjectKorra/ProjectKorra
final double comp = velocity.dot(push.clone().normalize());
if (comp > factor) {
velocity.multiply(.5);
velocity.add(push.clone().normalize().multiply(velocity.clone().dot(push.clone().normalize())));
} else if (comp + factor * .5 > factor) {
velocity.add(push.clone().multiply(factor - comp));
代码示例来源:origin: ProjectKorra/ProjectKorra
public static BlockFace getCardinalDirection(final Vector vector) {
final BlockFace[] faces = { BlockFace.NORTH, BlockFace.NORTH_EAST, BlockFace.EAST, BlockFace.SOUTH_EAST, BlockFace.SOUTH, BlockFace.SOUTH_WEST, BlockFace.WEST, BlockFace.NORTH_WEST };
Vector n, ne, e, se, s, sw, w, nw;
w = new Vector(-1, 0, 0);
n = new Vector(0, 0, -1);
s = n.clone().multiply(-1);
e = w.clone().multiply(-1);
ne = n.clone().add(e.clone()).normalize();
se = s.clone().add(e.clone()).normalize();
nw = n.clone().add(w.clone()).normalize();
sw = s.clone().add(w.clone()).normalize();
final Vector[] vectors = { n, ne, e, se, s, sw, w, nw };
double comp = 0;
int besti = 0;
for (int i = 0; i < vectors.length; i++) {
final double dot = vector.dot(vectors[i]);
if (dot > comp) {
comp = dot;
besti = i;
}
}
return faces[besti];
}
代码示例来源:origin: ProjectKorra/ProjectKorra
boolean down = false;
final Vector norm = direction.clone().normalize();
if (norm.dot(new Vector(0, 1, 0)) == 1) {
up = true;
} else if (norm.dot(new Vector(0, -1, 0)) == 1) {
down = true;
内容来源于网络,如有侵权,请联系作者删除!